source: trunk/third/xntp/include/in.h @ 10832

Revision 10832, 7.3 KB checked in by brlewis, 27 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r10831, which included commits to RCS files with non-trunk default branches.
Line 
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_ST              5               /* st */
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_OSPF            89              /* Open SPF IGP */
39
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 */
106struct 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 */
170struct 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 
187#define IP_DEFAULT_MULTICAST_TTL   1    /* normally limit m'casts to 1 hop  */
188#define IP_DEFAULT_MULTICAST_LOOP  1    /* normally hear sends if a member  */
189#define IP_MAX_MEMBERSHIPS         20   /* per socket; must fit in one mbuf */
190
191/*
192 * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
193 */
194struct ip_mreq {
195        struct in_addr  imr_multiaddr;  /* IP multicast address of group */
196        struct in_addr  imr_interface;  /* local IP address of interface */
197};
198
199#if !defined(vax) && !defined(ntohl) && !defined(i386)
200/*
201 * Macros for number representation conversion.
202 */
203#define ntohl(x)        (x)
204#define ntohs(x)        (x)
205#define htonl(x)        (x)
206#define htons(x)        (x)
207#endif
208
209#if !defined(ntohl) && (defined(vax) || defined(i386))
210u_short ntohs(), htons();
211u_int32 ntohl(), htonl();
212#endif
213
214#ifdef KERNEL
215extern  struct domain inetdomain;
216extern  struct protosw inetsw[];
217struct  in_addr in_makeaddr();
218u_long  in_netof(), in_lnaof();
219#endif
220
221#ifndef BYTE_ORDER
222/*
223 * Definitions for byte order,
224 * according to byte significance from low address to high.
225 */
226#define LITTLE_ENDIAN   1234    /* least-significant byte first (vax) */
227#define BIG_ENDIAN      4321    /* most-significant byte first (IBM, net) */
228#define PDP_ENDIAN      3412    /* LSB first in word, MSW first in long (pdp) */
229
230#if defined(vax) || defined(i386)
231#define BYTE_ORDER      LITTLE_ENDIAN
232#else
233#define BYTE_ORDER      BIG_ENDIAN      /* mc68000, tahoe, most others */
234#endif
235#endif BYTE_ORDER
236
237/*
238 * Macros for number representation conversion.
239 */
240#if BYTE_ORDER==LITTLE_ENDIAN
241#define NTOHL(d) ((d) = ntohl((d)))
242#define NTOHS(d) ((d) = ntohs((d)))
243#define HTONL(d) ((d) = htonl((d)))
244#define HTONS(d) ((d) = htons((d)))
245#else
246#define ntohl(x)        (x)
247#define ntohs(x)        (x)
248#define htonl(x)        (x)
249#define htons(x)        (x)
250#define NTOHL(d)
251#define NTOHS(d)
252#define HTONL(d)
253#define HTONS(d)
254#endif
255
256#endif /*!_netinet_in_h*/
Note: See TracBrowser for help on using the repository browser.