Annotation of embedaddon/pimd/include/linux/netinet/in-glibc-2.0.h, revision 1.1.1.1
1.1 misho 1: /* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
2: This file is part of the GNU C Library.
3:
4: The GNU C Library is free software; you can redistribute it and/or modify
5: it under the terms of the GNU General Public License as published by
6: the Free Software Foundation; either version 2, or (at your option)
7: any later version.
8:
9: The GNU C Library is distributed in the hope that it will be useful,
10: but WITHOUT ANY WARRANTY; without even the implied warranty of
11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: GNU General Public License for more details.
13:
14: You should have received a copy of the GNU Library General Public
15: License along with the GNU C Library; see the file COPYING.LIB. If not,
16: write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17: Boston, MA 02111-1307, USA. */
18:
19: #ifndef _NETINET_IN_H
20:
21: #define _NETINET_IN_H 1
22: #include <features.h>
23:
24: #include <sys/socket.h>
25: #include <sys/types.h>
26:
27:
28: __BEGIN_DECLS
29:
30: /* Standard well-defined IP protocols. */
31: enum
32: {
33: IPPROTO_IP = 0, /* Dummy protocol for TCP. */
34: IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */
35: IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */
36: IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */
37: IPPROTO_TCP = 6, /* Transmission Control Protocol. */
38: IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */
39: IPPROTO_PUP = 12, /* PUP protocol. */
40: IPPROTO_UDP = 17, /* User Datagram Protocol. */
41: IPPROTO_IDP = 22, /* XNS IDP protocol. */
42: IPPROTO_IPV6 = 41, /* IPv6-in-IPv4 tunnelling. */
43: IPPROTO_RSVP = 46, /* RSVP Protocol. */
44: IPPROTO_GRE = 47, /* Cisco GRE tunnels (rfc 1701,1702). */
45: IPPROTO_ICMPV6 = 58, /* ICMPv6. */
46: IPPROTO_PIM = 103, /* Protocol Independent Multicast. */
47:
48: IPPROTO_RAW = 255, /* Raw IP packets. */
49: IPPROTO_MAX
50: };
51:
52: /* Standard well-known ports. */
53: enum
54: {
55: IPPORT_ECHO = 7, /* Echo service. */
56: IPPORT_DISCARD = 9, /* Discard transmissions service. */
57: IPPORT_SYSTAT = 11, /* System status service. */
58: IPPORT_DAYTIME = 13, /* Time of day service. */
59: IPPORT_NETSTAT = 15, /* Network status service. */
60: IPPORT_FTP = 21, /* File Transfer Protocol. */
61: IPPORT_TELNET = 23, /* Telnet protocol. */
62: IPPORT_SMTP = 25, /* Simple Mail Transfer Protocol. */
63: IPPORT_TIMESERVER = 37, /* Timeserver service. */
64: IPPORT_NAMESERVER = 42, /* Domain Name Service. */
65: IPPORT_WHOIS = 43, /* Internet Whois service. */
66: IPPORT_MTP = 57,
67:
68: IPPORT_TFTP = 69, /* Trivial File Transfer Protocol. */
69: IPPORT_RJE = 77,
70: IPPORT_FINGER = 79, /* Finger service. */
71: IPPORT_TTYLINK = 87,
72: IPPORT_SUPDUP = 95, /* SUPDUP protocol. */
73:
74:
75: IPPORT_EXECSERVER = 512, /* execd service. */
76: IPPORT_LOGINSERVER = 513, /* rlogind service. */
77: IPPORT_CMDSERVER = 514,
78: IPPORT_EFSSERVER = 520,
79:
80: /* UDP ports. */
81: IPPORT_BIFFUDP = 512,
82: IPPORT_WHOSERVER = 513,
83: IPPORT_ROUTESERVER = 520,
84:
85: /* Ports less than this value are reserved for privileged processes. */
86: IPPORT_RESERVED = 1024,
87:
88: /* Ports greater this value are reserved for (non-privileged) servers. */
89: IPPORT_USERRESERVED = 5000
90: };
91:
92:
93: /* Internet address. */
94: struct in_addr
95: {
96: unsigned int s_addr;
97: };
98:
99:
100: /* Definitions of the bits in an Internet address integer.
101:
102: On subnets, host and network parts are found according to
103: the subnet mask, not these masks. */
104:
105: #define IN_CLASSA(a) ((((unsigned) (a)) & 0x80000000) == 0)
106: #define IN_CLASSA_NET 0xff000000
107: #define IN_CLASSA_NSHIFT 24
108: #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
109: #define IN_CLASSA_MAX 128
110:
111: #define IN_CLASSB(a) ((((unsigned) (a)) & 0xc0000000) == 0x80000000)
112: #define IN_CLASSB_NET 0xffff0000
113: #define IN_CLASSB_NSHIFT 16
114: #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
115: #define IN_CLASSB_MAX 65536
116:
117: #define IN_CLASSC(a) ((((unsigned) (a)) & 0xc0000000) == 0xc0000000)
118: #define IN_CLASSC_NET 0xffffff00
119: #define IN_CLASSC_NSHIFT 8
120: #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
121:
122: #define IN_CLASSD(a) ((((unsigned) (a)) & 0xf0000000) == 0xe0000000)
123: #define IN_MULTICAST(a) IN_CLASSD(a)
124:
125: #define IN_EXPERIMENTAL(a) ((((unsigned) (a)) & 0xe0000000) == 0xe0000000)
126: #define IN_BADCLASS(a) ((((unsigned) (a)) & 0xf0000000) == 0xf0000000)
127:
128: /* Address to accept any incoming messages. */
129: #define INADDR_ANY ((unsigned) 0x00000000)
130: /* Address to send to all hosts. */
131: #define INADDR_BROADCAST ((unsigned) 0xffffffff)
132: /* Address indicating an error return. */
133: #define INADDR_NONE 0xffffffff
134:
135: /* Network number for local host loopback. */
136: #define IN_LOOPBACKNET 127
137: /* Address to loopback in software to local host. */
138: #ifndef INADDR_LOOPBACK
139: #define INADDR_LOOPBACK 0x7f000001 /* Internet address 127.0.0.1. */
140: #endif
141:
142: /* Defines for Multicast INADDR. */
143: #define INADDR_UNSPEC_GROUP ((u_int32_t) 0xe0000000U) /* 224.0.0.0 */
144: #define INADDR_ALLHOSTS_GROUP ((u_int32_t) 0xe0000001U) /* 224.0.0.1 */
145: #define INADDR_ALLRTRS_GROUP ((u_int32_t) 0xe0000002U) /* 224.0.0.2 */
146: #define INADDR_MAX_LOCAL_GROUP ((u_int32_t) 0xe00000ffU) /* 224.0.0.255 */
147:
148:
149: /* Get the definition of the macro to define the common sockaddr members. */
150: #include <sockaddrcom.h>
151:
152:
153: /* Structure describing an Internet socket address. */
154: struct sockaddr_in
155: {
156: __SOCKADDR_COMMON (sin_);
157: unsigned short int sin_port; /* Port number. */
158: struct in_addr sin_addr; /* Internet address. */
159:
160: /* Pad to size of `struct sockaddr'. */
161: unsigned char sin_zero[sizeof(struct sockaddr) -
162: __SOCKADDR_COMMON_SIZE -
163: sizeof(unsigned short int) -
164: sizeof(struct in_addr)];
165: };
166:
167:
168: /* Options for use with `getsockopt' and `setsockopt' at the IP level.
169: The first word in the comment at the right is the data type used;
170: "bool" means a boolean value stored in an `int'. */
171: #define IP_TOS 1 /* int; IP type of service and precedence. */
172: #define IP_TTL 2 /* int; IP time to live. */
173: #define IP_HDRINCL 3 /* int; Header is included with data. */
174: #define IP_OPTIONS 4 /* ip_opts; IP per-packet options. */
175: #define IP_ROUTER_ALERT 5 /* not sure. defined in linux kernel. */
176: #define IP_RECVOPTS 6 /* not sure. defined in linux kernel. */
177: #define IP_RETOPTS 7 /* not sure. defined in linux kernel. */
178: #define IP_PKTINFO 8 /* not sure. defined in linux kernel. */
179: #define IP_PKTOPTIONS 9 /* not sure. defined in linux kernel. */
180: #define IP_MTU_DISCOVER 10 /* not sure. defined in linux kernel. */
181: #define IP_RECVERR 11 /* not sure. defined in linux kernel. */
182: #define IP_RECVTTL 12 /* not sure. defined in linux kernel. */
183: #define IP_RECVTOS 13 /* not sure. defined in linux kernel. */
184: #define IP_MTU 14 /* not sure. defined in linux kernel. */
185: #define IP_MULTICAST_IF 32 /* in_addr; set/get IP multicast i/f */
186: #define IP_MULTICAST_TTL 33 /* u_char; set/get IP multicast ttl */
187: #define IP_MULTICAST_LOOP 34 /* i_char; set/get IP multicast loopback */
188: #define IP_ADD_MEMBERSHIP 35 /* ip_mreq; add an IP group membership */
189: #define IP_DROP_MEMBERSHIP 36 /* ip_mreq; drop an IP group membership */
190:
191: /* BSD compatibility */
192: #define IP_RECVRETOPTS IP_RETOPTS
193:
194: /* IP_MTU_DISCOVER values */
195: #define IP_PMTUDISC_DONT 0 /* Never send DF frames */
196: #define IP_PMTUDISC_WANT 1 /* Use per route hints */
197: #define IP_PMTUDISC_DO 2 /* Always DF */
198:
199: /* To select the IP level. */
200: #define SOL_IP 0
201:
202: /* Structure used to describe IP options for IP_OPTIONS. The `ip_dst'
203: field is used for the first-hop gateway when using a source route
204: (this gets put into the header proper). */
205: struct ip_opts
206: {
207: struct in_addr ip_dst; /* First hop; zero without source route. */
208: char ip_opts[40]; /* Actually variable in size. */
209: };
210:
211: /* Structure used for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. */
212: struct ip_mreq
213: {
214: struct in_addr imr_multiaddr; /* IP multicast address of group */
215: struct in_addr imr_interface; /* local IP address of interface */
216: };
217:
218: /* Functions to convert between host and network byte order.
219:
220: Please note that these functions normally take `unsigned long int' or
221: `unsigned short int' values as arguments and also return them. But
222: this was a short-sighted decision since on different systems the types
223: may have different representations but the values are always the same. */
224:
225: extern u_int32_t ntohl __P ((u_int32_t __netlong));
226: extern u_int16_t ntohs __P ((u_int16_t __netshort));
227: extern u_int32_t htonl __P ((u_int32_t __hostlong));
228: extern u_int16_t htons __P ((u_int16_t __hostshort));
229:
230: #include <endian.h>
231:
232: #if __BYTE_ORDER == __BIG_ENDIAN
233: /* The host byte order is the same as network byte order,
234: so these functions are all just identity. */
235: #define ntohl(x) (x)
236: #define ntohs(x) (x)
237: #define htonl(x) (x)
238: #define htons(x) (x)
239: #endif
240:
241:
242: /* Bind socket to a priviledged IP port. */
243: extern int bindresvport __P ((int __sockfd, struct sockaddr_in *__sock_in));
244:
245: __END_DECLS
246:
247: #endif /* netinet/in.h */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>