# Generated by h2py from /include/netinet/in.h
_NETINET_IN_H = 1

# Included from features.h
_FEATURES_H = 1
__USE_ANSI = 1
__FAVOR_BSD = 1
_ISOC9X_SOURCE = 1
_POSIX_SOURCE = 1
_POSIX_C_SOURCE = 199506L
_XOPEN_SOURCE = 500
_XOPEN_SOURCE_EXTENDED = 1
_LARGEFILE64_SOURCE = 1
_BSD_SOURCE = 1
_SVID_SOURCE = 1
_BSD_SOURCE = 1
_SVID_SOURCE = 1
__USE_ISOC9X = 1
_POSIX_SOURCE = 1
_POSIX_C_SOURCE = 2
_POSIX_C_SOURCE = 199506L
__USE_POSIX = 1
__USE_POSIX2 = 1
__USE_POSIX199309 = 1
__USE_POSIX199506 = 1
__USE_XOPEN = 1
__USE_XOPEN_EXTENDED = 1
__USE_UNIX98 = 1
_LARGEFILE_SOURCE = 1
__USE_XOPEN_EXTENDED = 1
__USE_LARGEFILE = 1
__USE_LARGEFILE64 = 1
__USE_FILE_OFFSET64 = 1
__USE_MISC = 1
__USE_BSD = 1
__USE_SVID = 1
__USE_GNU = 1
__USE_REENTRANT = 1
__STDC_IEC_559__ = 1
__STDC_IEC_559_COMPLEX__ = 1
__GNU_LIBRARY__ = 6
__GLIBC__ = 2
__GLIBC_MINOR__ = 1

# Included from sys/cdefs.h
_SYS_CDEFS_H = 1
def __PMT(args): return args

def __P(args): return args

def __PMT(args): return args

def __P(args): return ()

def __PMT(args): return ()

def __STRING(x): return #x

def __STRING(x): return "x"

def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)

def __attribute__(xyz): return

__USE_EXTERN_INLINES = 1

# Included from gnu/stubs.h

# Included from limits.h
_LIBC_LIMITS_H_ = 1

# Included from bits/posix1_lim.h
_BITS_POSIX1_LIM_H = 1
_POSIX_AIO_LISTIO_MAX = 2
_POSIX_AIO_MAX = 1
_POSIX_ARG_MAX = 4096
_POSIX_CHILD_MAX = 6
_POSIX_DELAYTIMER_MAX = 32
_POSIX_LINK_MAX = 8
_POSIX_MAX_CANON = 255
_POSIX_MAX_INPUT = 255
_POSIX_MQ_OPEN_MAX = 8
_POSIX_MQ_PRIO_MAX = 32
_POSIX_NGROUPS_MAX = 0
_POSIX_OPEN_MAX = 16
_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
_POSIX_NAME_MAX = 14
_POSIX_PATH_MAX = 255
_POSIX_PIPE_BUF = 512
_POSIX_RTSIG_MAX = 8
_POSIX_SEM_NSEMS_MAX = 256
_POSIX_SEM_VALUE_MAX = 32767
_POSIX_SIGQUEUE_MAX = 32
_POSIX_SSIZE_MAX = 32767
_POSIX_STREAM_MAX = 8
_POSIX_TZNAME_MAX = 3
_POSIX_QLIMIT = 1
_POSIX_HIWAT = _POSIX_PIPE_BUF
_POSIX_UIO_MAXIOV = 16
_POSIX_TTY_NAME_MAX = 9
_POSIX_TIMER_MAX = 32
_POSIX_LOGIN_NAME_MAX = 9
_POSIX_CLOCKRES_MIN = 20000000

# Included from bits/local_lim.h

