Annotation of kernel/bsd/netinet/in.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
                     26: /*
                     27:  * Copyright (c) 1982, 1986, 1990, 1993
                     28:  *     The Regents of the University of California.  All rights reserved.
                     29:  *
                     30:  * Redistribution and use in source and binary forms, with or without
                     31:  * modification, are permitted provided that the following conditions
                     32:  * are met:
                     33:  * 1. Redistributions of source code must retain the above copyright
                     34:  *    notice, this list of conditions and the following disclaimer.
                     35:  * 2. Redistributions in binary form must reproduce the above copyright
                     36:  *    notice, this list of conditions and the following disclaimer in the
                     37:  *    documentation and/or other materials provided with the distribution.
                     38:  * 3. All advertising materials mentioning features or use of this software
                     39:  *    must display the following acknowledgement:
                     40:  *     This product includes software developed by the University of
                     41:  *     California, Berkeley and its contributors.
                     42:  * 4. Neither the name of the University nor the names of its contributors
                     43:  *    may be used to endorse or promote products derived from this software
                     44:  *    without specific prior written permission.
                     45:  *
                     46:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     47:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     48:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     49:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     50:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     51:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     52:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     53:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     54:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     55:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     56:  * SUCH DAMAGE.
                     57:  *
                     58:  *     @(#)in.h        8.3 (Berkeley) 1/3/94
                     59:  */
                     60: 
                     61: /*
                     62:  * Constants and structures defined by the internet system,
                     63:  * Per RFC 790, September 1981, and numerous additions.
                     64:  */
                     65: 
                     66: #ifndef _NETINET_IN_H_
                     67: #define        _NETINET_IN_H_
                     68: 
                     69: /*
                     70:  * Protocols
                     71:  */
                     72: #define        IPPROTO_IP              0               /* dummy for IP */
                     73: #define        IPPROTO_ICMP            1               /* control message protocol */
                     74: #define        IPPROTO_IGMP            2               /* group mgmt protocol */
                     75: #define        IPPROTO_GGP             3               /* gateway^2 (deprecated) */
                     76: #define        IPPROTO_TCP             6               /* tcp */
                     77: #define        IPPROTO_EGP             8               /* exterior gateway protocol */
                     78: #define        IPPROTO_PUP             12              /* pup */
                     79: #define        IPPROTO_UDP             17              /* user datagram protocol */
                     80: #define        IPPROTO_IDP             22              /* xns idp */
                     81: #define        IPPROTO_TP              29              /* tp-4 w/ class negotiation */
                     82: #define        IPPROTO_EON             80              /* ISO cnlp */
                     83: #define        IPPROTO_ENCAP           98              /* encapsulation header */
                     84: 
                     85: #define        IPPROTO_RAW             255             /* raw IP packet */
                     86: #define        IPPROTO_MAX             256
                     87: 
                     88: 
                     89: /*
                     90:  * Local port number conventions:
                     91:  * Ports < IPPORT_RESERVED are reserved for
                     92:  * privileged processes (e.g. root).
                     93:  * Ports > IPPORT_USERRESERVED are reserved
                     94:  * for servers, not necessarily privileged.
                     95:  */
                     96: #define        IPPORT_RESERVED         1024
                     97: #define        IPPORT_USERRESERVED     5000
                     98: 
                     99: /*
                    100:  * Internet address (a structure for historical reasons)
                    101:  */
                    102: struct in_addr {
                    103:        u_long s_addr;
                    104: };
                    105: 
                    106: /*
                    107:  * Definitions of bits in internet address integers.
                    108:  * On subnets, the decomposition of addresses to host and net parts
                    109:  * is done according to subnet mask, not the masks here.
                    110:  */
                    111: #define        IN_CLASSA(i)            (((long)(i) & 0x80000000) == 0)
                    112: #define        IN_CLASSA_NET           0xff000000
                    113: #define        IN_CLASSA_NSHIFT        24
                    114: #define        IN_CLASSA_HOST          0x00ffffff
                    115: #define        IN_CLASSA_MAX           128
                    116: 
                    117: #define        IN_CLASSB(i)            (((long)(i) & 0xc0000000) == 0x80000000)
                    118: #define        IN_CLASSB_NET           0xffff0000
                    119: #define        IN_CLASSB_NSHIFT        16
                    120: #define        IN_CLASSB_HOST          0x0000ffff
                    121: #define        IN_CLASSB_MAX           65536
                    122: 
                    123: #define        IN_CLASSC(i)            (((long)(i) & 0xe0000000) == 0xc0000000)
                    124: #define        IN_CLASSC_NET           0xffffff00
                    125: #define        IN_CLASSC_NSHIFT        8
                    126: #define        IN_CLASSC_HOST          0x000000ff
                    127: 
                    128: #define        IN_CLASSD(i)            (((long)(i) & 0xf0000000) == 0xe0000000)
                    129: #define        IN_CLASSD_NET           0xf0000000      /* These ones aren't really */
                    130: #define        IN_CLASSD_NSHIFT        28              /* net and host fields, but */
                    131: #define        IN_CLASSD_HOST          0x0fffffff      /* routing needn't know.    */
                    132: #define        IN_MULTICAST(i)         IN_CLASSD(i)
                    133: 
                    134: #define        IN_EXPERIMENTAL(i)      (((long)(i) & 0xf0000000) == 0xf0000000)
                    135: #define        IN_BADCLASS(i)          (((long)(i) & 0xf0000000) == 0xf0000000)
                    136: 
                    137: #define        INADDR_ANY              (u_long)0x00000000
                    138: #define INADDR_LOOPBACK                (u_long)0x7f000001
                    139: #define        INADDR_BROADCAST        (u_long)0xffffffff      /* must be masked */
                    140: #ifndef _KERNEL
                    141: #define        INADDR_NONE             0xffffffff              /* -1 return */
                    142: #endif
                    143: 
                    144: #define        INADDR_UNSPEC_GROUP     (u_long)0xe0000000      /* 224.0.0.0 */
                    145: #define        INADDR_ALLHOSTS_GROUP   (u_long)0xe0000001      /* 224.0.0.1 */
                    146: #define        INADDR_MAX_LOCAL_GROUP  (u_long)0xe00000ff      /* 224.0.0.255 */
                    147: 
                    148: #define        IN_LOOPBACKNET          127                     /* official! */
                    149: 
                    150: /*
                    151:  * Socket address, internet style.
                    152:  */
                    153: struct sockaddr_in {
                    154:        u_char  sin_len;
                    155:        u_char  sin_family;
                    156:        u_short sin_port;
                    157:        struct  in_addr sin_addr;
                    158:        char    sin_zero[8];
                    159: };
                    160: 
                    161: /*
                    162:  * Structure used to describe IP options.
                    163:  * Used to store options internally, to pass them to a process,
                    164:  * or to restore options retrieved earlier.
                    165:  * The ip_dst is used for the first-hop gateway when using a source route
                    166:  * (this gets put into the header proper).
                    167:  */
                    168: struct ip_opts {
                    169:        struct  in_addr ip_dst;         /* first hop, 0 w/o src rt */
                    170:        char    ip_opts[40];            /* actually variable in size */
                    171: };
                    172: 
                    173: /*
                    174:  * Options for use with [gs]etsockopt at the IP level.
                    175:  * First word of comment is data type; bool is stored in int.
                    176:  */
                    177: #define        IP_OPTIONS              1    /* buf/ip_opts; set/get IP options */
                    178: #define        IP_HDRINCL              2    /* int; header is included with data */
                    179: #define        IP_TOS                  3    /* int; IP type of service and preced. */
                    180: #define        IP_TTL                  4    /* int; IP time to live */
                    181: #define        IP_RECVOPTS             5    /* bool; receive all IP opts w/dgram */
                    182: #define        IP_RECVRETOPTS          6    /* bool; receive IP opts for response */
                    183: #define        IP_RECVDSTADDR          7    /* bool; receive IP dst addr w/dgram */
                    184: #define        IP_RETOPTS              8    /* ip_opts; set/get IP options */
                    185: #define        IP_MULTICAST_IF         9    /* u_char; set/get IP multicast i/f  */
                    186: #define        IP_MULTICAST_TTL        10   /* u_char; set/get IP multicast ttl */
                    187: #define        IP_MULTICAST_LOOP       11   /* u_char; set/get IP multicast loopback */
                    188: #define        IP_ADD_MEMBERSHIP       12   /* ip_mreq; add an IP group membership */
                    189: #define        IP_DROP_MEMBERSHIP      13   /* ip_mreq; drop an IP group membership */
                    190: 
                    191: /*
                    192:  * Defaults and limits for options
                    193:  */
                    194: #define        IP_DEFAULT_MULTICAST_TTL  1     /* normally limit m'casts to 1 hop  */
                    195: #define        IP_DEFAULT_MULTICAST_LOOP 1     /* normally hear sends if a member  */
                    196: #define        IP_MAX_MEMBERSHIPS      20      /* per socket; must fit in one mbuf */
                    197: 
                    198: /*
                    199:  * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
                    200:  */
                    201: struct ip_mreq {
                    202:        struct  in_addr imr_multiaddr;  /* IP multicast address of group */
                    203:        struct  in_addr imr_interface;  /* local IP address of interface */
                    204: };
                    205: 
                    206: /*
                    207:  * Definitions for inet sysctl operations.
                    208:  *
                    209:  * Third level is protocol number.
                    210:  * Fourth level is desired variable within that protocol.
                    211:  */
                    212: #define        IPPROTO_MAXID   (IPPROTO_IDP + 1)       /* don't list to IPPROTO_MAX */
                    213: 
                    214: #define        CTL_IPPROTO_NAMES { \
                    215:        { "ip", CTLTYPE_NODE }, \
                    216:        { "icmp", CTLTYPE_NODE }, \
                    217:        { "igmp", CTLTYPE_NODE }, \
                    218:        { "ggp", CTLTYPE_NODE }, \
                    219:        { 0, 0 }, \
                    220:        { 0, 0 }, \
                    221:        { "tcp", CTLTYPE_NODE }, \
                    222:        { 0, 0 }, \
                    223:        { "egp", CTLTYPE_NODE }, \
                    224:        { 0, 0 }, \
                    225:        { 0, 0 }, \
                    226:        { 0, 0 }, \
                    227:        { "pup", CTLTYPE_NODE }, \
                    228:        { 0, 0 }, \
                    229:        { 0, 0 }, \
                    230:        { 0, 0 }, \
                    231:        { 0, 0 }, \
                    232:        { "udp", CTLTYPE_NODE }, \
                    233:        { 0, 0 }, \
                    234:        { 0, 0 }, \
                    235:        { 0, 0 }, \
                    236:        { 0, 0 }, \
                    237:        { "idp", CTLTYPE_NODE }, \
                    238: }
                    239: 
                    240: /*
                    241:  * Names for IP sysctl objects
                    242:  */
                    243: #define        IPCTL_FORWARDING        1       /* act as router */
                    244: #define        IPCTL_SENDREDIRECTS     2       /* may send redirects when forwarding */
                    245: #define        IPCTL_DEFTTL            3       /* default TTL */
                    246: #ifdef notyet
                    247: #define        IPCTL_DEFMTU            4       /* default MTU */
                    248: #endif
                    249: #define        IPCTL_MAXID             5
                    250: 
                    251: #define        IPCTL_NAMES { \
                    252:        { 0, 0 }, \
                    253:        { "forwarding", CTLTYPE_INT }, \
                    254:        { "redirect", CTLTYPE_INT }, \
                    255:        { "ttl", CTLTYPE_INT }, \
                    256:        { "mtu", CTLTYPE_INT }, \
                    257: }
                    258: 
                    259: 
                    260: #ifdef _KERNEL
                    261: int     in_broadcast __P((struct in_addr, struct ifnet *));
                    262: int     in_canforward __P((struct in_addr));
                    263: int     in_cksum __P((struct mbuf *, int));
                    264: int     in_localaddr __P((struct in_addr));
                    265: u_long  in_netof __P((struct in_addr));
                    266: void    in_socktrim __P((struct sockaddr_in *));
                    267: #endif
                    268: #endif /* !_NETINET_IN_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.