/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _LINUX_ATMSAP_H
#define _LINUX_ATMSAP_H
#include <linux/atmapi.h>
#define ATM_L2_NONE 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_L2_ISO1745 0x01
#define ATM_L2_Q291 0x02
#define ATM_L2_X25_LL 0x06
#define ATM_L2_X25_ML 0x07
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_L2_LAPB 0x08
#define ATM_L2_HDLC_ARM 0x09
#define ATM_L2_HDLC_NRM 0x0a
#define ATM_L2_HDLC_ABM 0x0b
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_L2_ISO8802 0x0c
#define ATM_L2_X75 0x0d
#define ATM_L2_Q922 0x0e
#define ATM_L2_USER 0x10
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_L2_ISO7776 0x11
#define ATM_L3_NONE 0
#define ATM_L3_X25 0x06
#define ATM_L3_ISO8208 0x07
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_L3_X223 0x08
#define ATM_L3_ISO8473 0x09
#define ATM_L3_T70 0x0a
#define ATM_L3_TR9577 0x0b
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_L3_H310 0x0c
#define ATM_L3_H321 0x0d
#define ATM_L3_USER 0x10
#define ATM_HL_NONE 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_HL_ISO 0x01
#define ATM_HL_USER 0x02
#define ATM_HL_HLP 0x03
#define ATM_HL_VENDOR 0x04
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_IMD_NONE 0
#define ATM_IMD_NORMAL 1
#define ATM_IMD_EXTENDED 2
#define ATM_TT_NONE 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_TT_RX 1
#define ATM_TT_TX 2
#define ATM_TT_RXTX 3
#define ATM_MC_NONE 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_MC_TS 1
#define ATM_MC_TS_FEC 2
#define ATM_MC_PS 3
#define ATM_MC_PS_FEC 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ATM_MC_H221 5
#define ATM_MAX_HLI 8
struct atm_blli {
  unsigned char l2_proto;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
    struct {
      unsigned char mode;
      unsigned char window;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    } itu;
    unsigned char user;
  } l2;
  unsigned char l3_proto;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
    struct {
      unsigned char mode;
      unsigned char def_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
      unsigned char window;
    } itu;
    unsigned char user;
    struct {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
      unsigned char term_type;
      unsigned char fw_mpx_cap;
      unsigned char bw_mpx_cap;
    } h310;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    struct {
      unsigned char ipi;
      unsigned char snap[5];
    } tr9577;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } l3;
} __ATM_API_ALIGN;
struct atm_bhli {
  unsigned char hl_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char hl_length;
  unsigned char hl_info[ATM_MAX_HLI];
};
#define ATM_MAX_BLLI 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct atm_sap {
  struct atm_bhli bhli;
  struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif
