/****************************************************************************
 ****************************************************************************
 ***
 ***   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
