# 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 = 199506
_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 = 199506
__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 = 2147483647
LONG_MIN = (-2147483647-1)
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 = 9223372036854775807
LONG_MAX = 2147483647
LONG_MIN = (-LONG_MAX - 1)
ULONG_MAX = 4294967295

# 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 = (-9223372036854775807-1)
INT_FAST32_MIN = (-9223372036854775807-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 = (9223372036854775807)
INT_FAST32_MAX = (9223372036854775807)
INT_FAST16_MAX = (2147483647)
INT_FAST32_MAX = (2147483647)
INT_FAST64_MAX = (__INT64_C(9223372036854775807))
UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
INTPTR_MIN = (-9223372036854775807-1)
INTPTR_MAX = (9223372036854775807)
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 = (-9223372036854775807-1)
PTRDIFF_MAX = (9223372036854775807)
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) & 0o170000) >> 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 = 0o0170000
S_IFSOCK = 0o140000
S_IFLNK = 0o120000
S_IFREG = 0o100000
S_IFBLK = 0o060000
S_IFDIR = 0o040000
S_IFCHR = 0o020000
S_IFIFO = 0o010000
S_ISUID = 0o004000
S_ISGID = 0o002000
S_ISVTX = 0o001000
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 = 0o0700
S_IRUSR = 0o0400
S_IWUSR = 0o0200
S_IXUSR = 0o0100
S_IRWXG = 0o0070
S_IRGRP = 0o0040
S_IWGRP = 0o0020
S_IXGRP = 0o0010
S_IRWXO = 0o0007
S_IROTH = 0o0004
S_IWOTH = 0o0002
S_IXOTH = 0o0001
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 = 0o003
O_RWMASK = O_ACCMODE
O_RDONLY = 00
O_WRONLY = 0o1
O_RDWR = 0o2
O_CREAT = 0o100
O_EXCL = 0o200
O_NOCTTY = 0o400
O_TRUNC = 0o1000
O_APPEND = 0o2000
O_NONBLOCK = 0o4000
O_NDELAY = O_NONBLOCK
O_SYNC = 0o10000
O_FSYNC = O_SYNC
O_ASYNC = 0o20000
FASYNC = O_ASYNC
O_DIRECTORY = 0o40000
O_NOTRAVERSE = 0o100000
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(int)-1) & ~(sizeof(int)-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
