1 /* 2 * Copyright (c) 1982 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)in.h 6.7 (Berkeley) 08/09/85 7 */ 8 9 /* 10 * Constants and structures defined by the internet system, 11 * Per RFC 790, September 1981. 12 */ 13 14 /* 15 * Protocols 16 */ 17 #define IPPROTO_IP 0 /* dummy for IP */ 18 #define IPPROTO_ICMP 1 /* control message protocol */ 19 #define IPPROTO_GGP 2 /* gateway^2 (deprecated) */ 20 #define IPPROTO_TCP 6 /* tcp */ 21 #define IPPROTO_EGP 8 /* exterior gateway protocol */ 22 #define IPPROTO_PUP 12 /* pup */ 23 #define IPPROTO_UDP 17 /* user datagram protocol */ 24 #define IPPROTO_IDP 22 /* xns idp */ 25 26 #define IPPROTO_RAW 255 /* raw IP packet */ 27 #define IPPROTO_MAX 256 28 29 30 /* 31 * Ports < IPPORT_RESERVED are reserved for 32 * privileged processes (e.g. root). 33 */ 34 #define IPPORT_RESERVED 1024 35 36 /* 37 * Link numbers 38 */ 39 #define IMPLINK_IP 155 40 #define IMPLINK_LOWEXPER 156 41 #define IMPLINK_HIGHEXPER 158 42 43 /* 44 * Internet address (a structure for historical reasons) 45 */ 46 struct in_addr { 47 u_long s_addr; 48 }; 49 50 /* 51 * Definitions of bits in internet address integers. 52 * On subnets, the decomposition of addresses to host and net parts 53 * is done according to subnet mask, not the masks here. 54 */ 55 #define IN_CLASSA(i) ((((long)(i))&0x80000000)==0) 56 #define IN_CLASSA_NET 0xff000000 57 #define IN_CLASSA_NSHIFT 24 58 #define IN_CLASSA_HOST 0x00ffffff 59 #define IN_CLASSA_MAX 128 60 61 #define IN_CLASSB(i) ((((long)(i))&0xc0000000)==0x80000000) 62 #define IN_CLASSB_NET 0xffff0000 63 #define IN_CLASSB_NSHIFT 16 64 #define IN_CLASSB_HOST 0x0000ffff 65 #define IN_CLASSB_MAX 65536 66 67 #define IN_CLASSC(i) ((((long)(i))&0xc0000000)==0xc0000000) 68 #define IN_CLASSC_NET 0xffffff00 69 #define IN_CLASSC_NSHIFT 8 70 #define IN_CLASSC_HOST 0x000000ff 71 72 #define INADDR_ANY 0x00000000 73 #define INADDR_BROADCAST 0xffffffff /* must be masked */ 74 75 /* 76 * Socket address, internet style. 77 */ 78 struct sockaddr_in { 79 short sin_family; 80 u_short sin_port; 81 struct in_addr sin_addr; 82 char sin_zero[8]; 83 }; 84 85 /* 86 * Options for use with [gs]etsockopt at the IP level. 87 */ 88 #define IP_OPTIONS 1 /* set/get IP per-packet options */ 89 90 #if !defined(vax) 91 /* 92 * Macros for number representation conversion. 93 */ 94 #define ntohl(x) (x) 95 #define ntohs(x) (x) 96 #define htonl(x) (x) 97 #define htons(x) (x) 98 #endif 99 100 #ifdef KERNEL 101 extern struct domain inetdomain; 102 extern struct protosw inetsw[]; 103 struct in_addr in_makeaddr(); 104 #endif 105