/****************************************************************************
 ****************************************************************************
 ***
 ***   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 _UAPI__LINUX_LLC_H
#define _UAPI__LINUX_LLC_H
#include <linux/socket.h>
#define __LLC_SOCK_SIZE__ 16
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct sockaddr_llc {
 __kernel_sa_family_t sllc_family;
 __kernel_sa_family_t sllc_arphrd;
 unsigned char sllc_test;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 unsigned char sllc_xid;
 unsigned char sllc_ua;
 unsigned char sllc_sap;
 unsigned char sllc_mac[IFHWADDRLEN];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 unsigned char __pad[__LLC_SOCK_SIZE__ -
 sizeof(__kernel_sa_family_t) * 2 -
 sizeof(unsigned char) * 4 - IFHWADDRLEN];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum llc_sockopts {
 LLC_OPT_UNKNOWN = 0,
 LLC_OPT_RETRY,
 LLC_OPT_SIZE,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 LLC_OPT_ACK_TMR_EXP,
 LLC_OPT_P_TMR_EXP,
 LLC_OPT_REJ_TMR_EXP,
 LLC_OPT_BUSY_TMR_EXP,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 LLC_OPT_TX_WIN,
 LLC_OPT_RX_WIN,
 LLC_OPT_PKTINFO,
 LLC_OPT_MAX
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define LLC_OPT_MAX_RETRY 100
#define LLC_OPT_MAX_SIZE 4196
#define LLC_OPT_MAX_WIN 127
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_OPT_MAX_ACK_TMR_EXP 60
#define LLC_OPT_MAX_P_TMR_EXP 60
#define LLC_OPT_MAX_REJ_TMR_EXP 60
#define LLC_OPT_MAX_BUSY_TMR_EXP 60
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_SAP_NULL 0x00
#define LLC_SAP_LLC 0x02
#define LLC_SAP_SNA 0x04
#define LLC_SAP_PNM 0x0E
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_SAP_IP 0x06
#define LLC_SAP_BSPAN 0x42
#define LLC_SAP_MMS 0x4E
#define LLC_SAP_8208 0x7E
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_SAP_3COM 0x80
#define LLC_SAP_PRO 0x8E
#define LLC_SAP_SNAP 0xAA
#define LLC_SAP_BANYAN 0xBC
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_SAP_IPX 0xE0
#define LLC_SAP_NETBEUI 0xF0
#define LLC_SAP_LANMGR 0xF4
#define LLC_SAP_IMPL 0xF8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_SAP_DISC 0xFC
#define LLC_SAP_OSI 0xFE
#define LLC_SAP_LAR 0xDC
#define LLC_SAP_RM 0xD4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define LLC_SAP_GLOBAL 0xFF
struct llc_pktinfo {
 int lpi_ifindex;
 unsigned char lpi_sap;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 unsigned char lpi_mac[IFHWADDRLEN];
};
#endif
