111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_IN_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_IN_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/types.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/socket.h>
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_IP = 0,
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_ICMP = 1,
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_IGMP = 2,
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_IPIP = 4,
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_TCP = 6,
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_EGP = 8,
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_PUP = 12,
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_UDP = 17,
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_IDP = 22,
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_DCCP = 33,
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_RSVP = 46,
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_GRE = 47,
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_IPV6 = 41,
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_ESP = 50,
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_AH = 51,
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_PIM = 103,
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_COMP = 108,
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_SCTP = 132,
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_RAW = 255,
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPPROTO_MAX
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct in_addr {
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 s_addr;
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_TOS 1
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_TTL 2
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_HDRINCL 3
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_OPTIONS 4
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_ROUTER_ALERT 5
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_RECVOPTS 6
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_RETOPTS 7
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_PKTINFO 8
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_PKTOPTIONS 9
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MTU_DISCOVER 10
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_RECVERR 11
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_RECVTTL 12
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_RECVTOS 13
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MTU 14
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_FREEBIND 15
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_IPSEC_POLICY 16
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_XFRM_POLICY 17
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_PASSSEC 18
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_RECVRETOPTS IP_RETOPTS
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_PMTUDISC_DONT 0
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_PMTUDISC_WANT 1
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_PMTUDISC_DO 2
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MULTICAST_IF 32
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MULTICAST_TTL 33
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MULTICAST_LOOP 34
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_ADD_MEMBERSHIP 35
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_DROP_MEMBERSHIP 36
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_UNBLOCK_SOURCE 37
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_BLOCK_SOURCE 38
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_ADD_SOURCE_MEMBERSHIP 39
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_DROP_SOURCE_MEMBERSHIP 40
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MSFILTER 41
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_JOIN_GROUP 42
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_BLOCK_SOURCE 43
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_UNBLOCK_SOURCE 44
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_LEAVE_GROUP 45
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_JOIN_SOURCE_GROUP 46
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_LEAVE_SOURCE_GROUP 47
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_MSFILTER 48
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_EXCLUDE 0
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MCAST_INCLUDE 1
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_DEFAULT_MULTICAST_TTL 1
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_DEFAULT_MULTICAST_LOOP 1
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip_mreq
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr imr_multiaddr;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr imr_interface;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip_mreqn
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr imr_multiaddr;
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr imr_address;
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int imr_ifindex;
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip_mreq_source {
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imr_multiaddr;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imr_interface;
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imr_sourceaddr;
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip_msfilter {
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imsf_multiaddr;
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imsf_interface;
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imsf_fmode;
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imsf_numsrc;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 imsf_slist[1];
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP_MSFILTER_SIZE(numsrc)   (sizeof(struct ip_msfilter) - sizeof(__u32)   + (numsrc) * sizeof(__u32))
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct group_req
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gr_interface;
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct __kernel_sockaddr_storage gr_group;
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct group_source_req
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gsr_interface;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct __kernel_sockaddr_storage gsr_group;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct __kernel_sockaddr_storage gsr_source;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct group_filter
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gf_interface;
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct __kernel_sockaddr_storage gf_group;
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gf_fmode;
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gf_numsrc;
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct __kernel_sockaddr_storage gf_slist[1];
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GROUP_FILTER_SIZE(numsrc)   (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage)   + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct in_pktinfo
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int ipi_ifindex;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr ipi_spec_dst;
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr ipi_addr;
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __SOCK_SIZE__ 16
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct sockaddr_in {
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert sa_family_t sin_family;
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short int sin_port;
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in_addr sin_addr;
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert sizeof(unsigned short int) - sizeof(struct in_addr)];
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define sin_zero __pad
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSA_NET 0xff000000
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSA_NSHIFT 24
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSA_MAX 128
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSB_NET 0xffff0000
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSB_NSHIFT 16
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSB_MAX 65536
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000)
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSC_NET 0xffffff00
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSC_NSHIFT 8
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_MULTICAST(a) IN_CLASSD(a)
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_MULTICAST_NET 0xF0000000
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_ANY ((unsigned long int) 0x00000000)
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_NONE ((unsigned long int) 0xffffffff)
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_LOOPBACKNET 127
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_LOOPBACK 0x7f000001
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000)
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_UNSPEC_GROUP 0xe0000000U
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_ALLHOSTS_GROUP 0xe0000001U
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_ALLRTRS_GROUP 0xe0000002U
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define INADDR_MAX_LOCAL_GROUP 0xe00000ffU
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/byteorder.h>
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
212