1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _UAPI_LINUX_IN_H
20#define _UAPI_LINUX_IN_H
21#include <bits/ip_msfilter.h>
22#include <bits/ip_mreq_source.h>
23#include <bits/in_addr.h>
24#include <linux/types.h>
25#include <linux/libc-compat.h>
26#include <linux/socket.h>
27#if __UAPI_DEF_IN_IPPROTO
28enum {
29  IPPROTO_IP = 0,
30#define IPPROTO_IP IPPROTO_IP
31  IPPROTO_ICMP = 1,
32#define IPPROTO_ICMP IPPROTO_ICMP
33  IPPROTO_IGMP = 2,
34#define IPPROTO_IGMP IPPROTO_IGMP
35  IPPROTO_IPIP = 4,
36#define IPPROTO_IPIP IPPROTO_IPIP
37  IPPROTO_TCP = 6,
38#define IPPROTO_TCP IPPROTO_TCP
39  IPPROTO_EGP = 8,
40#define IPPROTO_EGP IPPROTO_EGP
41  IPPROTO_PUP = 12,
42#define IPPROTO_PUP IPPROTO_PUP
43  IPPROTO_UDP = 17,
44#define IPPROTO_UDP IPPROTO_UDP
45  IPPROTO_IDP = 22,
46#define IPPROTO_IDP IPPROTO_IDP
47  IPPROTO_TP = 29,
48#define IPPROTO_TP IPPROTO_TP
49  IPPROTO_DCCP = 33,
50#define IPPROTO_DCCP IPPROTO_DCCP
51  IPPROTO_IPV6 = 41,
52#define IPPROTO_IPV6 IPPROTO_IPV6
53  IPPROTO_RSVP = 46,
54#define IPPROTO_RSVP IPPROTO_RSVP
55  IPPROTO_GRE = 47,
56#define IPPROTO_GRE IPPROTO_GRE
57  IPPROTO_ESP = 50,
58#define IPPROTO_ESP IPPROTO_ESP
59  IPPROTO_AH = 51,
60#define IPPROTO_AH IPPROTO_AH
61  IPPROTO_MTP = 92,
62#define IPPROTO_MTP IPPROTO_MTP
63  IPPROTO_BEETPH = 94,
64#define IPPROTO_BEETPH IPPROTO_BEETPH
65  IPPROTO_ENCAP = 98,
66#define IPPROTO_ENCAP IPPROTO_ENCAP
67  IPPROTO_PIM = 103,
68#define IPPROTO_PIM IPPROTO_PIM
69  IPPROTO_COMP = 108,
70#define IPPROTO_COMP IPPROTO_COMP
71  IPPROTO_SCTP = 132,
72#define IPPROTO_SCTP IPPROTO_SCTP
73  IPPROTO_UDPLITE = 136,
74#define IPPROTO_UDPLITE IPPROTO_UDPLITE
75  IPPROTO_MPLS = 137,
76#define IPPROTO_MPLS IPPROTO_MPLS
77  IPPROTO_RAW = 255,
78#define IPPROTO_RAW IPPROTO_RAW
79  IPPROTO_MAX
80};
81#endif
82#if __UAPI_DEF_IN_ADDR
83#endif
84#define IP_TOS 1
85#define IP_TTL 2
86#define IP_HDRINCL 3
87#define IP_OPTIONS 4
88#define IP_ROUTER_ALERT 5
89#define IP_RECVOPTS 6
90#define IP_RETOPTS 7
91#define IP_PKTINFO 8
92#define IP_PKTOPTIONS 9
93#define IP_MTU_DISCOVER 10
94#define IP_RECVERR 11
95#define IP_RECVTTL 12
96#define IP_RECVTOS 13
97#define IP_MTU 14
98#define IP_FREEBIND 15
99#define IP_IPSEC_POLICY 16
100#define IP_XFRM_POLICY 17
101#define IP_PASSSEC 18
102#define IP_TRANSPARENT 19
103#define IP_RECVRETOPTS IP_RETOPTS
104#define IP_ORIGDSTADDR 20
105#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
106#define IP_MINTTL 21
107#define IP_NODEFRAG 22
108#define IP_CHECKSUM 23
109#define IP_BIND_ADDRESS_NO_PORT 24
110#define IP_RECVFRAGSIZE 25
111#define IP_PMTUDISC_DONT 0
112#define IP_PMTUDISC_WANT 1
113#define IP_PMTUDISC_DO 2
114#define IP_PMTUDISC_PROBE 3
115#define IP_PMTUDISC_INTERFACE 4
116#define IP_PMTUDISC_OMIT 5
117#define IP_MULTICAST_IF 32
118#define IP_MULTICAST_TTL 33
119#define IP_MULTICAST_LOOP 34
120#define IP_ADD_MEMBERSHIP 35
121#define IP_DROP_MEMBERSHIP 36
122#define IP_UNBLOCK_SOURCE 37
123#define IP_BLOCK_SOURCE 38
124#define IP_ADD_SOURCE_MEMBERSHIP 39
125#define IP_DROP_SOURCE_MEMBERSHIP 40
126#define IP_MSFILTER 41
127#define MCAST_JOIN_GROUP 42
128#define MCAST_BLOCK_SOURCE 43
129#define MCAST_UNBLOCK_SOURCE 44
130#define MCAST_LEAVE_GROUP 45
131#define MCAST_JOIN_SOURCE_GROUP 46
132#define MCAST_LEAVE_SOURCE_GROUP 47
133#define MCAST_MSFILTER 48
134#define IP_MULTICAST_ALL 49
135#define IP_UNICAST_IF 50
136#define MCAST_EXCLUDE 0
137#define MCAST_INCLUDE 1
138#define IP_DEFAULT_MULTICAST_TTL 1
139#define IP_DEFAULT_MULTICAST_LOOP 1
140#if __UAPI_DEF_IP_MREQ
141struct ip_mreq {
142  struct in_addr imr_multiaddr;
143  struct in_addr imr_interface;
144};
145struct ip_mreqn {
146  struct in_addr imr_multiaddr;
147  struct in_addr imr_address;
148  int imr_ifindex;
149};
150#define IP_MSFILTER_SIZE(numsrc) (sizeof(struct ip_msfilter) - sizeof(__u32) + (numsrc) * sizeof(__u32))
151struct group_req {
152  __u32 gr_interface;
153  struct sockaddr_storage gr_group;
154};
155struct group_source_req {
156  __u32 gsr_interface;
157  struct sockaddr_storage gsr_group;
158  struct sockaddr_storage gsr_source;
159};
160struct group_filter {
161  __u32 gf_interface;
162  struct sockaddr_storage gf_group;
163  __u32 gf_fmode;
164  __u32 gf_numsrc;
165  struct sockaddr_storage gf_slist[1];
166};
167#define GROUP_FILTER_SIZE(numsrc) (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) + (numsrc) * sizeof(struct sockaddr_storage))
168#endif
169#if __UAPI_DEF_IN_PKTINFO
170struct in_pktinfo {
171  int ipi_ifindex;
172  struct in_addr ipi_spec_dst;
173  struct in_addr ipi_addr;
174};
175#endif
176#if __UAPI_DEF_SOCKADDR_IN
177#define __SOCK_SIZE__ 16
178struct sockaddr_in {
179  __kernel_sa_family_t sin_family;
180  __be16 sin_port;
181  struct in_addr sin_addr;
182  unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) - sizeof(unsigned short int) - sizeof(struct in_addr)];
183};
184#define sin_zero __pad
185#endif
186#if __UAPI_DEF_IN_CLASS
187#define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
188#define IN_CLASSA_NET 0xff000000
189#define IN_CLASSA_NSHIFT 24
190#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
191#define IN_CLASSA_MAX 128
192#define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
193#define IN_CLASSB_NET 0xffff0000
194#define IN_CLASSB_NSHIFT 16
195#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
196#define IN_CLASSB_MAX 65536
197#define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000)
198#define IN_CLASSC_NET 0xffffff00
199#define IN_CLASSC_NSHIFT 8
200#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
201#define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
202#define IN_MULTICAST(a) IN_CLASSD(a)
203#define IN_MULTICAST_NET 0xF0000000
204#define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
205#define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
206#define INADDR_ANY ((unsigned long int) 0x00000000)
207#define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
208#define INADDR_NONE ((unsigned long int) 0xffffffff)
209#define IN_LOOPBACKNET 127
210#define INADDR_LOOPBACK 0x7f000001
211#define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000)
212#define INADDR_UNSPEC_GROUP 0xe0000000U
213#define INADDR_ALLHOSTS_GROUP 0xe0000001U
214#define INADDR_ALLRTRS_GROUP 0xe0000002U
215#define INADDR_MAX_LOCAL_GROUP 0xe00000ffU
216#endif
217#include <asm/byteorder.h>
218#endif
219