in.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011: <waltje@uWalt.NL.Mugnet.ORG>
012:
013:
014:
015:
016:
017:
018: #ifndef _LINUX_IN_H
019: #define _LINUX_IN_H
020:
021: #include <linux/types.h>
022: #include <linux/socket.h>
023:
024:
025: enum {
026: IPPROTO_IP = 0,
027: IPPROTO_ICMP = 1,
028: IPPROTO_IGMP = 2,
029: IPPROTO_IPIP = 4,
030: IPPROTO_TCP = 6,
031: IPPROTO_EGP = 8,
032: IPPROTO_PUP = 12,
033: IPPROTO_UDP = 17,
034: IPPROTO_IDP = 22,
035: IPPROTO_DCCP = 33,
036: IPPROTO_RSVP = 46,
037: IPPROTO_GRE = 47,
038:
039: IPPROTO_IPV6 = 41,
040:
041: IPPROTO_ESP = 50,
042: IPPROTO_AH = 51,
043: IPPROTO_BEETPH = 94,
044: IPPROTO_PIM = 103,
045:
046: IPPROTO_COMP = 108,
047: IPPROTO_SCTP = 132,
048: IPPROTO_UDPLITE = 136,
049:
050: IPPROTO_RAW = 255,
051: IPPROTO_MAX
052: };
053:
054:
055:
056: struct in_addr {
057: __be32 s_addr;
058: };
059:
060: #define IP_TOS 1
061: #define IP_TTL 2
062: #define IP_HDRINCL 3
063: #define IP_OPTIONS 4
064: #define IP_ROUTER_ALERT 5
065: #define IP_RECVOPTS 6
066: #define IP_RETOPTS 7
067: #define IP_PKTINFO 8
068: #define IP_PKTOPTIONS 9
069: #define IP_MTU_DISCOVER 10
070: #define IP_RECVERR 11
071: #define IP_RECVTTL 12
072: #define IP_RECVTOS 13
073: #define IP_MTU 14
074: #define IP_FREEBIND 15
075: #define IP_IPSEC_POLICY 16
076: #define IP_XFRM_POLICY 17
077: #define IP_PASSSEC 18
078: #define IP_TRANSPARENT 19
079:
080:
081: #define IP_RECVRETOPTS IP_RETOPTS
082:
083:
084: #define IP_ORIGDSTADDR 20
085: #define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
086:
087: #define IP_MINTTL 21
088: #define IP_NODEFRAG 22
089:
090:
091: #define IP_PMTUDISC_DONT 0
092: #define IP_PMTUDISC_WANT 1
093: #define IP_PMTUDISC_DO 2
094: #define IP_PMTUDISC_PROBE 3
095:
096: #define IP_MULTICAST_IF 32
097: #define IP_MULTICAST_TTL 33
098: #define IP_MULTICAST_LOOP 34
099: #define IP_ADD_MEMBERSHIP 35
100: #define IP_DROP_MEMBERSHIP 36
101: #define IP_UNBLOCK_SOURCE 37
102: #define IP_BLOCK_SOURCE 38
103: #define IP_ADD_SOURCE_MEMBERSHIP 39
104: #define IP_DROP_SOURCE_MEMBERSHIP 40
105: #define IP_MSFILTER 41
106: #define MCAST_JOIN_GROUP 42
107: #define MCAST_BLOCK_SOURCE 43
108: #define MCAST_UNBLOCK_SOURCE 44
109: #define MCAST_LEAVE_GROUP 45
110: #define MCAST_JOIN_SOURCE_GROUP 46
111: #define MCAST_LEAVE_SOURCE_GROUP 47
112: #define MCAST_MSFILTER 48
113: #define IP_MULTICAST_ALL 49
114:
115: #define MCAST_EXCLUDE 0
116: #define MCAST_INCLUDE 1
117:
118:
119: #define IP_DEFAULT_MULTICAST_TTL 1
120: #define IP_DEFAULT_MULTICAST_LOOP 1
121:
122:
123:
124: struct ip_mreq {
125: struct in_addr imr_multiaddr;
126: struct in_addr imr_interface;
127: };
128:
129: struct ip_mreqn {
130: struct in_addr imr_multiaddr;
131: struct in_addr imr_address;
132: int imr_ifindex;
133: };
134:
135: struct ip_mreq_source {
136: __be32 imr_multiaddr;
137: __be32 imr_interface;
138: __be32 imr_sourceaddr;
139: };
140:
141: struct ip_msfilter {
142: __be32 imsf_multiaddr;
143: __be32 imsf_interface;
144: __u32 imsf_fmode;
145: __u32 imsf_numsrc;
146: __be32 imsf_slist[1];
147: };
148:
149: #define IP_MSFILTER_SIZE(numsrc) \
150: (sizeof(struct ip_msfilter) - sizeof(__u32) \
151: + (numsrc) * sizeof(__u32))
152:
153: struct group_req {
154: __u32 gr_interface;
155: struct __kernel_sockaddr_storage gr_group;
156: };
157:
158: struct group_source_req {
159: __u32 gsr_interface;
160: struct __kernel_sockaddr_storage gsr_group;
161: struct __kernel_sockaddr_storage gsr_source;
162: };
163:
164: struct group_filter {
165: __u32 gf_interface;
166: struct __kernel_sockaddr_storage gf_group;
167: __u32 gf_fmode;
168: __u32 gf_numsrc;
169: struct __kernel_sockaddr_storage gf_slist[1];
170: };
171:
172: #define GROUP_FILTER_SIZE(numsrc) \
173: (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) \
174: + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
175:
176: struct in_pktinfo {
177: int ipi_ifindex;
178: struct in_addr ipi_spec_dst;
179: struct in_addr ipi_addr;
180: };
181:
182:
183: #define __SOCK_SIZE__ 16
184: struct sockaddr_in {
185: __kernel_sa_family_t sin_family;
186: __be16 sin_port;
187: struct in_addr sin_addr;
188:
189:
190: unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
191: sizeof(unsigned short int) - sizeof(struct in_addr)];
192: };
193: #define sin_zero __pad
194:
195:
196:
197:
198:
199:
200:
201: #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
202: #define IN_CLASSA_NET 0xff000000
203: #define IN_CLASSA_NSHIFT 24
204: #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
205: #define IN_CLASSA_MAX 128
206:
207: #define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
208: #define IN_CLASSB_NET 0xffff0000
209: #define IN_CLASSB_NSHIFT 16
210: #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
211: #define IN_CLASSB_MAX 65536
212:
213: #define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000)
214: #define IN_CLASSC_NET 0xffffff00
215: #define IN_CLASSC_NSHIFT 8
216: #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
217:
218: #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
219: #define IN_MULTICAST(a) IN_CLASSD(a)
220: #define IN_MULTICAST_NET 0xF0000000
221:
222: #define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
223: #define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
224:
225:
226: #define INADDR_ANY ((unsigned long int) 0x00000000)
227:
228:
229: #define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
230:
231:
232: #define INADDR_NONE ((unsigned long int) 0xffffffff)
233:
234:
235: #define IN_LOOPBACKNET 127
236:
237:
238: #define INADDR_LOOPBACK 0x7f000001
239: #define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000)
240:
241:
242: #define INADDR_UNSPEC_GROUP 0xe0000000U
243: #define INADDR_ALLHOSTS_GROUP 0xe0000001U
244: #define INADDR_ALLRTRS_GROUP 0xe0000002U
245: #define INADDR_MAX_LOCAL_GROUP 0xe00000ffU
246:
247:
248:
249: #include <asm/byteorder.h>
250:
251:
252: #endif
253:
© Andrew Scott 2006 -
2025,
All Rights Reserved