home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / netinet / in.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  19.6 KB  |  523 lines

  1. /*
  2.  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  * 
  6.  * The contents of this file constitute Original Code as defined in and
  7.  * are subject to the Apple Public Source License Version 1.1 (the
  8.  * "License").  You may not use this file except in compliance with the
  9.  * License.  Please obtain a copy of the License at
  10.  * http://www.apple.com/publicsource and read it before using this file.
  11.  * 
  12.  * This Original Code and all software distributed under the License are
  13.  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17.  * License for the specific language governing rights and limitations
  18.  * under the License.
  19.  * 
  20.  * @APPLE_LICENSE_HEADER_END@
  21.  */
  22. /*
  23.  * Copyright (c) 1982, 1986, 1990, 1993
  24.  *    The Regents of the University of California.  All rights reserved.
  25.  *
  26.  * Redistribution and use in source and binary forms, with or without
  27.  * modification, are permitted provided that the following conditions
  28.  * are met:
  29.  * 1. Redistributions of source code must retain the above copyright
  30.  *    notice, this list of conditions and the following disclaimer.
  31.  * 2. Redistributions in binary form must reproduce the above copyright
  32.  *    notice, this list of conditions and the following disclaimer in the
  33.  *    documentation and/or other materials provided with the distribution.
  34.  * 3. All advertising materials mentioning features or use of this software
  35.  *    must display the following acknowledgement:
  36.  *    This product includes software developed by the University of
  37.  *    California, Berkeley and its contributors.
  38.  * 4. Neither the name of the University nor the names of its contributors
  39.  *    may be used to endorse or promote products derived from this software
  40.  *    without specific prior written permission.
  41.  *
  42.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  43.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  44.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  45.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  46.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  47.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  48.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  49.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  50.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  51.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  52.  * SUCH DAMAGE.
  53.  *
  54.  *    @(#)in.h    8.3 (Berkeley) 1/3/94
  55.  */
  56.  
  57. #ifndef _NETINET_IN_H_
  58. #define _NETINET_IN_H_
  59.  
  60. /*
  61.  * Constants and structures defined by the internet system,
  62.  * Per RFC 790, September 1981, and numerous additions.
  63.  */
  64.  
  65. /*
  66.  * Protocols (RFC 1700)
  67.  */
  68. #define    IPPROTO_IP        0        /* dummy for IP */
  69. #define     IPPROTO_HOPOPTS    0        /* IP6 hop-by-hop options */
  70. #define    IPPROTO_ICMP        1        /* control message protocol */
  71. #define    IPPROTO_IGMP        2        /* group mgmt protocol */
  72. #define    IPPROTO_GGP        3        /* gateway^2 (deprecated) */
  73. #define     IPPROTO_IPIP        4         /* IP encapsulation in IP */
  74. #define     IPPROTO_IPV4        4         /* IP header */
  75. #define    IPPROTO_TCP        6        /* tcp */
  76. #define    IPPROTO_ST        7        /* Stream protocol II */
  77. #define    IPPROTO_EGP        8        /* exterior gateway protocol */
  78. #define    IPPROTO_PIGP        9        /* private interior gateway */
  79. #define    IPPROTO_RCCMON        10        /* BBN RCC Monitoring */
  80. #define    IPPROTO_NVPII        11        /* network voice protocol*/
  81. #define    IPPROTO_PUP        12        /* pup */
  82. #define    IPPROTO_ARGUS        13        /* Argus */
  83. #define    IPPROTO_EMCON        14        /* EMCON */
  84. #define    IPPROTO_XNET        15        /* Cross Net Debugger */
  85. #define    IPPROTO_CHAOS        16        /* Chaos*/
  86. #define    IPPROTO_UDP        17        /* user datagram protocol */
  87. #define    IPPROTO_MUX        18        /* Multiplexing */
  88. #define    IPPROTO_MEAS        19        /* DCN Measurement Subsystems */
  89. #define    IPPROTO_HMP        20        /* Host Monitoring */
  90. #define    IPPROTO_PRM        21        /* Packet Radio Measurement */
  91. #define    IPPROTO_IDP        22        /* xns idp */
  92. #define    IPPROTO_TRUNK1        23        /* Trunk-1 */
  93. #define    IPPROTO_TRUNK2        24        /* Trunk-2 */
  94. #define    IPPROTO_LEAF1        25        /* Leaf-1 */
  95. #define    IPPROTO_LEAF2        26        /* Leaf-2 */
  96. #define    IPPROTO_RDP        27        /* Reliable Data */
  97. #define    IPPROTO_IRTP        28        /* Reliable Transaction */
  98. #define    IPPROTO_TP        29         /* tp-4 w/ class negotiation */
  99. #define    IPPROTO_BLT        30        /* Bulk Data Transfer */
  100. #define    IPPROTO_NSP        31        /* Network Services */
  101. #define    IPPROTO_INP        32        /* Merit Internodal */
  102. #define    IPPROTO_SEP        33        /* Sequential Exchange */
  103. #define    IPPROTO_3PC        34        /* Third Party Connect */
  104. #define    IPPROTO_IDPR        35        /* InterDomain Policy Routing */
  105. #define    IPPROTO_XTP        36        /* XTP */
  106. #define    IPPROTO_DDP        37        /* Datagram Delivery */
  107. #define    IPPROTO_CMTP        38        /* Control Message Transport */
  108. #define    IPPROTO_TPXX        39        /* TP++ Transport */
  109. #define    IPPROTO_IL        40        /* IL transport protocol */
  110. #define     IPPROTO_IPV6        41        /* IP6 header */
  111. #define    IPPROTO_SDRP        42        /* Source Demand Routing */
  112. #define     IPPROTO_ROUTING    43        /* IP6 routing header */
  113. #define     IPPROTO_FRAGMENT    44        /* IP6 fragmentation header */
  114. #define    IPPROTO_IDRP        45        /* InterDomain Routing*/
  115. #define     IPPROTO_RSVP        46         /* resource reservation */
  116. #define    IPPROTO_GRE        47        /* General Routing Encap. */
  117. #define    IPPROTO_MHRP        48        /* Mobile Host Routing */
  118. #define    IPPROTO_BHA        49        /* BHA */
  119. #define    IPPROTO_ESP        50        /* SIPP Encap Sec. Payload */
  120. #define    IPPROTO_AH        51        /* SIPP Auth Header */
  121. #define    IPPROTO_INLSP        52        /* Integ. Net Layer Security */
  122. #define    IPPROTO_SWIPE        53        /* IP with encryption */
  123. #define    IPPROTO_NHRP        54        /* Next Hop Resolution */
  124. /* 55-57: Unassigned */
  125. #define     IPPROTO_ICMPV6    58        /* ICMP6 */
  126. #define     IPPROTO_NONE        59        /* IP6 no next header */
  127. #define     IPPROTO_DSTOPTS    60        /* IP6 destination option */
  128. #define    IPPROTO_AHIP        61        /* any host internal protocol */
  129. #define    IPPROTO_CFTP        62        /* CFTP */
  130. #define    IPPROTO_HELLO        63        /* "hello" routing protocol */
  131. #define    IPPROTO_SATEXPAK    64        /* SATNET/Backroom EXPAK */
  132. #define    IPPROTO_KRYPTOLAN    65        /* Kryptolan */
  133. #define    IPPROTO_RVD        66        /* Remote Virtual Disk */
  134. #define    IPPROTO_IPPC        67        /* Pluribus Packet Core */
  135. #define    IPPROTO_ADFS        68        /* Any distributed FS */
  136. #define    IPPROTO_SATMON        69        /* Satnet Monitoring */
  137. #define    IPPROTO_VISA        70        /* VISA Protocol */
  138. #define    IPPROTO_IPCV        71        /* Packet Core Utility */
  139. #define    IPPROTO_CPNX        72        /* Comp. Prot. Net. Executive */
  140. #define    IPPROTO_CPHB        73        /* Comp. Prot. HeartBeat */
  141. #define    IPPROTO_WSN        74        /* Wang Span Network */
  142. #define    IPPROTO_PVP        75        /* Packet Video Protocol */
  143. #define    IPPROTO_BRSATMON    76        /* BackRoom SATNET Monitoring */
  144. #define    IPPROTO_ND        77        /* Sun net disk proto (temp.) */
  145. #define    IPPROTO_WBMON        78        /* WIDEBAND Monitoring */
  146. #define    IPPROTO_WBEXPAK        79        /* WIDEBAND EXPAK */
  147. #define    IPPROTO_EON        80        /* ISO cnlp */
  148. #define    IPPROTO_VMTP        81        /* VMTP */
  149. #define    IPPROTO_SVMTP        82        /* Secure VMTP */
  150. #define    IPPROTO_VINES        83        /* Banyon VINES */
  151. #define    IPPROTO_TTP        84        /* TTP */
  152. #define    IPPROTO_IGP        85        /* NSFNET-IGP */
  153. #define    IPPROTO_DGP        86        /* dissimilar gateway prot. */
  154. #define    IPPROTO_TCF        87        /* TCF */
  155. #define    IPPROTO_IGRP        88        /* Cisco/GXS IGRP */
  156. #define    IPPROTO_OSPFIGP        89        /* OSPFIGP */
  157. #define    IPPROTO_SRPC        90        /* Strite RPC protocol */
  158. #define    IPPROTO_LARP        91        /* Locus Address Resoloution */
  159. #define    IPPROTO_MTP        92        /* Multicast Transport */
  160. #define    IPPROTO_AX25        93        /* AX.25 Frames */
  161. #define    IPPROTO_IPEIP        94        /* IP encapsulated in IP */
  162. #define    IPPROTO_MICP        95        /* Mobile Int.ing control */
  163. #define    IPPROTO_SCCSP        96        /* Semaphore Comm. security */
  164. #define    IPPROTO_ETHERIP        97        /* Ethernet IP encapsulation */
  165. #define    IPPROTO_ENCAP        98        /* encapsulation header */
  166. #define    IPPROTO_APES        99        /* any private encr. scheme */
  167. #define    IPPROTO_GMTP        100        /* GMTP*/
  168. #define    IPPROTO_IPCOMP    108        /* payload compression (IPComp) */
  169. /* 101-254: Partly Unassigned */
  170. #if defined(PM)
  171. #define    IPPROTO_PM        101        /* PM - Packet Management by SuMiRe */
  172. #endif
  173. #define     IPPROTO_PIM        103        /* Protocol Independent Mcast */
  174. #define    IPPROTO_PGM        113        /* PGM */
  175. /* 255: Reserved */
  176. /* BSD Private, local use, namespace incursion */
  177. #define    IPPROTO_DIVERT        254        /* divert pseudo-protocol */
  178. #define    IPPROTO_RAW        255        /* raw IP packet */
  179. #define    IPPROTO_MAX        256
  180.  
  181. /* last return value of *_input(), meaning "all job for this pkt is done".  */
  182. #define    IPPROTO_DONE        257
  183.  
  184. /*
  185.  * Local port number conventions:
  186.  *
  187.  * When a user does a bind(2) or connect(2) with a port number of zero,
  188.  * a non-conflicting local port address is chosen.
  189.  * The default range is IPPORT_RESERVED through
  190.  * IPPORT_USERRESERVED, although that is settable by sysctl.
  191.  *
  192.  * A user may set the IPPROTO_IP option IP_PORTRANGE to change this
  193.  * default assignment range.
  194.  *
  195.  * The value IP_PORTRANGE_DEFAULT causes the default behavior.
  196.  *
  197.  * The value IP_PORTRANGE_HIGH changes the range of candidate port numbers
  198.  * into the "high" range.  These are reserved for client outbound connections
  199.  * which do not want to be filtered by any firewalls.
  200.  *
  201.  * The value IP_PORTRANGE_LOW changes the range to the "low" are
  202.  * that is (by convention) restricted to privileged processes.  This
  203.  * convention is based on "vouchsafe" principles only.  It is only secure
  204.  * if you trust the remote host to restrict these ports.
  205.  *
  206.  * The default range of ports and the high range can be changed by
  207.  * sysctl(3).  (net.inet.ip.port{hi,low}{first,last}_auto)
  208.  *
  209.  * Changing those values has bad security implications if you are
  210.  * using a a stateless firewall that is allowing packets outside of that
  211.  * range in order to allow transparent outgoing connections.
  212.  *
  213.  * Such a firewall configuration will generally depend on the use of these
  214.  * default values.  If you change them, you may find your Security
  215.  * Administrator looking for you with a heavy object.
  216.  *
  217.  * For a slightly more orthodox text view on this:
  218.  *
  219.  *            ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers
  220.  *
  221.  *    port numbers are divided into three ranges:
  222.  *
  223.  *                0 -  1023 Well Known Ports
  224.  *             1024 - 49151 Registered Ports
  225.  *            49152 - 65535 Dynamic and/or Private Ports
  226.  *
  227.  */
  228.  
  229. /*
  230.  * Ports < IPPORT_RESERVED are reserved for
  231.  * privileged processes (e.g. root).         (IP_PORTRANGE_LOW)
  232.  * Ports > IPPORT_USERRESERVED are reserved
  233.  * for servers, not necessarily privileged.  (IP_PORTRANGE_DEFAULT)
  234.  */
  235. #define    IPPORT_RESERVED        1024
  236. #define    IPPORT_USERRESERVED    5000
  237.  
  238. /*
  239.  * Default local port range to use by setting IP_PORTRANGE_HIGH
  240.  */
  241. #define    IPPORT_HIFIRSTAUTO    49152
  242. #define    IPPORT_HILASTAUTO    65535
  243.  
  244. /*
  245.  * Scanning for a free reserved port return a value below IPPORT_RESERVED,
  246.  * but higher than IPPORT_RESERVEDSTART.  Traditionally the start value was
  247.  * 512, but that conflicts with some well-known-services that firewalls may
  248.  * have a fit if we use.
  249.  */
  250. #define IPPORT_RESERVEDSTART    600
  251.  
  252. /*
  253.  * Internet address (a structure for historical reasons)
  254.  */
  255. struct in_addr {
  256.     u_int32_t s_addr;
  257. };
  258.  
  259. /*
  260.  * Definitions of bits in internet address integers.
  261.  * On subnets, the decomposition of addresses to host and net parts
  262.  * is done according to subnet mask, not the masks here.
  263.  */
  264. #define    IN_CLASSA(i)        (((u_int32_t)(i) & 0x80000000) == 0)
  265. #define    IN_CLASSA_NET        0xff000000
  266. #define    IN_CLASSA_NSHIFT    24
  267. #define    IN_CLASSA_HOST        0x00ffffff
  268. #define    IN_CLASSA_MAX        128
  269.  
  270. #define    IN_CLASSB(i)        (((u_int32_t)(i) & 0xc0000000) == 0x80000000)
  271. #define    IN_CLASSB_NET        0xffff0000
  272. #define    IN_CLASSB_NSHIFT    16
  273. #define    IN_CLASSB_HOST        0x0000ffff
  274. #define    IN_CLASSB_MAX        65536
  275.  
  276. #define    IN_CLASSC(i)        (((u_int32_t)(i) & 0xe0000000) == 0xc0000000)
  277. #define    IN_CLASSC_NET        0xffffff00
  278. #define    IN_CLASSC_NSHIFT    8
  279. #define    IN_CLASSC_HOST        0x000000ff
  280.  
  281. #define    IN_CLASSD(i)        (((u_int32_t)(i) & 0xf0000000) == 0xe0000000)
  282. #define    IN_CLASSD_NET        0xf0000000    /* These ones aren't really */
  283. #define    IN_CLASSD_NSHIFT    28        /* net and host fields, but */
  284. #define    IN_CLASSD_HOST        0x0fffffff    /* routing needn't know.    */
  285. #define    IN_MULTICAST(i)        IN_CLASSD(i)
  286.  
  287. #define    IN_EXPERIMENTAL(i)    (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
  288. #define    IN_BADCLASS(i)        (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
  289.  
  290. #define    INADDR_ANY        (u_int32_t)0x00000000
  291. #define    INADDR_LOOPBACK        (u_int32_t)0x7f000001
  292. #define    INADDR_BROADCAST    (u_int32_t)0xffffffff    /* must be masked */
  293. #ifndef KERNEL
  294. #define    INADDR_NONE        0xffffffff        /* -1 return */
  295. #endif
  296.  
  297. #define    INADDR_UNSPEC_GROUP    (u_int32_t)0xe0000000    /* 224.0.0.0 */
  298. #define    INADDR_ALLHOSTS_GROUP    (u_int32_t)0xe0000001    /* 224.0.0.1 */
  299. #define    INADDR_ALLRTRS_GROUP    (u_int32_t)0xe0000002    /* 224.0.0.2 */
  300. #define    INADDR_MAX_LOCAL_GROUP    (u_int32_t)0xe00000ff    /* 224.0.0.255 */
  301.  
  302. #define IN_LINKLOCALNETNUM    (u_int32_t)0xA9FE0000 /* 169.254.0.0 */
  303. #define IN_LINKLOCAL(i)        (((u_int32_t)(i) & IN_CLASSB_NET) == IN_LINKLOCALNETNUM)
  304.  
  305. #define    IN_LOOPBACKNET        127            /* official! */
  306.  
  307. /*
  308.  * Socket address, internet style.
  309.  */
  310. struct sockaddr_in {
  311.     u_char    sin_len;
  312.     u_char    sin_family;
  313.     u_short    sin_port;
  314.     struct    in_addr sin_addr;
  315.     char    sin_zero[8];
  316. };
  317.  
  318. #define INET_ADDRSTRLEN                 16
  319.  
  320. /*
  321.  * Structure used to describe IP options.
  322.  * Used to store options internally, to pass them to a process,
  323.  * or to restore options retrieved earlier.
  324.  * The ip_dst is used for the first-hop gateway when using a source route
  325.  * (this gets put into the header proper).
  326.  */
  327. struct ip_opts {
  328.     struct    in_addr ip_dst;        /* first hop, 0 w/o src rt */
  329.     char    ip_opts[40];        /* actually variable in size */
  330. };
  331.  
  332. /*
  333.  * Options for use with [gs]etsockopt at the IP level.
  334.  * First word of comment is data type; bool is stored in int.
  335.  */
  336. #define    IP_OPTIONS        1    /* buf/ip_opts; set/get IP options */
  337. #define    IP_HDRINCL        2    /* int; header is included with data */
  338. #define    IP_TOS            3    /* int; IP type of service and preced. */
  339. #define    IP_TTL            4    /* int; IP time to live */
  340. #define    IP_RECVOPTS        5    /* bool; receive all IP opts w/dgram */
  341. #define    IP_RECVRETOPTS        6    /* bool; receive IP opts for response */
  342. #define    IP_RECVDSTADDR        7    /* bool; receive IP dst addr w/dgram */
  343. #define    IP_RETOPTS        8    /* ip_opts; set/get IP options */
  344. #define    IP_MULTICAST_IF        9    /* u_char; set/get IP multicast i/f  */
  345. #define    IP_MULTICAST_TTL    10   /* u_char; set/get IP multicast ttl */
  346. #define    IP_MULTICAST_LOOP    11   /* u_char; set/get IP multicast loopback */
  347. #define    IP_ADD_MEMBERSHIP    12   /* ip_mreq; add an IP group membership */
  348. #define    IP_DROP_MEMBERSHIP    13   /* ip_mreq; drop an IP group membership */
  349. #define IP_MULTICAST_VIF    14   /* set/get IP mcast virt. iface */
  350. #define IP_RSVP_ON        15   /* enable RSVP in kernel */
  351. #define IP_RSVP_OFF        16   /* disable RSVP in kernel */
  352. #define IP_RSVP_VIF_ON        17   /* set RSVP per-vif socket */
  353. #define IP_RSVP_VIF_OFF        18   /* unset RSVP per-vif socket */
  354. #define IP_PORTRANGE        19   /* int; range to choose for unspec port */
  355. #define IP_RECVIF        20   /* bool; receive reception if w/dgram */
  356. #define IP_IPSEC_POLICY        21   /* int; set/get security policy */
  357. #define IP_FAITH        22   /* bool; accept FAITH'ed connections */
  358. #define IP_STRIPHDR          23   /* bool: drop receive of raw IP header */
  359.  
  360.  
  361. #define IP_FW_ADD             50   /* add a firewall rule to chain */
  362. #define IP_FW_DEL            51   /* delete a firewall rule from chain */
  363. #define IP_FW_FLUSH           52   /* flush firewall rule chain */
  364. #define IP_FW_ZERO            53   /* clear single/all firewall counter(s) */
  365. #define IP_FW_GET             54   /* get entire firewall rule chain */
  366. #define IP_NAT            55   /* set/get NAT opts */
  367. #define IP_FW_RESETLOG        56   /* reset logging counters */
  368.  
  369. #define    IP_DUMMYNET_CONFIGURE    60   /* add/configure a dummynet pipe */
  370. #define    IP_DUMMYNET_DEL        61   /* delete a dummynet pipe from chain */
  371. #define    IP_DUMMYNET_FLUSH    62   /* flush dummynet */
  372. #define    IP_DUMMYNET_GET        64   /* get entire dummynet pipes */
  373.  
  374. /*
  375.  * Defaults and limits for options
  376.  */
  377. #define    IP_DEFAULT_MULTICAST_TTL  1    /* normally limit m'casts to 1 hop  */
  378. #define    IP_DEFAULT_MULTICAST_LOOP 1    /* normally hear sends if a member  */
  379. #define    IP_MAX_MEMBERSHIPS    20    /* per socket */
  380.  
  381. /*
  382.  * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
  383.  */
  384. struct ip_mreq {
  385.     struct    in_addr imr_multiaddr;    /* IP multicast address of group */
  386.     struct    in_addr imr_interface;    /* local IP address of interface */
  387. };
  388.  
  389. /*
  390.  * Argument for IP_PORTRANGE:
  391.  * - which range to search when port is unspecified at bind() or connect()
  392.  */
  393. #define    IP_PORTRANGE_DEFAULT    0    /* default range */
  394. #define    IP_PORTRANGE_HIGH    1    /* "high" - request firewall bypass */
  395. #define    IP_PORTRANGE_LOW    2    /* "low" - vouchsafe security */
  396.  
  397. /*
  398.  * Definitions for inet sysctl operations.
  399.  *
  400.  * Third level is protocol number.
  401.  * Fourth level is desired variable within that protocol.
  402.  */
  403. #define    IPPROTO_MAXID    (IPPROTO_ESP + 1)    /* don't list to IPPROTO_MAX */
  404.  
  405. #define    CTL_IPPROTO_NAMES { \
  406.     { "ip", CTLTYPE_NODE }, \
  407.     { "icmp", CTLTYPE_NODE }, \
  408.     { "igmp", CTLTYPE_NODE }, \
  409.     { "ggp", CTLTYPE_NODE }, \
  410.     { 0, 0 }, \
  411.     { 0, 0 }, \
  412.     { "tcp", CTLTYPE_NODE }, \
  413.     { 0, 0 }, \
  414.     { "egp", CTLTYPE_NODE }, \
  415.     { 0, 0 }, \
  416.     { 0, 0 }, \
  417.     { 0, 0 }, \
  418.     { "pup", CTLTYPE_NODE }, \
  419.     { 0, 0 }, \
  420.     { 0, 0 }, \
  421.     { 0, 0 }, \
  422.     { 0, 0 }, \
  423.     { "udp", CTLTYPE_NODE }, \
  424.     { 0, 0 }, \
  425.     { 0, 0 }, \
  426.     { 0, 0 }, \
  427.     { 0, 0 }, \
  428.     { "idp", CTLTYPE_NODE }, \
  429.     { 0, 0 }, \
  430.     { 0, 0 }, \
  431.     { 0, 0 }, \
  432.     { 0, 0 }, \
  433.     { 0, 0 }, \
  434.     { 0, 0 }, \
  435.     { 0, 0 }, \
  436.     { 0, 0 }, \
  437.     { 0, 0 }, \
  438.     { 0, 0 }, \
  439.     { 0, 0 }, \
  440.     { 0, 0 }, \
  441.     { 0, 0 }, \
  442.     { 0, 0 }, \
  443.     { 0, 0 }, \
  444.     { 0, 0 }, \
  445.     { 0, 0 }, \
  446.     { 0, 0 }, \
  447.     { 0, 0 }, \
  448.     { 0, 0 }, \
  449.     { 0, 0 }, \
  450.     { 0, 0 }, \
  451.     { 0, 0 }, \
  452.     { 0, 0 }, \
  453.     { 0, 0 }, \
  454.     { 0, 0 }, \
  455.     { 0, 0 }, \
  456.     { 0, 0 }, \
  457.     { "ipsec", CTLTYPE_NODE }, \
  458. }
  459.  
  460. /*
  461.  * Names for IP sysctl objects
  462.  */
  463. #define    IPCTL_FORWARDING    1    /* act as router */
  464. #define    IPCTL_SENDREDIRECTS    2    /* may send redirects when forwarding */
  465. #define    IPCTL_DEFTTL        3    /* default TTL */
  466. #ifdef notyet
  467. #define    IPCTL_DEFMTU        4    /* default MTU */
  468. #endif
  469. #define IPCTL_RTEXPIRE        5    /* cloned route expiration time */
  470. #define IPCTL_RTMINEXPIRE    6    /* min value for expiration time */
  471. #define IPCTL_RTMAXCACHE    7    /* trigger level for dynamic expire */
  472. #define    IPCTL_SOURCEROUTE    8    /* may perform source routes */
  473. #define    IPCTL_DIRECTEDBROADCAST    9    /* may re-broadcast received packets */
  474. #define IPCTL_INTRQMAXLEN    10    /* max length of netisr queue */
  475. #define IPCTL_INTRQDROPS    11    /* number of netisr q drops */
  476. #define    IPCTL_STATS        12    /* ipstat structure */
  477. #define    IPCTL_ACCEPTSOURCEROUTE    13    /* may accept source routed packets */
  478. #define IPCTL_FASTFORWARDING    14    /* use fast IP forwarding code */
  479. #define IPCTL_KEEPFAITH        15
  480. #define IPCTL_GIF_TTL        16    /* default TTL for gif encap packet */
  481. #define    IPCTL_MAXID        17
  482.  
  483. #define    IPCTL_NAMES { \
  484.     { 0, 0 }, \
  485.     { "forwarding", CTLTYPE_INT }, \
  486.     { "redirect", CTLTYPE_INT }, \
  487.     { "ttl", CTLTYPE_INT }, \
  488.     { "mtu", CTLTYPE_INT }, \
  489.     { "rtexpire", CTLTYPE_INT }, \
  490.     { "rtminexpire", CTLTYPE_INT }, \
  491.     { "rtmaxcache", CTLTYPE_INT }, \
  492.     { "sourceroute", CTLTYPE_INT }, \
  493.      { "directed-broadcast", CTLTYPE_INT }, \
  494.     { "intr-queue-maxlen", CTLTYPE_INT }, \
  495.     { "intr-queue-drops", CTLTYPE_INT }, \
  496.     { "stats", CTLTYPE_STRUCT }, \
  497.     { "accept_sourceroute", CTLTYPE_INT }, \
  498.     { "fastforwarding", CTLTYPE_INT }, \
  499.     { "keepfaith", CTLTYPE_INT }, \
  500.     { "gifttl", CTLTYPE_INT }, \
  501. }
  502.  
  503. /* INET6 stuff */
  504. #define __KAME_NETINET_IN_H_INCLUDED_
  505. #include <netinet6/in6.h>
  506. #undef __KAME_NETINET_IN_H_INCLUDED_
  507.  
  508. #ifdef KERNEL
  509. struct ifnet; struct mbuf;    /* forward declarations for Standard C */
  510.  
  511. int     in_broadcast __P((struct in_addr, struct ifnet *));
  512. int     in_canforward __P((struct in_addr));
  513. int     in_cksum __P((struct mbuf *, int));
  514. int      in_cksum_skip __P((struct mbuf *, u_short, u_short));
  515. u_short     in_addword __P((u_short, u_short));
  516. u_short  in_pseudo __P((u_int, u_int, u_int));
  517. int     in_localaddr __P((struct in_addr));
  518. char     *inet_ntoa __P((struct in_addr)); /* in libkern */
  519. u_long    in_netof __P((struct in_addr));
  520. #endif /* KERNEL */
  521.  
  522. #endif
  523.