📄 in.h
字号:
/* * Copyright (c) 1982, 1986, 1990, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)in.h 8.3 (Berkeley) 1/3/94 * $Id: in.h,v 1.38.2.1 1999/05/04 16:23:55 luigi Exp $ */#ifndef _NETINET_IN_H_#define _NETINET_IN_H_/* * Constants and structures defined by the internet system, * Per RFC 790, September 1981, and numerous additions. *//* * Protocols (RFC 1700) */#define IPPROTO_IP 0 /* dummy for IP */#define IPPROTO_ICMP 1 /* control message protocol */#define IPPROTO_IGMP 2 /* group mgmt protocol */#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */#define IPPROTO_IPIP 4 /* IP encapsulation in IP */#define IPPROTO_TCP 6 /* tcp */#define IPPROTO_ST 7 /* Stream protocol II */#define IPPROTO_EGP 8 /* exterior gateway protocol */#define IPPROTO_PIGP 9 /* private interior gateway */#define IPPROTO_RCCMON 10 /* BBN RCC Monitoring */#define IPPROTO_NVPII 11 /* network voice protocol*/#define IPPROTO_PUP 12 /* pup */#define IPPROTO_ARGUS 13 /* Argus */#define IPPROTO_EMCON 14 /* EMCON */#define IPPROTO_XNET 15 /* Cross Net Debugger */#define IPPROTO_CHAOS 16 /* Chaos*/#define IPPROTO_UDP 17 /* user datagram protocol */#define IPPROTO_MUX 18 /* Multiplexing */#define IPPROTO_MEAS 19 /* DCN Measurement Subsystems */#define IPPROTO_HMP 20 /* Host Monitoring */#define IPPROTO_PRM 21 /* Packet Radio Measurement */#define IPPROTO_IDP 22 /* xns idp */#define IPPROTO_TRUNK1 23 /* Trunk-1 */#define IPPROTO_TRUNK2 24 /* Trunk-2 */#define IPPROTO_LEAF1 25 /* Leaf-1 */#define IPPROTO_LEAF2 26 /* Leaf-2 */#define IPPROTO_RDP 27 /* Reliable Data */#define IPPROTO_IRTP 28 /* Reliable Transaction */#define IPPROTO_TP 29 /* tp-4 w/ class negotiation */#define IPPROTO_BLT 30 /* Bulk Data Transfer */#define IPPROTO_NSP 31 /* Network Services */#define IPPROTO_INP 32 /* Merit Internodal */#define IPPROTO_SEP 33 /* Sequential Exchange */#define IPPROTO_3PC 34 /* Third Party Connect */#define IPPROTO_IDPR 35 /* InterDomain Policy Routing */#define IPPROTO_XTP 36 /* XTP */#define IPPROTO_DDP 37 /* Datagram Delivery */#define IPPROTO_CMTP 38 /* Control Message Transport */#define IPPROTO_TPXX 39 /* TP++ Transport */#define IPPROTO_IL 40 /* IL transport protocol */#define IPPROTO_SIP 41 /* Simple Internet Protocol */#define IPPROTO_SDRP 42 /* Source Demand Routing */#define IPPROTO_SIPSR 43 /* SIP Source Route */#define IPPROTO_SIPFRAG 44 /* SIP Fragment */#define IPPROTO_IDRP 45 /* InterDomain Routing*/#define IPPROTO_RSVP 46 /* resource reservation */#define IPPROTO_GRE 47 /* General Routing Encap. */#define IPPROTO_MHRP 48 /* Mobile Host Routing */#define IPPROTO_BHA 49 /* BHA */#define IPPROTO_ESP 50 /* SIPP Encap Sec. Payload */#define IPPROTO_AH 51 /* SIPP Auth Header */#define IPPROTO_INLSP 52 /* Integ. Net Layer Security */#define IPPROTO_SWIPE 53 /* IP with encryption */#define IPPROTO_NHRP 54 /* Next Hop Resolution *//* 55-60: Unassigned */#define IPPROTO_AHIP 61 /* any host internal protocol */#define IPPROTO_CFTP 62 /* CFTP */#define IPPROTO_HELLO 63 /* "hello" routing protocol */#define IPPROTO_SATEXPAK 64 /* SATNET/Backroom EXPAK */#define IPPROTO_KRYPTOLAN 65 /* Kryptolan */#define IPPROTO_RVD 66 /* Remote Virtual Disk */#define IPPROTO_IPPC 67 /* Pluribus Packet Core */#define IPPROTO_ADFS 68 /* Any distributed FS */#define IPPROTO_SATMON 69 /* Satnet Monitoring */#define IPPROTO_VISA 70 /* VISA Protocol */#define IPPROTO_IPCV 71 /* Packet Core Utility */#define IPPROTO_CPNX 72 /* Comp. Prot. Net. Executive */#define IPPROTO_CPHB 73 /* Comp. Prot. HeartBeat */#define IPPROTO_WSN 74 /* Wang Span Network */#define IPPROTO_PVP 75 /* Packet Video Protocol */#define IPPROTO_BRSATMON 76 /* BackRoom SATNET Monitoring */#define IPPROTO_ND 77 /* Sun net disk proto (temp.) */#define IPPROTO_WBMON 78 /* WIDEBAND Monitoring */#define IPPROTO_WBEXPAK 79 /* WIDEBAND EXPAK */#define IPPROTO_EON 80 /* ISO cnlp */#define IPPROTO_VMTP 81 /* VMTP */#define IPPROTO_SVMTP 82 /* Secure VMTP */#define IPPROTO_VINES 83 /* Banyon VINES */#define IPPROTO_TTP 84 /* TTP */#define IPPROTO_IGP 85 /* NSFNET-IGP */#define IPPROTO_DGP 86 /* dissimilar gateway prot. */#define IPPROTO_TCF 87 /* TCF */#define IPPROTO_IGRP 88 /* Cisco/GXS IGRP */#define IPPROTO_OSPFIGP 89 /* OSPFIGP */#define IPPROTO_SRPC 90 /* Strite RPC protocol */#define IPPROTO_LARP 91 /* Locus Address Resoloution */#define IPPROTO_MTP 92 /* Multicast Transport */#define IPPROTO_AX25 93 /* AX.25 Frames */#define IPPROTO_IPEIP 94 /* IP encapsulated in IP */#define IPPROTO_MICP 95 /* Mobile Int.ing control */#define IPPROTO_SCCSP 96 /* Semaphore Comm. security */#define IPPROTO_ETHERIP 97 /* Ethernet IP encapsulation */#define IPPROTO_ENCAP 98 /* encapsulation header */#define IPPROTO_APES 99 /* any private encr. scheme */#define IPPROTO_GMTP 100 /* GMTP*//* 101-254: Partly Unassigned */#define IPPROTO_PIM 103 /* Protocol Independent Mcast*/#define IPPROTO_PGM 113 /* PGM *//* 255: Reserved *//* BSD Private, local use, namespace incursion */#define IPPROTO_DIVERT 254 /* divert pseudo-protocol */#define IPPROTO_RAW 255 /* raw IP packet */#define IPPROTO_MAX 256/* * Local port number conventions: * * When a user does a bind(2) or connect(2) with a port number of zero, * a non-conflicting local port address is chosen. * The default range is IPPORT_RESERVED through * IPPORT_USERRESERVED, although that is settable by sysctl. * * A user may set the IPPROTO_IP option IP_PORTRANGE to change this * default assignment range. * * The value IP_PORTRANGE_DEFAULT causes the default behavior. * * The value IP_PORTRANGE_HIGH changes the range of candidate port numbers * into the "high" range. These are reserved for client outbound connections * which do not want to be filtered by any firewalls. * * The value IP_PORTRANGE_LOW changes the range to the "low" are * that is (by convention) restricted to privileged processes. This * convention is based on "vouchsafe" principles only. It is only secure * if you trust the remote host to restrict these ports. * * The default range of ports and the high range can be changed by * sysctl(3). (net.inet.ip.port{hi,low}{first,last}_auto) * * Changing those values has bad security implications if you are * using a a stateless firewall that is allowing packets outside of that * range in order to allow transparent outgoing connections. * * Such a firewall configuration will generally depend on the use of these * default values. If you change them, you may find your Security * Administrator looking for you with a heavy object. * * For a slightly more orthodox text view on this: * * ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers * * port numbers are divided into three ranges: * * 0 - 1023 Well Known Ports * 1024 - 49151 Registered Ports * 49152 - 65535 Dynamic and/or Private Ports * *//* * Ports < IPPORT_RESERVED are reserved for * privileged processes (e.g. root). (IP_PORTRANGE_LOW) * Ports > IPPORT_USERRESERVED are reserved * for servers, not necessarily privileged. (IP_PORTRANGE_DEFAULT) */#define IPPORT_RESERVED 1024#define IPPORT_USERRESERVED 5000/* * Default local port range to use by setting IP_PORTRANGE_HIGH */#define IPPORT_HIFIRSTAUTO 49152#define IPPORT_HILASTAUTO 65535/* * Scanning for a free reserved port return a value below IPPORT_RESERVED, * but higher than IPPORT_RESERVEDSTART. Traditionally the start value was * 512, but that conflicts with some well-known-services that firewalls may * have a fit if we use. */#define IPPORT_RESERVEDSTART 600/* * Internet address (a structure for historical reasons) */struct in_addr { u_int32_t s_addr;};/* * Definitions of bits in internet address integers. * On subnets, the decomposition of addresses to host and net parts * is done according to subnet mask, not the masks here. */#define IN_CLASSA(i) (((u_int32_t)(i) & 0x80000000) == 0)#define IN_CLASSA_NET 0xff000000#define IN_CLASSA_NSHIFT 24#define IN_CLASSA_HOST 0x00ffffff#define IN_CLASSA_MAX 128#define IN_CLASSB(i) (((u_int32_t)(i) & 0xc0000000) == 0x80000000)#define IN_CLASSB_NET 0xffff0000#define IN_CLASSB_NSHIFT 16#define IN_CLASSB_HOST 0x0000ffff#define IN_CLASSB_MAX 65536#define IN_CLASSC(i) (((u_int32_t)(i) & 0xe0000000) == 0xc0000000)#define IN_CLASSC_NET 0xffffff00#define IN_CLASSC_NSHIFT 8#define IN_CLASSC_HOST 0x000000ff#define IN_CLASSD(i) (((u_int32_t)(i) & 0xf0000000) == 0xe0000000)#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */#define IN_MULTICAST(i) IN_CLASSD(i)#define IN_EXPERIMENTAL(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)#define IN_BADCLASS(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)#define INADDR_ANY (u_int32_t)0x00000000#define INADDR_LOOPBACK (u_int32_t)0x7f000001#define INADDR_BROADCAST (u_int32_t)0xffffffff /* must be masked */#ifndef KERNEL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -