Chameleon

Chameleon Svn Source Tree

Root/branches/slice/trunkM/i386/include/netinet/in.h

1/*
2 * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28/*
29 * Copyright (c) 1982, 1986, 1990, 1993
30 *The Regents of the University of California. All rights reserved.
31 *
32 * Redistribution and use in source and binary forms, with or without
33 * modification, are permitted provided that the following conditions
34 * are met:
35 * 1. Redistributions of source code must retain the above copyright
36 * notice, this list of conditions and the following disclaimer.
37 * 2. Redistributions in binary form must reproduce the above copyright
38 * notice, this list of conditions and the following disclaimer in the
39 * documentation and/or other materials provided with the distribution.
40 * 3. All advertising materials mentioning features or use of this software
41 * must display the following acknowledgement:
42 *This product includes software developed by the University of
43 *California, Berkeley and its contributors.
44 * 4. Neither the name of the University nor the names of its contributors
45 * may be used to endorse or promote products derived from this software
46 * without specific prior written permission.
47 *
48 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
49 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
52 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 * SUCH DAMAGE.
59 *
60 *@(#)in.h8.3 (Berkeley) 1/3/94
61 * $FreeBSD: src/sys/netinet/in.h,v 1.48.2.2 2001/04/21 14:53:06 ume Exp $
62 */
63
64#ifndef _NETINET_IN_H_
65#define _NETINET_IN_H_
66#include <sys/appleapiopts.h>
67#include <sys/_types.h>
68#include <stdint.h>/* uint(8|16|32)_t */
69
70#ifndef _IN_ADDR_T
71#define _IN_ADDR_T
72typedef__uint32_tin_addr_t;/* base type for internet address */
73#endif
74
75#ifndef _IN_PORT_T
76#define _IN_PORT_T
77typedef__uint16_tin_port_t;
78#endif
79
80/*
81 * POSIX 1003.1-2003
82 * "Inclusion of the <netinet/in.h> header may also make visible all
83 * symbols from <inttypes.h> and <sys/socket.h>".
84 */
85#include <sys/socket.h>
86
87/*
88 * The following two #includes insure htonl and family are defined
89 */
90#include <machine/endian.h>
91#include <sys/_endian.h>
92
93/*
94 * Constants and structures defined by the internet system,
95 * Per RFC 790, September 1981, and numerous additions.
96 */
97
98/*
99 * Protocols (RFC 1700)
100 */
101#defineIPPROTO_IP0/* dummy for IP */
102#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
103#defineIPPROTO_HOPOPTS0/* IP6 hop-by-hop options */
104#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
105#defineIPPROTO_ICMP1/* control message protocol */
106#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
107#defineIPPROTO_IGMP2/* group mgmt protocol */
108#defineIPPROTO_GGP3/* gateway^2 (deprecated) */
109#define IPPROTO_IPV44 /* IPv4 encapsulation */
110#define IPPROTO_IPIPIPPROTO_IPV4/* for compatibility */
111#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
112#defineIPPROTO_TCP6/* tcp */
113#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
114#defineIPPROTO_ST7/* Stream protocol II */
115#defineIPPROTO_EGP8/* exterior gateway protocol */
116#defineIPPROTO_PIGP9/* private interior gateway */
117#defineIPPROTO_RCCMON10/* BBN RCC Monitoring */
118#defineIPPROTO_NVPII11/* network voice protocol*/
119#defineIPPROTO_PUP12/* pup */
120#defineIPPROTO_ARGUS13/* Argus */
121#defineIPPROTO_EMCON14/* EMCON */
122#defineIPPROTO_XNET15/* Cross Net Debugger */
123#defineIPPROTO_CHAOS16/* Chaos*/
124#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
125#defineIPPROTO_UDP17/* user datagram protocol */
126#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
127#defineIPPROTO_MUX18/* Multiplexing */
128#defineIPPROTO_MEAS19/* DCN Measurement Subsystems */
129#defineIPPROTO_HMP20/* Host Monitoring */
130#defineIPPROTO_PRM21/* Packet Radio Measurement */
131#defineIPPROTO_IDP22/* xns idp */
132#defineIPPROTO_TRUNK123/* Trunk-1 */
133#defineIPPROTO_TRUNK224/* Trunk-2 */
134#defineIPPROTO_LEAF125/* Leaf-1 */
135#defineIPPROTO_LEAF226/* Leaf-2 */
136#defineIPPROTO_RDP27/* Reliable Data */
137#defineIPPROTO_IRTP28/* Reliable Transaction */
138#defineIPPROTO_TP29 /* tp-4 w/ class negotiation */
139#defineIPPROTO_BLT30/* Bulk Data Transfer */
140#defineIPPROTO_NSP31/* Network Services */
141#defineIPPROTO_INP32/* Merit Internodal */
142#defineIPPROTO_SEP33/* Sequential Exchange */
143#defineIPPROTO_3PC34/* Third Party Connect */
144#defineIPPROTO_IDPR35/* InterDomain Policy Routing */
145#defineIPPROTO_XTP36/* XTP */
146#defineIPPROTO_DDP37/* Datagram Delivery */
147#defineIPPROTO_CMTP38/* Control Message Transport */
148#defineIPPROTO_TPXX39/* TP++ Transport */
149#defineIPPROTO_IL40/* IL transport protocol */
150#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
151#define IPPROTO_IPV641/* IP6 header */
152#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
153#defineIPPROTO_SDRP42/* Source Demand Routing */
154#define IPPROTO_ROUTING43/* IP6 routing header */
155#define IPPROTO_FRAGMENT44/* IP6 fragmentation header */
156#defineIPPROTO_IDRP45/* InterDomain Routing*/
157#define IPPROTO_RSVP46 /* resource reservation */
158#defineIPPROTO_GRE47/* General Routing Encap. */
159#defineIPPROTO_MHRP48/* Mobile Host Routing */
160#defineIPPROTO_BHA49/* BHA */
161#defineIPPROTO_ESP50/* IP6 Encap Sec. Payload */
162#defineIPPROTO_AH51/* IP6 Auth Header */
163#defineIPPROTO_INLSP52/* Integ. Net Layer Security */
164#defineIPPROTO_SWIPE53/* IP with encryption */
165#defineIPPROTO_NHRP54/* Next Hop Resolution */
166/* 55-57: Unassigned */
167#define IPPROTO_ICMPV658/* ICMP6 */
168#define IPPROTO_NONE59/* IP6 no next header */
169#define IPPROTO_DSTOPTS60/* IP6 destination option */
170#defineIPPROTO_AHIP61/* any host internal protocol */
171#defineIPPROTO_CFTP62/* CFTP */
172#defineIPPROTO_HELLO63/* "hello" routing protocol */
173#defineIPPROTO_SATEXPAK64/* SATNET/Backroom EXPAK */
174#defineIPPROTO_KRYPTOLAN65/* Kryptolan */
175#defineIPPROTO_RVD66/* Remote Virtual Disk */
176#defineIPPROTO_IPPC67/* Pluribus Packet Core */
177#defineIPPROTO_ADFS68/* Any distributed FS */
178#defineIPPROTO_SATMON69/* Satnet Monitoring */
179#defineIPPROTO_VISA70/* VISA Protocol */
180#defineIPPROTO_IPCV71/* Packet Core Utility */
181#defineIPPROTO_CPNX72/* Comp. Prot. Net. Executive */
182#defineIPPROTO_CPHB73/* Comp. Prot. HeartBeat */
183#defineIPPROTO_WSN74/* Wang Span Network */
184#defineIPPROTO_PVP75/* Packet Video Protocol */
185#defineIPPROTO_BRSATMON76/* BackRoom SATNET Monitoring */
186#defineIPPROTO_ND77/* Sun net disk proto (temp.) */
187#defineIPPROTO_WBMON78/* WIDEBAND Monitoring */
188#defineIPPROTO_WBEXPAK79/* WIDEBAND EXPAK */
189#defineIPPROTO_EON80/* ISO cnlp */
190#defineIPPROTO_VMTP81/* VMTP */
191#defineIPPROTO_SVMTP82/* Secure VMTP */
192#defineIPPROTO_VINES83/* Banyon VINES */
193#defineIPPROTO_TTP84/* TTP */
194#defineIPPROTO_IGP85/* NSFNET-IGP */
195#defineIPPROTO_DGP86/* dissimilar gateway prot. */
196#defineIPPROTO_TCF87/* TCF */
197#defineIPPROTO_IGRP88/* Cisco/GXS IGRP */
198#defineIPPROTO_OSPFIGP89/* OSPFIGP */
199#defineIPPROTO_SRPC90/* Strite RPC protocol */
200#defineIPPROTO_LARP91/* Locus Address Resoloution */
201#defineIPPROTO_MTP92/* Multicast Transport */
202#defineIPPROTO_AX2593/* AX.25 Frames */
203#defineIPPROTO_IPEIP94/* IP encapsulated in IP */
204#defineIPPROTO_MICP95/* Mobile Int.ing control */
205#defineIPPROTO_SCCSP96/* Semaphore Comm. security */
206#defineIPPROTO_ETHERIP97/* Ethernet IP encapsulation */
207#defineIPPROTO_ENCAP98/* encapsulation header */
208#defineIPPROTO_APES99/* any private encr. scheme */
209#defineIPPROTO_GMTP100/* GMTP*/
210#defineIPPROTO_IPCOMP108/* payload compression (IPComp) */
211/* 101-254: Partly Unassigned */
212#defineIPPROTO_PIM103/* Protocol Independent Mcast */
213#defineIPPROTO_PGM113/* PGM */
214/* 255: Reserved */
215/* BSD Private, local use, namespace incursion */
216#defineIPPROTO_DIVERT254/* divert pseudo-protocol */
217#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
218#defineIPPROTO_RAW255/* raw IP packet */
219
220#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
221#defineIPPROTO_MAX256
222
223/* last return value of *_input(), meaning "all job for this pkt is done". */
224#defineIPPROTO_DONE257
225#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
226
227/*
228 * Local port number conventions:
229 *
230 * When a user does a bind(2) or connect(2) with a port number of zero,
231 * a non-conflicting local port address is chosen.
232 * The default range is IPPORT_RESERVED through
233 * IPPORT_USERRESERVED, although that is settable by sysctl.
234 *
235 * A user may set the IPPROTO_IP option IP_PORTRANGE to change this
236 * default assignment range.
237 *
238 * The value IP_PORTRANGE_DEFAULT causes the default behavior.
239 *
240 * The value IP_PORTRANGE_HIGH changes the range of candidate port numbers
241 * into the "high" range. These are reserved for client outbound connections
242 * which do not want to be filtered by any firewalls.
243 *
244 * The value IP_PORTRANGE_LOW changes the range to the "low" are
245 * that is (by convention) restricted to privileged processes. This
246 * convention is based on "vouchsafe" principles only. It is only secure
247 * if you trust the remote host to restrict these ports.
248 *
249 * The default range of ports and the high range can be changed by
250 * sysctl(3). (net.inet.ip.port{hi,low}{first,last}_auto)
251 *
252 * Changing those values has bad security implications if you are
253 * using a a stateless firewall that is allowing packets outside of that
254 * range in order to allow transparent outgoing connections.
255 *
256 * Such a firewall configuration will generally depend on the use of these
257 * default values. If you change them, you may find your Security
258 * Administrator looking for you with a heavy object.
259 *
260 * For a slightly more orthodox text view on this:
261 *
262 * ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers
263 *
264 * port numbers are divided into three ranges:
265 *
266 * 0 - 1023 Well Known Ports
267 * 1024 - 49151 Registered Ports
268 * 49152 - 65535 Dynamic and/or Private Ports
269 *
270 */
271
272#define__DARWIN_IPPORT_RESERVED1024
273
274#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
275/*
276 * Ports < IPPORT_RESERVED are reserved for
277 * privileged processes (e.g. root). (IP_PORTRANGE_LOW)
278 * Ports > IPPORT_USERRESERVED are reserved
279 * for servers, not necessarily privileged. (IP_PORTRANGE_DEFAULT)
280 */
281#ifndef IPPORT_RESERVED
282#defineIPPORT_RESERVED__DARWIN_IPPORT_RESERVED
283#endif
284#defineIPPORT_USERRESERVED5000
285
286/*
287 * Default local port range to use by setting IP_PORTRANGE_HIGH
288 */
289#defineIPPORT_HIFIRSTAUTO49152
290#defineIPPORT_HILASTAUTO65535
291
292/*
293 * Scanning for a free reserved port return a value below IPPORT_RESERVED,
294 * but higher than IPPORT_RESERVEDSTART. Traditionally the start value was
295 * 512, but that conflicts with some well-known-services that firewalls may
296 * have a fit if we use.
297 */
298#define IPPORT_RESERVEDSTART600
299#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
300
301/*
302 * Internet address (a structure for historical reasons)
303 */
304struct in_addr {
305in_addr_t s_addr;
306};
307
308/*
309 * Definitions of bits in internet address integers.
310 * On subnets, the decomposition of addresses to host and net parts
311 * is done according to subnet mask, not the masks here.
312 */
313#defineINADDR_ANY(u_int32_t)0x00000000
314#defineINADDR_BROADCAST(u_int32_t)0xffffffff/* must be masked */
315
316#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
317#defineIN_CLASSA(i)(((u_int32_t)(i) & 0x80000000) == 0)
318#defineIN_CLASSA_NET0xff000000
319#defineIN_CLASSA_NSHIFT24
320#defineIN_CLASSA_HOST0x00ffffff
321#defineIN_CLASSA_MAX128
322
323#defineIN_CLASSB(i)(((u_int32_t)(i) & 0xc0000000) == 0x80000000)
324#defineIN_CLASSB_NET0xffff0000
325#defineIN_CLASSB_NSHIFT16
326#defineIN_CLASSB_HOST0x0000ffff
327#defineIN_CLASSB_MAX65536
328
329#defineIN_CLASSC(i)(((u_int32_t)(i) & 0xe0000000) == 0xc0000000)
330#defineIN_CLASSC_NET0xffffff00
331#defineIN_CLASSC_NSHIFT8
332#defineIN_CLASSC_HOST0x000000ff
333
334#defineIN_CLASSD(i)(((u_int32_t)(i) & 0xf0000000) == 0xe0000000)
335#defineIN_CLASSD_NET0xf0000000/* These ones aren't really */
336#defineIN_CLASSD_NSHIFT28/* net and host fields, but */
337#defineIN_CLASSD_HOST0x0fffffff/* routing needn't know. */
338#defineIN_MULTICAST(i)IN_CLASSD(i)
339
340#defineIN_EXPERIMENTAL(i)(((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
341#defineIN_BADCLASS(i)(((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
342
343#defineINADDR_LOOPBACK(u_int32_t)0x7f000001
344#defineINADDR_NONE0xffffffff/* -1 return */
345
346#defineINADDR_UNSPEC_GROUP(u_int32_t)0xe0000000/* 224.0.0.0 */
347#defineINADDR_ALLHOSTS_GROUP(u_int32_t)0xe0000001/* 224.0.0.1 */
348#defineINADDR_ALLRTRS_GROUP(u_int32_t)0xe0000002/* 224.0.0.2 */
349#defineINADDR_MAX_LOCAL_GROUP(u_int32_t)0xe00000ff/* 224.0.0.255 */
350
351#ifdef __APPLE__
352#define IN_LINKLOCALNETNUM(u_int32_t)0xA9FE0000 /* 169.254.0.0 */
353#define IN_LINKLOCAL(i)(((u_int32_t)(i) & IN_CLASSB_NET) == IN_LINKLOCALNETNUM)
354#endif
355
356#defineIN_LOOPBACKNET127/* official! */
357#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
358
359/*
360 * Socket address, internet style.
361 */
362struct sockaddr_in {
363__uint8_tsin_len;
364sa_family_tsin_family;
365in_port_tsin_port;
366structin_addr sin_addr;
367charsin_zero[8];
368};
369
370#define INET_ADDRSTRLEN 16
371
372#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
373/*
374 * Structure used to describe IP options.
375 * Used to store options internally, to pass them to a process,
376 * or to restore options retrieved earlier.
377 * The ip_dst is used for the first-hop gateway when using a source route
378 * (this gets put into the header proper).
379 */
380struct ip_opts {
381structin_addr ip_dst;/* first hop, 0 w/o src rt */
382charip_opts[40];/* actually variable in size */
383};
384
385/*
386 * Options for use with [gs]etsockopt at the IP level.
387 * First word of comment is data type; bool is stored in int.
388 */
389#defineIP_OPTIONS1 /* buf/ip_opts; set/get IP options */
390#defineIP_HDRINCL2 /* int; header is included with data */
391#defineIP_TOS3 /* int; IP type of service and preced. */
392#defineIP_TTL4 /* int; IP time to live */
393#defineIP_RECVOPTS5 /* bool; receive all IP opts w/dgram */
394#defineIP_RECVRETOPTS6 /* bool; receive IP opts for response */
395#defineIP_RECVDSTADDR7 /* bool; receive IP dst addr w/dgram */
396#defineIP_RETOPTS8 /* ip_opts; set/get IP options */
397#defineIP_MULTICAST_IF9 /* u_char; set/get IP multicast i/f */
398#defineIP_MULTICAST_TTL10 /* u_char; set/get IP multicast ttl */
399#defineIP_MULTICAST_LOOP11 /* u_char; set/get IP multicast loopback */
400#defineIP_ADD_MEMBERSHIP12 /* ip_mreq; add an IP group membership */
401#defineIP_DROP_MEMBERSHIP13 /* ip_mreq; drop an IP group membership */
402#define IP_MULTICAST_VIF14 /* set/get IP mcast virt. iface */
403#define IP_RSVP_ON15 /* enable RSVP in kernel */
404#define IP_RSVP_OFF16 /* disable RSVP in kernel */
405#define IP_RSVP_VIF_ON17 /* set RSVP per-vif socket */
406#define IP_RSVP_VIF_OFF18 /* unset RSVP per-vif socket */
407#define IP_PORTRANGE19 /* int; range to choose for unspec port */
408#defineIP_RECVIF20 /* bool; receive reception if w/dgram */
409/* for IPSEC */
410#defineIP_IPSEC_POLICY21 /* int; set/get security policy */
411#defineIP_FAITH22 /* bool; accept FAITH'ed connections */
412#ifdef __APPLE__
413#define IP_STRIPHDR 23 /* bool: drop receive of raw IP header */
414#endif
415#define IP_RECVTTL24 /* bool; receive reception TTL w/dgram */
416#defineIP_BOUND_IF25 /* set/get bound interface */
417
418
419#defineIP_FW_ADD 40 /* add a firewall rule to chain */
420#defineIP_FW_DEL 41 /* delete a firewall rule from chain */
421#defineIP_FW_FLUSH 42 /* flush firewall rule chain */
422#defineIP_FW_ZERO 43 /* clear single/all firewall counter(s) */
423#defineIP_FW_GET 44 /* get entire firewall rule chain */
424#defineIP_FW_RESETLOG45 /* reset logging counters */
425
426/* These older firewall socket option codes are maintained for backward compatibility. */
427#defineIP_OLD_FW_ADD 50 /* add a firewall rule to chain */
428#defineIP_OLD_FW_DEL 51 /* delete a firewall rule from chain */
429#defineIP_OLD_FW_FLUSH 52 /* flush firewall rule chain */
430#defineIP_OLD_FW_ZERO 53 /* clear single/all firewall counter(s) */
431#defineIP_OLD_FW_GET 54 /* get entire firewall rule chain */
432#define IP_NAT__XXX55 /* set/get NAT opts XXX Deprecated, do not use */
433#defineIP_OLD_FW_RESETLOG56 /* reset logging counters */
434
435#defineIP_DUMMYNET_CONFIGURE60 /* add/configure a dummynet pipe */
436#defineIP_DUMMYNET_DEL61 /* delete a dummynet pipe from chain */
437#defineIP_DUMMYNET_FLUSH62 /* flush dummynet */
438#defineIP_DUMMYNET_GET64 /* get entire dummynet pipes */
439
440#defineIP_TRAFFIC_MGT_BACKGROUND65 /* int*; get background IO flags; set background IO */
441
442
443/* Background socket configuration flags */
444#ifdef __APPLE_API_UNSTABLE
445#define TRAFFIC_MGT_SO_BACKGROUND0x0001/* background socket */
446#define TRAFFIC_MGT_SO_BG_SUPPRESSED0x0002/* currently throttled */
447#define TRAFFIC_MGT_SO_BG_REGULATE0x0004/* traffic is regulated */
448#endif /* __APPLE_API_UNSTABLE */
449
450/*
451 * Defaults and limits for options
452 */
453#defineIP_DEFAULT_MULTICAST_TTL 1/* normally limit m'casts to 1 hop */
454#defineIP_DEFAULT_MULTICAST_LOOP 1/* normally hear sends if a member */
455#defineIP_MAX_MEMBERSHIPS20/* per socket */
456
457/*
458 * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
459 */
460struct ip_mreq {
461structin_addr imr_multiaddr;/* IP multicast address of group */
462structin_addr imr_interface;/* local IP address of interface */
463};
464
465/*
466 * Argument for IP_PORTRANGE:
467 * - which range to search when port is unspecified at bind() or connect()
468 */
469#defineIP_PORTRANGE_DEFAULT0/* default range */
470#defineIP_PORTRANGE_HIGH1/* "high" - request firewall bypass */
471#defineIP_PORTRANGE_LOW2/* "low" - vouchsafe security */
472
473
474/*
475 * Definitions for inet sysctl operations.
476 *
477 * Third level is protocol number.
478 * Fourth level is desired variable within that protocol.
479 */
480#defineIPPROTO_MAXID(IPPROTO_AH + 1)/* don't list to IPPROTO_MAX */
481
482
483/*
484 * Names for IP sysctl objects
485 */
486#defineIPCTL_FORWARDING1/* act as router */
487#defineIPCTL_SENDREDIRECTS2/* may send redirects when forwarding */
488#defineIPCTL_DEFTTL3/* default TTL */
489#ifdef notyet
490#defineIPCTL_DEFMTU4/* default MTU */
491#endif
492#define IPCTL_RTEXPIRE5/* cloned route expiration time */
493#define IPCTL_RTMINEXPIRE6/* min value for expiration time */
494#define IPCTL_RTMAXCACHE7/* trigger level for dynamic expire */
495#defineIPCTL_SOURCEROUTE8/* may perform source routes */
496#defineIPCTL_DIRECTEDBROADCAST9/* may re-broadcast received packets */
497#define IPCTL_INTRQMAXLEN10/* max length of netisr queue */
498#defineIPCTL_INTRQDROPS11/* number of netisr q drops */
499#defineIPCTL_STATS12/* ipstat structure */
500#defineIPCTL_ACCEPTSOURCEROUTE13/* may accept source routed packets */
501#defineIPCTL_FASTFORWARDING14/* use fast IP forwarding code */
502#defineIPCTL_KEEPFAITH15/* FAITH IPv4->IPv6 translater ctl */
503#defineIPCTL_GIF_TTL16/* default TTL for gif encap packet */
504#defineIPCTL_MAXID17
505
506
507#endif/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
508
509
510/* INET6 stuff */
511#define __KAME_NETINET_IN_H_INCLUDED_
512#include <netinet6/in6.h>
513#undef __KAME_NETINET_IN_H_INCLUDED_
514
515
516#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
517__BEGIN_DECLS
518int bindresvport(int, struct sockaddr_in *);
519struct sockaddr;
520int bindresvport_sa(int, struct sockaddr *);
521__END_DECLS
522#endif
523
524#endif /* _NETINET_IN_H_ */
525

Archive Download this file

Revision: 1171