# Included from posix/limits.h
CHAR_BIT = 8
CHAR_MAX = 127
CHAR_MIN = (-128)
INT_MAX = 2147483647
INT_MIN = (-2147483647-1)
LONG_MAX = 2147483647L
LONG_MIN = (-2147483647L-1L)
SCHAR_MAX = 127
SCHAR_MIN = (-128)
SHRT_MAX = 32767
SHRT_MIN = (-32768)
UCHAR_MAX = 255
USHRT_MAX = 65535
_POSIX_ARG_MAX = 131072
_POSIX_CHILD_MAX = 4096
_POSIX_LINK_MAX = 1
_POSIX_MAX_CANON = 126
_POSIX_MAX_INPUT = 126
_POSIX_NAME_MAX = 256
_POSIX_NGROUPS_MAX = 32
_POSIX_OPEN_MAX = 256
_POSIX_PATH_MAX = 255
_POSIX_PIPE_BUF = 512
_POSIX_SSIZE_MAX = 2147483647
_POSIX_STREAM_MAX = 256
_POSIX_TZNAME_MAX = 5
NGROUPS_MAX = 32
ARG_MAX = 131072
CHILD_MAX = 4096
OPEN_MAX = 256
LINK_MAX = 1
MAX_CANON = 126
MAX_INPUT = 126
NAME_MAX = 255
PATH_MAX = 4096
PIPE_BUF = 4096
SSIZE_MAX = 2147483647
MAXSYMLINKS = 16
AIO_PRIO_DELTA_MAX = 20
SSIZE_MAX = INT_MAX
NGROUPS_MAX = _POSIX_NGROUPS_MAX

# Included from bits/posix2_lim.h
_BITS_POSIX2_LIM_H = 1
_POSIX2_BC_BASE_MAX = 99
_POSIX2_BC_DIM_MAX = 2048
_POSIX2_BC_SCALE_MAX = 99
_POSIX2_BC_STRING_MAX = 1000
_POSIX2_COLL_WEIGHTS_MAX = 255
_POSIX2_EQUIV_CLASS_MAX = 255
_POSIX2_EXPR_NEST_MAX = 32
_POSIX2_LINE_MAX = 2048
_POSIX2_RE_DUP_MAX = 255
_POSIX2_CHARCLASS_NAME_MAX = 2048
BC_BASE_MAX = _POSIX2_BC_BASE_MAX
BC_DIM_MAX = _POSIX2_BC_DIM_MAX
BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
BC_STRING_MAX = _POSIX2_BC_STRING_MAX
COLL_WEIGHTS_MAX = _POSIX2_COLL_WEIGHTS_MAX
EQUIV_CLASS_MAX = _POSIX2_EQUIV_CLASS_MAX
EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
LINE_MAX = _POSIX2_LINE_MAX
RE_DUP_MAX = _POSIX2_RE_DUP_MAX
CHARCLASS_NAME_MAX = _POSIX2_CHARCLASS_NAME_MAX

# Included from bits/xopen_lim.h
_XOPEN_LIM_H = 1

# Included from bits/stdio_lim.h
L_tmpnam = 20
TMP_MAX = 238328
FILENAME_MAX = 4096
L_ctermid = 9
L_cuserid = 9
FOPEN_MAX = 256
STREAM_MAX = FOPEN_MAX
TZNAME_MAX = _POSIX_TZNAME_MAX
_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
NL_ARGMAX = _POSIX_ARG_MAX
NL_LANGMAX = _POSIX2_LINE_MAX
NL_MSGMAX = INT_MAX
NL_NMAX = INT_MAX
NL_SETMAX = INT_MAX
NL_TEXTMAX = INT_MAX
NZERO = 20
MB_LEN_MAX = 6
_LIMITS_H = 1
CHAR_BIT = 8
SCHAR_MIN = (-128)
SCHAR_MAX = 127
UCHAR_MAX = 255
CHAR_MIN = 0
CHAR_MAX = UCHAR_MAX
CHAR_MIN = SCHAR_MIN
CHAR_MAX = SCHAR_MAX
SHRT_MIN = (-32768)
SHRT_MAX = 32767
USHRT_MAX = 65535
INT_MIN = (-INT_MAX - 1)
INT_MAX = 2147483647
UINT_MAX = 4294967295
LONG_MAX = 9223372036854775807L
LONG_MAX = 2147483647L
LONG_MIN = (-LONG_MAX - 1L)
ULONG_MAX = 4294967295L

# Included from stdint.h
_STDINT_H = 1

# Included from bits/wordsize.h
__WORDSIZE = 32
def __INT64_C(c): return c ## L

def __UINT64_C(c): return c ## UL

def __INT64_C(c): return c ## LL

