Annotation of embedaddon/pimdd/include/sunos-gcc/netinet/in.h, revision 1.1.1.1
1.1 misho 1: /* @(#)in.h 1.19 90/07/27 SMI; from UCB 7.5 2/22/88 */
2:
3: /*
4: * Copyright (c) 1982, 1986 Regents of the University of California.
5: * All rights reserved.
6: *
7: * Redistribution and use in source and binary forms are permitted
8: * provided that this notice is preserved and that due credit is given
9: * to the University of California at Berkeley. The name of the University
10: * may not be used to endorse or promote products derived from this
11: * software without specific prior written permission. This software
12: * is provided ``as is'' without express or implied warranty.
13: */
14:
15: /*
16: * Constants and structures defined by the internet system,
17: * Per RFC 790, September 1981.
18: */
19:
20: #ifndef _netinet_in_h
21: #define _netinet_in_h
22:
23: /*
24: * Protocols
25: */
26: #define IPPROTO_IP 0 /* dummy for IP */
27: #define IPPROTO_ICMP 1 /* control message protocol */
28: #define IPPROTO_IGMP 2 /* group control protocol */
29: #define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
30: #define IPPROTO_IPIP 4 /* IP inside IP */
31: #define IPPROTO_TCP 6 /* tcp */
32: #define IPPROTO_EGP 8 /* exterior gateway protocol */
33: #define IPPROTO_PUP 12 /* pup */
34: #define IPPROTO_UDP 17 /* user datagram protocol */
35: #define IPPROTO_IDP 22 /* xns idp */
36: #define IPPROTO_HELLO 63 /* "hello" routing protocol */
37: #define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */
38: #define IPPROTO_RSVP 46 /* resource reservation proto*/
39: #define IPPROTO_PIM 103 /* Protocol Independent Mcast*/
40: #define IPPROTO_RAW 255 /* raw IP packet */
41: #define IPPROTO_MAX 256
42:
43: /*
44: * Port/socket numbers: network standard functions
45: */
46: #define IPPORT_ECHO 7
47: #define IPPORT_DISCARD 9
48: #define IPPORT_SYSTAT 11
49: #define IPPORT_DAYTIME 13
50: #define IPPORT_NETSTAT 15
51: #define IPPORT_FTP 21
52: #define IPPORT_TELNET 23
53: #define IPPORT_SMTP 25
54: #define IPPORT_TIMESERVER 37
55: #define IPPORT_NAMESERVER 42
56: #define IPPORT_WHOIS 43
57: #define IPPORT_MTP 57
58:
59: /*
60: * Port/socket numbers: host specific functions
61: */
62: #define IPPORT_TFTP 69
63: #define IPPORT_RJE 77
64: #define IPPORT_FINGER 79
65: #define IPPORT_TTYLINK 87
66: #define IPPORT_SUPDUP 95
67:
68: /*
69: * UNIX TCP sockets
70: */
71: #define IPPORT_EXECSERVER 512
72: #define IPPORT_LOGINSERVER 513
73: #define IPPORT_CMDSERVER 514
74: #define IPPORT_EFSSERVER 520
75:
76: /*
77: * UNIX UDP sockets
78: */
79: #define IPPORT_BIFFUDP 512
80: #define IPPORT_WHOSERVER 513
81: #define IPPORT_ROUTESERVER 520 /* 520+1 also used */
82:
83: /*
84: * Ports < IPPORT_RESERVED are reserved for
85: * privileged processes (e.g. root).
86: * Ports > IPPORT_USERRESERVED are reserved
87: * for servers, not necessarily privileged.
88: */
89: #define IPPORT_RESERVED 1024
90: #define IPPORT_USERRESERVED 5000
91:
92: /*
93: * Link numbers
94: */
95: #define IMPLINK_IP 155
96: #define IMPLINK_LOWEXPER 156
97: #define IMPLINK_HIGHEXPER 158
98:
99: /*
100: * Internet address
101: * This definition contains obsolete fields for compatibility
102: * with SunOS 3.x and 4.2bsd. The presence of subnets renders
103: * divisions into fixed fields misleading at best. New code
104: * should use only the s_addr field.
105: */
106: struct in_addr {
107: union {
108: struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
109: struct { u_short s_w1,s_w2; } S_un_w;
110: u_long S_addr;
111: } S_un;
112: #define s_addr S_un.S_addr /* should be used for all code */
113: #define s_host S_un.S_un_b.s_b2 /* OBSOLETE: host on imp */
114: #define s_net S_un.S_un_b.s_b1 /* OBSOLETE: network */
115: #define s_imp S_un.S_un_w.s_w2 /* OBSOLETE: imp */
116: #define s_impno S_un.S_un_b.s_b4 /* OBSOLETE: imp # */
117: #define s_lh S_un.S_un_b.s_b3 /* OBSOLETE: logical host */
118: };
119:
120: /*
121: * Definitions of bits in internet address integers.
122: * On subnets, the decomposition of addresses to host and net parts
123: * is done according to subnet mask, not the masks here.
124: */
125: #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
126: #define IN_CLASSA_NET 0xff000000
127: #define IN_CLASSA_NSHIFT 24
128: #define IN_CLASSA_HOST 0x00ffffff
129: #define IN_CLASSA_MAX 128
130:
131: #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
132: #define IN_CLASSB_NET 0xffff0000
133: #define IN_CLASSB_NSHIFT 16
134: #define IN_CLASSB_HOST 0x0000ffff
135: #define IN_CLASSB_MAX 65536
136:
137: #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
138: #define IN_CLASSC_NET 0xffffff00
139: #define IN_CLASSC_NSHIFT 8
140: #define IN_CLASSC_HOST 0x000000ff
141:
142: #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
143: #define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
144: #define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
145: #define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
146: #define IN_MULTICAST(i) IN_CLASSD(i)
147:
148: #define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000)
149: #define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000)
150:
151: #define INADDR_ANY (u_long)0x00000000
152: #define INADDR_LOOPBACK (u_long)0x7F000001
153: #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */
154:
155: #define INADDR_UNSPEC_GROUP (u_long)0xe0000000 /* 224.0.0.0 */
156: #define INADDR_ALLHOSTS_GROUP (u_long)0xe0000001 /* 224.0.0.1 */
157: #define INADDR_MAX_LOCAL_GROUP (u_long)0xe00000ff /* 224.0.0.255 */
158:
159: #define IN_LOOPBACKNET 127 /* official! */
160:
161: /*
162: * Define a macro to stuff the loopback address into an Internet address
163: */
164: #define IN_SET_LOOPBACK_ADDR(a) {(a)->sin_addr.s_addr = htonl(INADDR_LOOPBACK); \
165: (a)->sin_family = AF_INET;}
166:
167: /*
168: * Socket address, internet style.
169: */
170: struct sockaddr_in {
171: short sin_family;
172: u_short sin_port;
173: struct in_addr sin_addr;
174: char sin_zero[8];
175: };
176:
177: /*
178: * Options for use with [gs]etsockopt at the IP level.
179: */
180: #define IP_OPTIONS 1 /* set/get IP per-packet options */
181: #define IP_MULTICAST_IF 2 /* set/get IP multicast interface */
182: #define IP_MULTICAST_TTL 3 /* set/get IP multicast timetolive */
183: #define IP_MULTICAST_LOOP 4 /* set/get IP multicast loopback */
184: #define IP_ADD_MEMBERSHIP 5 /* add an IP group membership */
185: #define IP_DROP_MEMBERSHIP 6 /* drop an IP group membership */
186: #define IP_MULTICAST_VIF 7 /* set/get IP mcast vir. interface */
187: #define IP_RSVP_ON 8 /* set rsvp var. in kernel */
188: #define IP_RSVP_OFF 9 /* unset rsvp var in kernel */
189: #define IP_RSVP_VIF_ON 10 /* set rsvp per-vif socket */
190: #define IP_RSVP_VIF_OFF 11 /* unset rsvp per-vif socket */
191:
192: #define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
193: #define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
194: #define IP_MAX_MEMBERSHIPS 20 /* per socket; must fit in one mbuf */
195:
196: /*
197: * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
198: */
199: struct ip_mreq {
200: struct in_addr imr_multiaddr; /* IP multicast address of group */
201: struct in_addr imr_interface; /* local IP address of interface */
202: };
203:
204: #if !defined(__vax__) && !defined(ntohl) && !defined(__i386__)
205: /*
206: * Macros for number representation conversion.
207: */
208: #define ntohl(x) (x)
209: #define ntohs(x) (x)
210: #define htonl(x) (x)
211: #define htons(x) (x)
212: #endif
213:
214: #if !defined(ntohl) && (defined(__vax__) || defined(__i386__))
215: u_short ntohs(), htons();
216: u_long ntohl(), htonl();
217: #endif
218:
219: #ifdef KERNEL
220: extern struct domain inetdomain;
221: extern struct protosw inetsw[];
222: struct in_addr in_makeaddr();
223: u_long in_netof(), in_lnaof();
224: #endif
225:
226: #endif /*!_netinet_in_h*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>