|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: * ! 17: * @(#)in.h 7.6 (Berkeley) 6/29/88 ! 18: */ ! 19: ! 20: /* ! 21: * Constants and structures defined by the internet system, ! 22: * Per RFC 790, September 1981. ! 23: */ ! 24: ! 25: /* ! 26: * Protocols ! 27: */ ! 28: #define IPPROTO_IP 0 /* dummy for IP */ ! 29: #define IPPROTO_ICMP 1 /* control message protocol */ ! 30: #define IPPROTO_GGP 3 /* gateway^2 (deprecated) */ ! 31: #define IPPROTO_TCP 6 /* tcp */ ! 32: #define IPPROTO_EGP 8 /* exterior gateway protocol */ ! 33: #define IPPROTO_PUP 12 /* pup */ ! 34: #define IPPROTO_UDP 17 /* user datagram protocol */ ! 35: #define IPPROTO_IDP 22 /* xns idp */ ! 36: ! 37: #define IPPROTO_RAW 255 /* raw IP packet */ ! 38: #define IPPROTO_MAX 256 ! 39: ! 40: ! 41: /* ! 42: * Ports < IPPORT_RESERVED are reserved for ! 43: * privileged processes (e.g. root). ! 44: * Ports > IPPORT_USERRESERVED are reserved ! 45: * for servers, not necessarily privileged. ! 46: */ ! 47: #define IPPORT_RESERVED 1024 ! 48: #define IPPORT_USERRESERVED 5000 ! 49: ! 50: /* ! 51: * Link numbers ! 52: */ ! 53: #define IMPLINK_IP 155 ! 54: #define IMPLINK_LOWEXPER 156 ! 55: #define IMPLINK_HIGHEXPER 158 ! 56: ! 57: /* ! 58: * Internet address (a structure for historical reasons) ! 59: */ ! 60: struct in_addr { ! 61: u_long s_addr; ! 62: }; ! 63: ! 64: /* ! 65: * Definitions of bits in internet address integers. ! 66: * On subnets, the decomposition of addresses to host and net parts ! 67: * is done according to subnet mask, not the masks here. ! 68: */ ! 69: #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) ! 70: #define IN_CLASSA_NET 0xff000000 ! 71: #define IN_CLASSA_NSHIFT 24 ! 72: #define IN_CLASSA_HOST 0x00ffffff ! 73: #define IN_CLASSA_MAX 128 ! 74: ! 75: #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) ! 76: #define IN_CLASSB_NET 0xffff0000 ! 77: #define IN_CLASSB_NSHIFT 16 ! 78: #define IN_CLASSB_HOST 0x0000ffff ! 79: #define IN_CLASSB_MAX 65536 ! 80: ! 81: #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) ! 82: #define IN_CLASSC_NET 0xffffff00 ! 83: #define IN_CLASSC_NSHIFT 8 ! 84: #define IN_CLASSC_HOST 0x000000ff ! 85: ! 86: #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000) ! 87: #define IN_MULTICAST(i) IN_CLASSD(i) ! 88: ! 89: #define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000) ! 90: #define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000) ! 91: ! 92: #define INADDR_ANY (u_long)0x00000000 ! 93: #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ ! 94: #ifndef KERNEL ! 95: #define INADDR_NONE 0xffffffff /* -1 return */ ! 96: #endif ! 97: ! 98: #define IN_LOOPBACKNET 127 /* official! */ ! 99: ! 100: /* ! 101: * Socket address, internet style. ! 102: */ ! 103: struct sockaddr_in { ! 104: short sin_family; ! 105: u_short sin_port; ! 106: struct in_addr sin_addr; ! 107: char sin_zero[8]; ! 108: }; ! 109: ! 110: /* ! 111: * Options for use with [gs]etsockopt at the IP level. ! 112: */ ! 113: #define IP_OPTIONS 1 /* set/get IP per-packet options */ ! 114: ! 115: #ifdef KERNEL ! 116: extern struct domain inetdomain; ! 117: extern struct protosw inetsw[]; ! 118: struct in_addr in_makeaddr(); ! 119: u_long in_netof(), in_lnaof(); ! 120: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.