1*25202Skarels /* 2*25202Skarels * Constants and structures defined by the internet system, 3*25202Skarels * Per RFC 790, September 1981. 4*25202Skarels */ 5*25202Skarels 6*25202Skarels /* 7*25202Skarels * Protocols 8*25202Skarels */ 9*25202Skarels #define IPPROTO_IP 0 /* dummy for IP */ 10*25202Skarels #define IPPROTO_ICMP 1 /* control message protocol */ 11*25202Skarels #define IPPROTO_GGP 2 /* gateway^2 (deprecated) */ 12*25202Skarels #define IPPROTO_TCP 6 /* tcp */ 13*25202Skarels #define IPPROTO_EGP 8 /* exterior gateway protocol */ 14*25202Skarels #define IPPROTO_PUP 12 /* pup */ 15*25202Skarels #define IPPROTO_UDP 17 /* user datagram protocol */ 16*25202Skarels #define IPPROTO_HMP 20 /* host monitoring protocol */ 17*25202Skarels #define IPPROTO_IDP 22 /* xns idp */ 18*25202Skarels #define IPPROTO_RDP 27 /* reliabe datagram protocol */ 19*25202Skarels 20*25202Skarels #define IPPROTO_MAX 256 21*25202Skarels 22*25202Skarels 23*25202Skarels /* 24*25202Skarels * historical and inaccurate. See protocol .h files if you care 25*25202Skarels * about reserved ports. 26*25202Skarels */ 27*25202Skarels #define IPPORT_RESERVED 1024 28*25202Skarels 29*25202Skarels /* 30*25202Skarels * Link numbers 31*25202Skarels */ 32*25202Skarels #define IMPLINK_IP 155 33*25202Skarels #define IMPLINK_LOWEXPER 156 34*25202Skarels #define IMPLINK_HIGHEXPER 158 35*25202Skarels 36*25202Skarels #ifdef when_convince_berk 37*25202Skarels /* 38*25202Skarels * Internet layers for getsockopt()/setsockopt() 39*25202Skarels * (gaps left in case we forgot something) 40*25202Skarels */ 41*25202Skarels 42*25202Skarels #define SOL_INPROTO 2 /* tcp/udp/hmp/rdp */ 43*25202Skarels #define SOL_INRAW 4 /* ip */ 44*25202Skarels #define SOL_INETHER 6 /* ARP, etc. */ 45*25202Skarels #define SOL_INIFADDR 8 /* interface addrs */ 46*25202Skarels #endif 47*25202Skarels 48*25202Skarels /* 49*25202Skarels * Internet address (a structure for historical reasons) 50*25202Skarels */ 51*25202Skarels struct in_addr { 52*25202Skarels u_long s_addr; 53*25202Skarels }; 54*25202Skarels 55*25202Skarels #define INADDR_ANY ((u_long) 0x00000000) 56*25202Skarels #define INADDR_BROADCAST ((u_long) 0xffffffff) /* must be masked */ 57*25202Skarels 58*25202Skarels /* 59*25202Skarels * Socket address, internet style. 60*25202Skarels */ 61*25202Skarels struct sockaddr_in { 62*25202Skarels short sin_family; 63*25202Skarels u_short sin_port; 64*25202Skarels struct in_addr sin_addr; 65*25202Skarels char sin_zero[8]; 66*25202Skarels }; 67*25202Skarels 68*25202Skarels /* 69*25202Skarels * Options for use with [gs]etsockopt at the IP level. 70*25202Skarels */ 71*25202Skarels #define IP_OPTIONS 1 /* set/get IP per-packet options */ 72*25202Skarels 73*25202Skarels #if !defined(vax) 74*25202Skarels /* 75*25202Skarels * Macros for number representation conversion. 76*25202Skarels */ 77*25202Skarels #define ntohl(x) (x) 78*25202Skarels #define ntohs(x) (x) 79*25202Skarels #define htonl(x) (x) 80*25202Skarels #define htons(x) (x) 81*25202Skarels #endif 82*25202Skarels 83*25202Skarels #ifdef KERNEL 84*25202Skarels extern struct domain inetdomain; 85*25202Skarels extern struct protosw inetsw[]; 86*25202Skarels struct in_addr in_makeaddr(); 87*25202Skarels /* 88*25202Skarels * Treat a sockaddr as a sockaddr_in, and retrieve the IP address 89*25202Skarels * associated with it. 90*25202Skarels */ 91*25202Skarels #define satoipa(x) (((struct sockaddr_in *) (x)) ->sin_addr) 92*25202Skarels 93*25202Skarels #endif 94