1 /* 2 * Copyright (c) 1982, 1986 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 7.3 (Berkeley) 06/04/87 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 * Ports > IPPORT_USERRESERVED are reserved 34 * for servers, not necessarily privileged. 35 */ 36 #define IPPORT_RESERVED 1024 37 #define IPPORT_USERRESERVED 5000 38 39 /* 40 * Link numbers 41 */ 42 #define IMPLINK_IP 155 43 #define IMPLINK_LOWEXPER 156 44 #define IMPLINK_HIGHEXPER 158 45 46 /* 47 * Internet address (a structure for historical reasons) 48 */ 49 struct in_addr { 50 u_long s_addr; 51 }; 52 53 /* 54 * Definitions of bits in internet address integers. 55 * On subnets, the decomposition of addresses to host and net parts 56 * is done according to subnet mask, not the masks here. 57 */ 58 #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) 59 #define IN_CLASSA_NET 0xff000000 60 #define IN_CLASSA_NSHIFT 24 61 #define IN_CLASSA_HOST 0x00ffffff 62 #define IN_CLASSA_MAX 128 63 64 #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) 65 #define IN_CLASSB_NET 0xffff0000 66 #define IN_CLASSB_NSHIFT 16 67 #define IN_CLASSB_HOST 0x0000ffff 68 #define IN_CLASSB_MAX 65536 69 70 #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) 71 #define IN_CLASSC_NET 0xffffff00 72 #define IN_CLASSC_NSHIFT 8 73 #define IN_CLASSC_HOST 0x000000ff 74 75 #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000) 76 #define IN_MULTICAST(i) IN_CLASSD(i) 77 78 #define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000) 79 #define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000) 80 81 #define INADDR_ANY (u_long)0x00000000 82 #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ 83 #ifndef KERNEL 84 #define INADDR_NONE 0xffffffff /* -1 return */ 85 #endif 86 87 #define IN_LOOPBACKNET 127 /* official! */ 88 89 /* 90 * Socket address, internet style. 91 */ 92 struct sockaddr_in { 93 short sin_family; 94 u_short sin_port; 95 struct in_addr sin_addr; 96 char sin_zero[8]; 97 }; 98 99 /* 100 * Options for use with [gs]etsockopt at the IP level. 101 */ 102 #define IP_OPTIONS 1 /* set/get IP per-packet options */ 103 104 #ifdef KERNEL 105 extern struct domain inetdomain; 106 extern struct protosw inetsw[]; 107 struct in_addr in_makeaddr(); 108 u_long in_netof(), in_lnaof(); 109 #endif 110