def __UINT64_C(c): return c ## ULL

INT8_MIN = (-128)
INT16_MIN = (-32767-1)
INT32_MIN = (-2147483647-1)
INT64_MIN = (-__INT64_C(9223372036854775807)-1)
INT8_MAX = (127)
INT16_MAX = (32767)
INT32_MAX = (2147483647)
INT64_MAX = (__INT64_C(9223372036854775807))
UINT64_MAX = (__UINT64_C(18446744073709551615))
INT_LEAST8_MIN = (-128)
INT_LEAST16_MIN = (-32767-1)
INT_LEAST32_MIN = (-2147483647-1)
INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
INT_LEAST8_MAX = (127)
INT_LEAST16_MAX = (32767)
INT_LEAST32_MAX = (2147483647)
INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
INT_FAST8_MIN = (-128)
INT_FAST16_MIN = (-9223372036854775807L-1)
INT_FAST32_MIN = (-9223372036854775807L-1)
INT_FAST16_MIN = (-2147483647-1)
INT_FAST32_MIN = (-2147483647-1)
INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
INT_FAST8_MAX = (127)
INT_FAST16_MAX = (9223372036854775807L)
INT_FAST32_MAX = (9223372036854775807L)
INT_FAST16_MAX = (2147483647)
INT_FAST32_MAX = (2147483647)
INT_FAST64_MAX = (__INT64_C(9223372036854775807))
UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
INTPTR_MIN = (-9223372036854775807L-1)
INTPTR_MAX = (9223372036854775807L)
INTPTR_MIN = (-2147483647-1)
INTPTR_MAX = (2147483647)
INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
INTMAX_MAX = (__INT64_C(9223372036854775807))
UINTMAX_MAX = (__UINT64_C(18446744073709551615))
PTRDIFF_MIN = (-9223372036854775807L-1)
PTRDIFF_MAX = (9223372036854775807L)
PTRDIFF_MIN = (-2147483647-1)
PTRDIFF_MAX = (2147483647)
SIG_ATOMIC_MIN = (-2147483647-1)
SIG_ATOMIC_MAX = (2147483647)
WCHAR_MIN = (-2147483647-1)
WCHAR_MAX = (2147483647)
WINT_MIN = (0)
def INT8_C(c): return c

def INT16_C(c): return c

def INT32_C(c): return c

def INT64_C(c): return c ## L

def INT64_C(c): return c ## LL

def UINT8_C(c): return c ## U

def UINT16_C(c): return c ## U

def UINT32_C(c): return c ## U

def UINT64_C(c): return c ## UL

def UINT64_C(c): return c ## ULL

def INTMAX_C(c): return c ## L

def UINTMAX_C(c): return c ## UL

def INTMAX_C(c): return c ## LL

def UINTMAX_C(c): return c ## ULL


# Included from sys/types.h
_SYS_TYPES_H = 1

# Included from bits/types.h
_BITS_TYPES_H = 1
__FD_SETSIZE = 1024
def __FDELT(d): return ((d) / __NFDBITS)


# Included from bits/pthreadtypes.h

# Included from time.h
_TIME_H = 1

# Included from bits/time.h

# Included from posix/time.h

# Included from posix/types.h
MAXHOSTNAMELEN = 64
FD_SETSIZE = 1024
CLOCKS_PER_SEC = 1000000
_BITS_TIME_H = 1
CLOCKS_PER_SEC = 1000000
CLK_TCK = 100
_STRUCT_TIMEVAL = 1
CLK_TCK = CLOCKS_PER_SEC
__clock_t_defined = 1
__time_t_defined = 1
__timespec_defined = 1
def __isleap(year): return \

__BIT_TYPES_DEFINED__ = 1

# Included from endian.h
_ENDIAN_H = 1
__LITTLE_ENDIAN = 1234
__BIG_ENDIAN = 4321
__PDP_ENDIAN = 3412

# Included from bits/endian.h
__BYTE_ORDER = __LITTLE_ENDIAN
__FLOAT_WORD_ORDER = __BYTE_ORDER
LITTLE_ENDIAN = __LITTLE_ENDIAN
BIG_ENDIAN = __BIG_ENDIAN
PDP_ENDIAN = __PDP_ENDIAN
BYTE_ORDER = __BYTE_ORDER

