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