/****************************************************************************
 ****************************************************************************
 ***
 ***   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 _UAPILINUX_SONET_H
#define _UAPILINUX_SONET_H
#define __SONET_ITEMS   __HANDLE_ITEM(section_bip);     __HANDLE_ITEM(line_bip);     __HANDLE_ITEM(path_bip);     __HANDLE_ITEM(line_febe);     __HANDLE_ITEM(path_febe);     __HANDLE_ITEM(corr_hcs);     __HANDLE_ITEM(uncorr_hcs);     __HANDLE_ITEM(tx_cells);     __HANDLE_ITEM(rx_cells);
struct sonet_stats {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define __HANDLE_ITEM(i) int i
 __SONET_ITEMS
#undef __HANDLE_ITEM
} __attribute__ ((packed));
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SONET_GETSTAT _IOR('a',ATMIOC_PHYTYP,struct sonet_stats)
#define SONET_GETSTATZ _IOR('a',ATMIOC_PHYTYP+1,struct sonet_stats)
#define SONET_SETDIAG _IOWR('a',ATMIOC_PHYTYP+2,int)
#define SONET_CLRDIAG _IOWR('a',ATMIOC_PHYTYP+3,int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SONET_GETDIAG _IOR('a',ATMIOC_PHYTYP+4,int)
#define SONET_SETFRAMING _IOW('a',ATMIOC_PHYTYP+5,int)
#define SONET_GETFRAMING _IOR('a',ATMIOC_PHYTYP+6,int)
#define SONET_GETFRSENSE _IOR('a',ATMIOC_PHYTYP+7,   unsigned char[SONET_FRSENSE_SIZE])
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SONET_INS_SBIP 1
#define SONET_INS_LBIP 2
#define SONET_INS_PBIP 4
#define SONET_INS_FRAME 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SONET_INS_LOS 16
#define SONET_INS_LAIS 32
#define SONET_INS_PAIS 64
#define SONET_INS_HCS 128
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SONET_FRAME_SONET 0
#define SONET_FRAME_SDH 1
#define SONET_FRSENSE_SIZE 6
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