# Included from sys/select.h
_SYS_SELECT_H = 1

# Included from bits/select.h
def __FD_ZERO(fdsp): return \

def __FD_ZERO(set): return \


# Included from bits/sigset.h
_SIGSET_H_types = 1
_SIGSET_H_fns = 1
def __sigmask(sig): return \

def __sigemptyset(set): return \

def __sigfillset(set): return \

def __sigisemptyset(set): return \

FD_SETSIZE = __FD_SETSIZE
def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)


# Included from sys/sysmacros.h
_SYS_SYSMACROS_H = 1
def major(dev): return ( ((  (dev) >> 8) & 0xff))

def minor(dev): return ( ((dev) & 0xff))


# Included from bits/socket.h
PF_UNSPEC = 0
PF_LOCAL = 1
PF_UNIX = PF_LOCAL
PF_FILE = PF_LOCAL
PF_INET = 2
PF_AX25 = 3
PF_IPX = 4
PF_APPLETALK = 5
PF_NETROM = 6
PF_BRIDGE = 7
PF_ATMPVC = 8
PF_X25 = 9
PF_INET6 = 10
PF_ROSE = 11
PF_DECnet = 12
PF_NETBEUI = 13
PF_SECURITY = 14
PF_KEY = 15
PF_NETLINK = 16
PF_ROUTE = PF_NETLINK
PF_PACKET = 17
PF_ASH = 18
PF_ECONET = 19
PF_ATMSVC = 20
PF_SNA = 22
PF_IRDA = 23
PF_MAX = 32
AF_UNSPEC = PF_UNSPEC
AF_LOCAL = PF_LOCAL
AF_UNIX = PF_UNIX
AF_FILE = PF_FILE
AF_INET = PF_INET
AF_AX25 = PF_AX25
AF_IPX = PF_IPX
AF_APPLETALK = PF_APPLETALK
AF_NETROM = PF_NETROM
AF_BRIDGE = PF_BRIDGE
AF_ATMPVC = PF_ATMPVC
AF_X25 = PF_X25
AF_INET6 = PF_INET6
AF_ROSE = PF_ROSE
AF_DECnet = PF_DECnet
AF_NETBEUI = PF_NETBEUI
AF_SECURITY = PF_SECURITY
AF_KEY = PF_KEY
AF_NETLINK = PF_NETLINK
AF_ROUTE = PF_ROUTE
AF_PACKET = PF_PACKET
AF_ASH = PF_ASH
AF_ECONET = PF_ECONET
AF_ATMSVC = PF_ATMSVC
AF_SNA = PF_SNA
AF_IRDA = PF_IRDA
AF_MAX = PF_MAX
SOL_RAW = 255
SOL_DECNET = 261
SOL_X25 = 262
SOL_PACKET = 263
SOL_ATM = 264
SOL_AAL = 265
SOL_IRDA = 266
SOMAXCONN = 128

# Included from bits/sockaddr.h
_BITS_SOCKADDR_H = 1
def __SOCKADDR_COMMON(sa_prefix): return \

_SS_SIZE = 128
def CMSG_FIRSTHDR(mhdr): return \


# Included from atheos/socket.h

# Included from atheos/types.h
OS_NAME_LENGTH = 64
TRUE = 1
FALSE = 0

# Included from atheos/filesystem.h

# Included from atheos/atomic.h

# Included from atheos/typedefs.h

# Included from atheos/fs_attribs.h

# Included from atheos/kernel.h

# Included from atheos/kdebug.h

# Included from atheos/threads.h
TF_DEADLOCK = 0x0001
DB_PACKET_SIZE = 128
DB_PORT_COUNT = 16
DBP_PRINTK = 0
DBP_DEBUGGER = 2

# Included from atheos/stdlib.h

# Included from atheos/string.h
def COMMON(x): return \

def COMMON(x): return \


# Included from atheos/schedule.h

# Included from atheos/timer.h

