Annotation of embedaddon/pimd/include/linux/netinet/in-glibc-2.0.h, revision 1.1

1.1     ! misho       1: /* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
        !             2:    This file is part of the GNU C Library.
        !             3: 
        !             4:    The GNU C Library is free software; you can redistribute it and/or modify
        !             5:    it under the terms of the GNU General Public License as published by
        !             6:    the Free Software Foundation; either version 2, or (at your option)
        !             7:    any later version.
        !             8: 
        !             9:    The GNU C Library is distributed in the hope that it will be useful,
        !            10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            12:    GNU General Public License for more details.
        !            13: 
        !            14:    You should have received a copy of the GNU Library General Public
        !            15:    License along with the GNU C Library; see the file COPYING.LIB.  If not,
        !            16:    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
        !            17:    Boston, MA 02111-1307, USA.  */
        !            18: 
        !            19: #ifndef        _NETINET_IN_H
        !            20: 
        !            21: #define        _NETINET_IN_H   1
        !            22: #include <features.h>
        !            23: 
        !            24: #include <sys/socket.h>
        !            25: #include <sys/types.h>
        !            26: 
        !            27: 
        !            28: __BEGIN_DECLS
        !            29: 
        !            30: /* Standard well-defined IP protocols.  */
        !            31: enum
        !            32:   {
        !            33:     IPPROTO_IP = 0,     /* Dummy protocol for TCP.  */
        !            34:     IPPROTO_ICMP = 1,   /* Internet Control Message Protocol.  */
        !            35:     IPPROTO_IGMP = 2,   /* Internet Group Management Protocol. */
        !            36:     IPPROTO_IPIP = 4,   /* IPIP tunnels (older KA9Q tunnels use 94).  */
        !            37:     IPPROTO_TCP = 6,    /* Transmission Control Protocol.  */
        !            38:     IPPROTO_EGP = 8,    /* Exterior Gateway Protocol.  */
        !            39:     IPPROTO_PUP = 12,   /* PUP protocol.  */
        !            40:     IPPROTO_UDP = 17,   /* User Datagram Protocol.  */
        !            41:     IPPROTO_IDP = 22,   /* XNS IDP protocol.  */
        !            42:     IPPROTO_IPV6 = 41,  /* IPv6-in-IPv4 tunnelling.  */
        !            43:     IPPROTO_RSVP = 46,  /* RSVP Protocol.  */
        !            44:     IPPROTO_GRE = 47,   /* Cisco GRE tunnels (rfc 1701,1702).  */
        !            45:     IPPROTO_ICMPV6 = 58, /* ICMPv6.  */
        !            46:     IPPROTO_PIM = 103,  /* Protocol Independent Multicast.  */
        !            47: 
        !            48:     IPPROTO_RAW = 255,  /* Raw IP packets.  */
        !            49:     IPPROTO_MAX
        !            50:       };
        !            51: 
        !            52: /* Standard well-known ports.  */
        !            53: enum
        !            54:   {
        !            55:     IPPORT_ECHO = 7,           /* Echo service.  */
        !            56:     IPPORT_DISCARD = 9,                /* Discard transmissions service.  */
        !            57:     IPPORT_SYSTAT = 11,                /* System status service.  */
        !            58:     IPPORT_DAYTIME = 13,       /* Time of day service.  */
        !            59:     IPPORT_NETSTAT = 15,       /* Network status service.  */
        !            60:     IPPORT_FTP = 21,           /* File Transfer Protocol.  */
        !            61:     IPPORT_TELNET = 23,                /* Telnet protocol.  */
        !            62:     IPPORT_SMTP = 25,          /* Simple Mail Transfer Protocol.  */
        !            63:     IPPORT_TIMESERVER = 37,    /* Timeserver service.  */
        !            64:     IPPORT_NAMESERVER = 42,    /* Domain Name Service.  */
        !            65:     IPPORT_WHOIS = 43,         /* Internet Whois service.  */
        !            66:     IPPORT_MTP = 57,
        !            67: 
        !            68:     IPPORT_TFTP = 69,          /* Trivial File Transfer Protocol.  */
        !            69:     IPPORT_RJE = 77,
        !            70:     IPPORT_FINGER = 79,                /* Finger service.  */
        !            71:     IPPORT_TTYLINK = 87,
        !            72:     IPPORT_SUPDUP = 95,                /* SUPDUP protocol.  */
        !            73: 
        !            74: 
        !            75:     IPPORT_EXECSERVER = 512,   /* execd service.  */
        !            76:     IPPORT_LOGINSERVER = 513,  /* rlogind service.  */
        !            77:     IPPORT_CMDSERVER = 514,
        !            78:     IPPORT_EFSSERVER = 520,
        !            79: 
        !            80:     /* UDP ports.  */
        !            81:     IPPORT_BIFFUDP = 512,
        !            82:     IPPORT_WHOSERVER = 513,
        !            83:     IPPORT_ROUTESERVER = 520,
        !            84: 
        !            85:     /* Ports less than this value are reserved for privileged processes.  */
        !            86:     IPPORT_RESERVED = 1024,
        !            87: 
        !            88:     /* Ports greater this value are reserved for (non-privileged) servers.  */
        !            89:     IPPORT_USERRESERVED = 5000
        !            90:   };
        !            91: 
        !            92: 
        !            93: /* Internet address.  */
        !            94: struct in_addr
        !            95:   {
        !            96:     unsigned int s_addr;
        !            97:   };
        !            98: 
        !            99: 
        !           100: /* Definitions of the bits in an Internet address integer.
        !           101: 
        !           102:    On subnets, host and network parts are found according to
        !           103:    the subnet mask, not these masks.  */
        !           104: 
        !           105: #define        IN_CLASSA(a)            ((((unsigned) (a)) & 0x80000000) == 0)
        !           106: #define        IN_CLASSA_NET           0xff000000
        !           107: #define        IN_CLASSA_NSHIFT        24
        !           108: #define        IN_CLASSA_HOST          (0xffffffff & ~IN_CLASSA_NET)
        !           109: #define        IN_CLASSA_MAX           128
        !           110: 
        !           111: #define        IN_CLASSB(a)            ((((unsigned) (a)) & 0xc0000000) == 0x80000000)
        !           112: #define        IN_CLASSB_NET           0xffff0000
        !           113: #define        IN_CLASSB_NSHIFT        16
        !           114: #define        IN_CLASSB_HOST          (0xffffffff & ~IN_CLASSB_NET)
        !           115: #define        IN_CLASSB_MAX           65536
        !           116: 
        !           117: #define        IN_CLASSC(a)            ((((unsigned) (a)) & 0xc0000000) == 0xc0000000)
        !           118: #define        IN_CLASSC_NET           0xffffff00
        !           119: #define        IN_CLASSC_NSHIFT        8
        !           120: #define        IN_CLASSC_HOST          (0xffffffff & ~IN_CLASSC_NET)
        !           121: 
        !           122: #define        IN_CLASSD(a)            ((((unsigned) (a)) & 0xf0000000) == 0xe0000000)
        !           123: #define        IN_MULTICAST(a)         IN_CLASSD(a)
        !           124: 
        !           125: #define        IN_EXPERIMENTAL(a)      ((((unsigned) (a)) & 0xe0000000) == 0xe0000000)
        !           126: #define        IN_BADCLASS(a)          ((((unsigned) (a)) & 0xf0000000) == 0xf0000000)
        !           127: 
        !           128: /* Address to accept any incoming messages.  */
        !           129: #define        INADDR_ANY              ((unsigned) 0x00000000)
        !           130: /* Address to send to all hosts.  */
        !           131: #define        INADDR_BROADCAST        ((unsigned) 0xffffffff)
        !           132: /* Address indicating an error return.  */
        !           133: #define        INADDR_NONE             0xffffffff
        !           134: 
        !           135: /* Network number for local host loopback.  */
        !           136: #define        IN_LOOPBACKNET  127
        !           137: /* Address to loopback in software to local host.  */
        !           138: #ifndef INADDR_LOOPBACK
        !           139: #define        INADDR_LOOPBACK 0x7f000001      /* Internet address 127.0.0.1.  */
        !           140: #endif
        !           141: 
        !           142: /* Defines for Multicast INADDR.  */
        !           143: #define INADDR_UNSPEC_GROUP    ((u_int32_t) 0xe0000000U)     /* 224.0.0.0 */
        !           144: #define INADDR_ALLHOSTS_GROUP  ((u_int32_t) 0xe0000001U)     /* 224.0.0.1 */
        !           145: #define INADDR_ALLRTRS_GROUP    ((u_int32_t) 0xe0000002U)     /* 224.0.0.2 */
        !           146: #define INADDR_MAX_LOCAL_GROUP  ((u_int32_t) 0xe00000ffU)     /* 224.0.0.255 */
        !           147: 
        !           148: 
        !           149: /* Get the definition of the macro to define the common sockaddr members.  */
        !           150: #include <sockaddrcom.h>
        !           151: 
        !           152: 
        !           153: /* Structure describing an Internet socket address.  */
        !           154: struct sockaddr_in
        !           155:   {
        !           156:     __SOCKADDR_COMMON (sin_);
        !           157:     unsigned short int sin_port;       /* Port number.  */
        !           158:     struct in_addr sin_addr;           /* Internet address.  */
        !           159: 
        !           160:     /* Pad to size of `struct sockaddr'.  */
        !           161:     unsigned char sin_zero[sizeof(struct sockaddr) -
        !           162:                           __SOCKADDR_COMMON_SIZE -
        !           163:                           sizeof(unsigned short int) -
        !           164:                           sizeof(struct in_addr)];
        !           165:   };
        !           166: 
        !           167: 
        !           168: /* Options for use with `getsockopt' and `setsockopt' at the IP level.
        !           169:    The first word in the comment at the right is the data type used;
        !           170:    "bool" means a boolean value stored in an `int'.  */
        !           171: #define        IP_TOS             1    /* int; IP type of service and precedence.  */
        !           172: #define        IP_TTL             2    /* int; IP time to live.  */
        !           173: #define        IP_HDRINCL         3    /* int; Header is included with data.  */
        !           174: #define        IP_OPTIONS         4    /* ip_opts; IP per-packet options.  */
        !           175: #define IP_ROUTER_ALERT           5    /* not sure. defined in linux kernel. */
        !           176: #define IP_RECVOPTS       6    /* not sure. defined in linux kernel. */
        !           177: #define IP_RETOPTS        7    /* not sure. defined in linux kernel. */
        !           178: #define IP_PKTINFO        8    /* not sure. defined in linux kernel. */
        !           179: #define IP_PKTOPTIONS     9    /* not sure. defined in linux kernel. */
        !           180: #define IP_MTU_DISCOVER           10   /* not sure. defined in linux kernel. */
        !           181: #define IP_RECVERR        11   /* not sure. defined in linux kernel. */
        !           182: #define IP_RECVTTL        12   /* not sure. defined in linux kernel. */
        !           183: #define IP_RECVTOS        13   /* not sure. defined in linux kernel. */
        !           184: #define IP_MTU            14   /* not sure. defined in linux kernel. */
        !           185: #define IP_MULTICAST_IF    32  /* in_addr; set/get IP multicast i/f */
        !           186: #define IP_MULTICAST_TTL   33  /* u_char; set/get IP multicast ttl */
        !           187: #define IP_MULTICAST_LOOP  34  /* i_char; set/get IP multicast loopback */
        !           188: #define IP_ADD_MEMBERSHIP  35  /* ip_mreq; add an IP group membership */
        !           189: #define IP_DROP_MEMBERSHIP 36  /* ip_mreq; drop an IP group membership */
        !           190: 
        !           191: /* BSD compatibility */
        !           192: #define IP_RECVRETOPTS IP_RETOPTS
        !           193: 
        !           194: /* IP_MTU_DISCOVER values */
        !           195: #define IP_PMTUDISC_DONT       0       /* Never send DF frames */
        !           196: #define IP_PMTUDISC_WANT       1       /* Use per route hints */
        !           197: #define IP_PMTUDISC_DO         2       /* Always DF */
        !           198: 
        !           199: /* To select the IP level.  */
        !           200: #define SOL_IP 0
        !           201: 
        !           202: /* Structure used to describe IP options for IP_OPTIONS. The `ip_dst'
        !           203:    field is used for the first-hop gateway when using a source route
        !           204:    (this gets put into the header proper).  */
        !           205: struct ip_opts
        !           206:   {
        !           207:     struct in_addr ip_dst;     /* First hop; zero without source route.  */
        !           208:     char ip_opts[40];          /* Actually variable in size.  */
        !           209:   };
        !           210: 
        !           211: /* Structure used for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. */
        !           212: struct ip_mreq
        !           213:   {
        !           214:     struct in_addr imr_multiaddr;      /* IP multicast address of group */
        !           215:     struct in_addr imr_interface;      /* local IP address of interface */
        !           216:   };
        !           217: 
        !           218: /* Functions to convert between host and network byte order.
        !           219: 
        !           220:    Please note that these functions normally take `unsigned long int' or
        !           221:    `unsigned short int' values as arguments and also return them.  But
        !           222:    this was a short-sighted decision since on different systems the types
        !           223:    may have different representations but the values are always the same.  */
        !           224: 
        !           225: extern u_int32_t ntohl __P ((u_int32_t __netlong));
        !           226: extern u_int16_t ntohs __P ((u_int16_t __netshort));
        !           227: extern u_int32_t htonl __P ((u_int32_t __hostlong));
        !           228: extern u_int16_t htons __P ((u_int16_t __hostshort));
        !           229: 
        !           230: #include <endian.h>
        !           231: 
        !           232: #if __BYTE_ORDER == __BIG_ENDIAN
        !           233: /* The host byte order is the same as network byte order,
        !           234:    so these functions are all just identity.  */
        !           235: #define        ntohl(x)        (x)
        !           236: #define        ntohs(x)        (x)
        !           237: #define        htonl(x)        (x)
        !           238: #define        htons(x)        (x)
        !           239: #endif
        !           240: 
        !           241: 
        !           242: /* Bind socket to a priviledged IP port.  */
        !           243: extern int bindresvport __P ((int __sockfd, struct sockaddr_in *__sock_in));
        !           244: 
        !           245: __END_DECLS
        !           246: 
        !           247: #endif /* netinet/in.h */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>