|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986, 1990 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms, with or without ! 6: * modification, are permitted provided that the following conditions ! 7: * are met: ! 8: * 1. Redistributions of source code must retain the above copyright ! 9: * notice, this list of conditions and the following disclaimer. ! 10: * 2. Redistributions in binary form must reproduce the above copyright ! 11: * notice, this list of conditions and the following disclaimer in the ! 12: * documentation and/or other materials provided with the distribution. ! 13: * 3. All advertising materials mentioning features or use of this software ! 14: * must display the following acknowledgement: ! 15: * This product includes software developed by the University of ! 16: * California, Berkeley and its contributors. ! 17: * 4. Neither the name of the University nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: * ! 33: * @(#)in.h 7.11 (Berkeley) 4/20/91 ! 34: */ ! 35: ! 36: /* ! 37: * Constants and structures defined by the internet system, ! 38: * Per RFC 790, September 1981. ! 39: */ ! 40: ! 41: /* ! 42: * Protocols ! 43: */ ! 44: #define IPPROTO_IP 0 /* dummy for IP */ ! 45: #define IPPROTO_ICMP 1 /* control message protocol */ ! 46: #define IPPROTO_GGP 3 /* gateway^2 (deprecated) */ ! 47: #define IPPROTO_TCP 6 /* tcp */ ! 48: #define IPPROTO_EGP 8 /* exterior gateway protocol */ ! 49: #define IPPROTO_PUP 12 /* pup */ ! 50: #define IPPROTO_UDP 17 /* user datagram protocol */ ! 51: #define IPPROTO_IDP 22 /* xns idp */ ! 52: #define IPPROTO_TP 29 /* tp-4 w/ class negotiation */ ! 53: #define IPPROTO_EON 80 /* ISO cnlp */ ! 54: ! 55: #define IPPROTO_RAW 255 /* raw IP packet */ ! 56: #define IPPROTO_MAX 256 ! 57: ! 58: ! 59: /* ! 60: * Local port number conventions: ! 61: * Ports < IPPORT_RESERVED are reserved for ! 62: * privileged processes (e.g. root). ! 63: * Ports > IPPORT_USERRESERVED are reserved ! 64: * for servers, not necessarily privileged. ! 65: */ ! 66: #define IPPORT_RESERVED 1024 ! 67: #define IPPORT_USERRESERVED 5000 ! 68: ! 69: /* ! 70: * Internet address (a structure for historical reasons) ! 71: */ ! 72: struct in_addr { ! 73: u_long s_addr; ! 74: }; ! 75: ! 76: /* ! 77: * Definitions of bits in internet address integers. ! 78: * On subnets, the decomposition of addresses to host and net parts ! 79: * is done according to subnet mask, not the masks here. ! 80: */ ! 81: #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) ! 82: #define IN_CLASSA_NET 0xff000000 ! 83: #define IN_CLASSA_NSHIFT 24 ! 84: #define IN_CLASSA_HOST 0x00ffffff ! 85: #define IN_CLASSA_MAX 128 ! 86: ! 87: #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) ! 88: #define IN_CLASSB_NET 0xffff0000 ! 89: #define IN_CLASSB_NSHIFT 16 ! 90: #define IN_CLASSB_HOST 0x0000ffff ! 91: #define IN_CLASSB_MAX 65536 ! 92: ! 93: #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) ! 94: #define IN_CLASSC_NET 0xffffff00 ! 95: #define IN_CLASSC_NSHIFT 8 ! 96: #define IN_CLASSC_HOST 0x000000ff ! 97: ! 98: #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000) ! 99: #define IN_MULTICAST(i) IN_CLASSD(i) ! 100: ! 101: #define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000) ! 102: #define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000) ! 103: ! 104: #define INADDR_ANY (u_long)0x00000000 ! 105: #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ ! 106: #ifndef KERNEL ! 107: #define INADDR_NONE 0xffffffff /* -1 return */ ! 108: #endif ! 109: ! 110: #define IN_LOOPBACKNET 127 /* official! */ ! 111: ! 112: /* ! 113: * Socket address, internet style. ! 114: */ ! 115: struct sockaddr_in { ! 116: u_char sin_len; ! 117: u_char sin_family; ! 118: u_short sin_port; ! 119: struct in_addr sin_addr; ! 120: char sin_zero[8]; ! 121: }; ! 122: ! 123: /* ! 124: * Structure used to describe IP options. ! 125: * Used to store options internally, to pass them to a process, ! 126: * or to restore options retrieved earlier. ! 127: * The ip_dst is used for the first-hop gateway when using a source route ! 128: * (this gets put into the header proper). ! 129: */ ! 130: struct ip_opts { ! 131: struct in_addr ip_dst; /* first hop, 0 w/o src rt */ ! 132: char ip_opts[40]; /* actually variable in size */ ! 133: }; ! 134: ! 135: /* ! 136: * Options for use with [gs]etsockopt at the IP level. ! 137: * First word of comment is data type; bool is stored in int. ! 138: */ ! 139: #define IP_OPTIONS 1 /* buf/ip_opts; set/get IP per-packet options */ ! 140: #define IP_HDRINCL 2 /* int; header is included with data (raw) */ ! 141: #define IP_TOS 3 /* int; IP type of service and precedence */ ! 142: #define IP_TTL 4 /* int; IP time to live */ ! 143: #define IP_RECVOPTS 5 /* bool; receive all IP options w/datagram */ ! 144: #define IP_RECVRETOPTS 6 /* bool; receive IP options for response */ ! 145: #define IP_RECVDSTADDR 7 /* bool; receive IP dst addr w/datagram */ ! 146: #define IP_RETOPTS 8 /* ip_opts; set/get IP per-packet options */ ! 147: ! 148: #ifdef KERNEL ! 149: struct in_addr in_makeaddr(); ! 150: u_long in_netof(), in_lnaof(); ! 151: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.