# Included from posix/resource.h
RUSAGE_SELF = 0
RUSAGE_CHILDREN = -1
RLIMIT_CPU = 0
RLIMIT_FSIZE = 1
RLIMIT_DATA = 2
RLIMIT_STACK = 3
RLIMIT_CORE = 4
RLIMIT_RSS = 5
RLIMIT_MEMLOCK = 6
RLIMIT_NPROC = 7
RLIMIT_NOFILE = 8
RLIMIT_AS = 9
RLIM_NLIMITS = 10

# Included from atheos/v86.h

# Included from atheos/areas.h
MEMF_REAL = 0x00000002
MEMF_USER = 0x00000004
MEMF_BUFFER = 0x00000008
MEMF_KERNEL = 0x00000010
MEMF_OKTOFAILHACK = 0x00000020
MEMF_PRI_MASK = 0x000000ff
MEMF_NOBLOCK = 0x00000100
MEMF_CLEAR = 0x00010000
MEMF_LOCKED = 0x10000000
PAGE_SHIFT = 12
PGDIR_SHIFT = 22
def PAGE_ALIGN(addr): return (((addr)+PAGE_SIZE-1)&PAGE_MASK)

AREA_NO_LOCK = 0
AREA_LAZY_LOCK = 1
AREA_FULL_LOCK = 2
AREA_CONTIGUOUS = 3
AREA_READ = 0x00000001
AREA_WRITE = 0x00000002
AREA_EXEC = 0x00000004
AREA_FULL_ACCESS = (AREA_READ | AREA_WRITE | AREA_EXEC)
AREA_KERNEL = 0x00000008
AREA_UNMAP_PHYS = 0x00000010
AREA_ANY_ADDRESS = 0x00000000
AREA_EXACT_ADDRESS = 0x00000100
AREA_BASE_ADDRESS = 0x00000200
AREA_CLONE_ADDRESS = 0x00000300
AREA_ADDR_SPEC_MASK = 0x00000f00
AREA_TOP_DOWN = 0x00001000
AREA_REMAPPED = 0x0020
AREA_SHARED = 0x0040
AREA_GROWSDOWN = 0x0080
AREA_FIRST_KERNEL_ADDRESS = 0x00100000
AREA_LAST_KERNEL_ADDRESS = 0x7fffffff
AREA_FIRST_USER_ADDRESS = 0x80000000
AREA_LAST_USER_ADDRESS = 0xffffffff
MAX_CPU_COUNT = 16
def kfree(p): return kassertw( __kfree(p) == 0 )


# Included from posix/dirent.h
MAXNAMLEN = NAME_MAX
MAXNAMLEN = 255

# Included from dirent.h
_DIRENT_H = 1

# Included from bits/dirent.h
def _D_ALLOC_NAMLEN(d): return (_D_EXACT_NAMLEN (d) + 1)

def IFTODT(mode): return (((mode) & 0170000) >> 12)

def DTTOIF(dirtype): return ((dirtype) << 12)

def dirfd(dirp): return _DIR_dirfd (dirp)

MAXNAMLEN = NAME_MAX
MAXNAMLEN = 255

# Included from posix/stat.h
S_IFMT = 00170000
S_IFSOCK = 0140000
S_IFLNK = 0120000
S_IFREG = 0100000
S_IFBLK = 0060000
S_IFDIR = 0040000
S_IFCHR = 0020000
S_IFIFO = 0010000
S_ISUID = 0004000
S_ISGID = 0002000
S_ISVTX = 0001000
def S_ISLNK(m): return (((m) & S_IFMT) == S_IFLNK)

def S_ISREG(m): return (((m) & S_IFMT) == S_IFREG)

def S_ISDIR(m): return (((m) & S_IFMT) == S_IFDIR)

def S_ISCHR(m): return (((m) & S_IFMT) == S_IFCHR)

def S_ISBLK(m): return (((m) & S_IFMT) == S_IFBLK)

def S_ISFIFO(m): return (((m) & S_IFMT) == S_IFIFO)

def S_ISSOCK(m): return (((m) & S_IFMT) == S_IFSOCK)

