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