|
|
1.1 ! root 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.1 (Berkeley) 6/5/86 ! 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) & 0xc0000000) == 0xc0000000) ! 71: #define IN_CLASSC_NET 0xffffff00 ! 72: #define IN_CLASSC_NSHIFT 8 ! 73: #define IN_CLASSC_HOST 0x000000ff ! 74: ! 75: #define INADDR_ANY (u_long)0x00000000 ! 76: #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ ! 77: ! 78: /* ! 79: * Socket address, internet style. ! 80: */ ! 81: struct sockaddr_in { ! 82: short sin_family; ! 83: u_short sin_port; ! 84: struct in_addr sin_addr; ! 85: char sin_zero[8]; ! 86: }; ! 87: ! 88: /* ! 89: * Options for use with [gs]etsockopt at the IP level. ! 90: */ ! 91: #define IP_OPTIONS 1 /* set/get IP per-packet options */ ! 92: ! 93: #if !defined(vax) && !defined(ntohl) && !defined(lint) ! 94: /* ! 95: * Macros for number representation conversion. ! 96: */ ! 97: #define ntohl(x) (x) ! 98: #define ntohs(x) (x) ! 99: #define htonl(x) (x) ! 100: #define htons(x) (x) ! 101: #endif ! 102: ! 103: #if !defined(ntohl) && (defined(vax) || defined(lint)) ! 104: u_short ntohs(), htons(); ! 105: u_long ntohl(), htonl(); ! 106: #endif ! 107: ! 108: #ifdef KERNEL ! 109: extern struct domain inetdomain; ! 110: extern struct protosw inetsw[]; ! 111: struct in_addr in_makeaddr(); ! 112: u_long in_netof(), in_lnaof(); ! 113: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.