S_IRWXU = 00700
S_IRUSR = 00400
S_IWUSR = 00200
S_IXUSR = 00100
S_IRWXG = 00070
S_IRGRP = 00040
S_IWGRP = 00020
S_IXGRP = 00010
S_IRWXO = 00007
S_IROTH = 00004
S_IWOTH = 00002
S_IXOTH = 00001
S_IRWXUGO = (S_IRWXU|S_IRWXG|S_IRWXO)
S_IALLUGO = (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO)
S_IRUGO = (S_IRUSR|S_IRGRP|S_IROTH)
S_IWUGO = (S_IWUSR|S_IWGRP|S_IWOTH)
S_IXUGO = (S_IXUSR|S_IXGRP|S_IXOTH)
_STAT_VER_KERNEL = 0

# Included from posix/fcntl.h
O_ACCMODE = 0003
O_RWMASK = O_ACCMODE
O_RDONLY = 00
O_WRONLY = 01
O_RDWR = 02
O_CREAT = 0100
O_EXCL = 0200
O_NOCTTY = 0400
O_TRUNC = 01000
O_APPEND = 02000
O_NONBLOCK = 04000
O_NDELAY = O_NONBLOCK
O_SYNC = 010000
O_FSYNC = O_SYNC
O_ASYNC = 020000
FASYNC = O_ASYNC
O_DIRECTORY = 040000
O_NOTRAVERSE = 0100000
O_NOFOLLOW = O_NOTRAVERSE
F_DUPFD = 0
F_GETFD = 1
F_SETFD = 2
F_GETFL = 3
F_SETFL = 4
F_GETLK = 5
F_SETLK = 6
F_SETLKW = 7
F_SETOWN = 8
F_GETOWN = 9
F_SETSIG = 10
F_GETSIG = 11
F_COPYFD = 12
FD_CLOEXEC = 1
F_RDLCK = 0
F_WRLCK = 1
F_UNLCK = 2
F_EXLCK = 4
F_SHLCK = 8
LOCK_SH = 1
LOCK_EX = 2
LOCK_NB = 4
LOCK_UN = 8

# Included from posix/uio.h
UIO_FASTIOV = 8
UIO_MAXIOV = 1024
MNTF_READONLY = 0x0001
FS_IS_READONLY = 0x00000001
FS_IS_REMOVABLE = 0x00000002
FS_IS_PERSISTENT = 0x00000004
FS_IS_SHARED = 0x00000008
FS_IS_BLOCKBASED = 0x00000010
FS_CAN_MOUNT = 0x00000020
FS_HAS_MIME = 0x00010000
FS_HAS_ATTR = 0x00020000
FS_HAS_QUERY = 0x00040000
FSINFO_VERSION = 1
WSTAT_MODE = 0x0001
WSTAT_UID = 0x0002
WSTAT_GID = 0x0004
WSTAT_SIZE = 0x0008
WSTAT_ATIME = 0x0010
WSTAT_MTIME = 0x0020
WSTAT_CTIME = 0x0040
WFSSTAT_NAME = 0x0001
FSDRIVER_API_VERSION = 1

# Included from net/nettypes.h
IP_ADR_LEN = 4
INADDR_ANY = 0x00000000
INADDR_BROADCAST = 0xffffffff
INADDR_LOOPBACK = 0x7f000001
def CMSG_ALIGN(len): return ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )

