# 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 \