PROT_SOCK = 1024
SHUTDOWN_MASK = 3
RCV_SHUTDOWN = 1
SEND_SHUTDOWN = 2
SOCK_STREAM = 1
SOCK_DGRAM = 2
SOCK_RAW = 3
SOCK_RDM = 4
SOCK_SEQPACKET = 5
SOCK_PACKET = 10
PF_UNSPEC = 0
PF_LOCAL = 1
PF_UNIX = PF_LOCAL
PF_FILE = PF_LOCAL
PF_INET = 2
PF_AX25 = 3
PF_IPX = 4
PF_APPLETALK = 5
PF_NETROM = 6
PF_BRIDGE = 7
PF_ATMPVC = 8
PF_X25 = 9
PF_INET6 = 10
PF_ROSE = 11
PF_DECnet = 12
PF_NETBEUI = 13
PF_SECURITY = 14
PF_KEY = 15
PF_NETLINK = 16
PF_ROUTE = PF_NETLINK
PF_PACKET = 17
PF_ASH = 18
PF_ECONET = 19
PF_ATMSVC = 20
PF_SNA = 22
PF_IRDA = 23
PF_MAX = 32
AF_UNSPEC = PF_UNSPEC
AF_LOCAL = PF_LOCAL
AF_UNIX = PF_UNIX
AF_FILE = PF_FILE
AF_INET = PF_INET
AF_AX25 = PF_AX25
AF_IPX = PF_IPX
AF_APPLETALK = PF_APPLETALK
AF_NETROM = PF_NETROM
AF_BRIDGE = PF_BRIDGE
AF_ATMPVC = PF_ATMPVC
AF_X25 = PF_X25
AF_INET6 = PF_INET6
AF_ROSE = PF_ROSE
AF_DECnet = PF_DECnet
AF_NETBEUI = PF_NETBEUI
AF_SECURITY = PF_SECURITY
AF_KEY = PF_KEY
AF_NETLINK = PF_NETLINK
AF_ROUTE = PF_ROUTE
AF_PACKET = PF_PACKET
AF_ASH = PF_ASH
AF_ECONET = PF_ECONET
AF_ATMSVC = PF_ATMSVC
AF_SNA = PF_SNA
AF_IRDA = PF_IRDA
AF_MAX = PF_MAX
PF_UNIX = 1
AF_UNIX = PF_UNIX
PF_INET = 2
AF_INET = PF_INET
SOMAXCONN = 128
MSG_OOB = 1
MSG_PEEK = 2
MSG_DONTROUTE = 4
MSG_PROXY = 16
SOL_SOCKET = 1
SO_DEBUG = 1
SO_REUSEADDR = 2
SO_TYPE = 3
SO_ERROR = 4
SO_DONTROUTE = 5
SO_BROADCAST = 6
SO_SNDBUF = 7
SO_RCVBUF = 8
SO_KEEPALIVE = 9
SO_OOBINLINE = 10
SO_NO_CHECK = 11
SO_PRIORITY = 12
SO_LINGER = 13
SO_BSDCOMPAT = 14
SOL_IP = 0
SOL_IPX = 256
SOL_AX25 = 257
SOL_ATALK = 258
SOL_NETROM = 259
SOL_TCP = 6
SOL_UDP = 17
IP_TOS = 1
IPTOS_LOWDELAY = 0x10
IPTOS_THROUGHPUT = 0x08
IPTOS_RELIABILITY = 0x04
IPTOS_MINCOST = 0x02
IP_TTL = 2
IP_HDRINCL = 3
IP_OPTIONS = 4
IP_MULTICAST_IF = 32
IP_MULTICAST_TTL = 33
IP_MULTICAST_LOOP = 34
IP_ADD_MEMBERSHIP = 35
IP_DROP_MEMBERSHIP = 36
TCP_NODELAY = 0x01
TCP_MAXSEG = 0x02
def IN_CLASSA(a): return (((  (a)) & 0x80000000) == 0)

IN_CLASSA_NET = 0xff000000
IN_CLASSA_NSHIFT = 24
IN_CLASSA_HOST = (0xffffffff & ~IN_CLASSA_NET)
IN_CLASSA_MAX = 128
def IN_CLASSB(a): return (((  (a)) & 0xc0000000) == 0x80000000)

IN_CLASSB_NET = 0xffff0000
IN_CLASSB_NSHIFT = 16
IN_CLASSB_HOST = (0xffffffff & ~IN_CLASSB_NET)
IN_CLASSB_MAX = 65536
def IN_CLASSC(a): return (((  (a)) & 0xe0000000) == 0xc0000000)

IN_CLASSC_NET = 0xffffff00
IN_CLASSC_NSHIFT = 8
IN_CLASSC_HOST = (0xffffffff & ~IN_CLASSC_NET)
def IN_CLASSD(a): return (((  (a)) & 0xf0000000) == 0xe0000000)

def IN_MULTICAST(a): return IN_CLASSD(a)

def IN_EXPERIMENTAL(a): return (((  (a)) & 0xe0000000) == 0xe0000000)

def IN_BADCLASS(a): return (((  (a)) & 0xf0000000) == 0xf0000000)

INADDR_ANY = (  0x00000000)
INADDR_BROADCAST = (  0xffffffff)
INADDR_NONE = (  0xffffffff)
IN_LOOPBACKNET = 127
INADDR_LOOPBACK = (  0x7f000001)
INADDR_UNSPEC_GROUP = (  0xe0000000)
INADDR_ALLHOSTS_GROUP = (  0xe0000001)
INADDR_ALLRTRS_GROUP = (  0xe0000002)
INADDR_MAX_LOCAL_GROUP = (  0xe00000ff)
INET_ADDRSTRLEN = 16
INET6_ADDRSTRLEN = 46

# Included from bits/in.h
IP_TOS = 1
IP_TTL = 2
IP_HDRINCL = 3
IP_OPTIONS = 4
IP_ROUTER_ALERT = 5
IP_RECVOPTS = 6
IP_RETOPTS = 7
IP_PKTINFO = 8
IP_PKTOPTIONS = 9
IP_PMTUDISC = 10
IP_MTU_DISCOVER = 10
IP_RECVERR = 11
IP_RECVTTL = 12
IP_RECVTOS = 13
IP_MULTICAST_IF = 32
IP_MULTICAST_TTL = 33
IP_MULTICAST_LOOP = 34
IP_ADD_MEMBERSHIP = 35
IP_DROP_MEMBERSHIP = 36
IP_RECVRETOPTS = IP_RETOPTS
IP_PMTUDISC_DONT = 0
IP_PMTUDISC_WANT = 1
IP_PMTUDISC_DO = 2
SOL_IP = 0
SOL_SOCKET = 1
IP_DEFAULT_MULTICAST_TTL = 1
IP_DEFAULT_MULTICAST_LOOP = 1
IP_MAX_MEMBERSHIPS = 20
IPV6_ADDRFORM = 1
IPV6_PKTINFO = 2
IPV6_HOPOPTS = 3
IPV6_DSTOPTS = 4
IPV6_RXSRCRT = 5
IPV6_PKTOPTIONS = 6
IPV6_CHECKSUM = 7
IPV6_HOPLIMIT = 8
IPV6_NEXTHOP = 9
IPV6_AUTHHDR = 10
IPV6_UNICAST_HOPS = 16
IPV6_MULTICAST_IF = 17
IPV6_MULTICAST_HOPS = 18
IPV6_MULTICAST_LOOP = 19
IPV6_ADD_MEMBERSHIP = 20
IPV6_DROP_MEMBERSHIP = 21
IPV6_ROUTER_ALERT = 22
SCM_SRCRT = IPV6_RXSRCRT
IPV6_RXHOPOPTS = IPV6_HOPOPTS
IPV6_RXDSTOPTS = IPV6_DSTOPTS
IPV6_PMTUDISC_DONT = 0
IPV6_PMTUDISC_WANT = 1
IPV6_PMTUDISC_DO = 2
SOL_IPV6 = 41
SOL_ICMPV6 = 58

# Included from bits/byteswap.h
def __bswap_constant_16(x): return \

def __bswap_16(x): return \

def __bswap_16(x): return __bswap_constant_16 (x)

def __bswap_constant_32(x): return \

def __bswap_32(x): return \

def __bswap_32(x): return \

def __bswap_32(x): return __bswap_constant_32 (x)

def __bswap_64(x): return \

def ntohl(x): return (x)

def ntohs(x): return (x)

def htonl(x): return (x)

def htons(x): return (x)

def ntohl(x): return __bswap_32 (x)

def ntohs(x): return __bswap_16 (x)

def htonl(x): return __bswap_32 (x)

def htons(x): return __bswap_16 (x)

def IN6_IS_ADDR_UNSPECIFIED(a): return \

def IN6_IS_ADDR_LOOPBACK(a): return \

def IN6_IS_ADDR_LINKLOCAL(a): return \

def IN6_IS_ADDR_SITELOCAL(a): return \

def IN6_IS_ADDR_V4MAPPED(a): return \

def IN6_IS_ADDR_V4COMPAT(a): return \

def IN6_IS_ADDR_MC_NODELOCAL(a): return \

def IN6_IS_ADDR_MC_LINKLOCAL(a): return \

def IN6_IS_ADDR_MC_SITELOCAL(a): return \

def IN6_IS_ADDR_MC_ORGLOCAL(a): return \

def IN6_IS_ADDR_MC_GLOBAL(a): return
