📄 in.h
字号:
/* in.h - internet header file *//* * Copyright (c) 1984-2005 Wind River Systems, Inc. * * The right to copy, distribute or otherwise make use of this software * may be licensed only pursuant to the terms of an applicable Wind River * license agreement. No license to Wind River intellectual property rights * is granted herein. All rights not licensed by Wind River are reserved * by Wind River. *//* * Copyright (c) 2002 INRIA. All rights reserved. * * Implementation of Internet Group Management Protocol, Version 3. * Developed by Hitoshi Asaeda, INRIA, February 2002. * * 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. Neither the name of INRIA 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 INSTITUTE 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 INSTITUTE 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. *//* * 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 * $FreeBSD: src/sys/netinet/in.h,v 1.48.2.12 2004/06/16 06:57:49 ru Exp $ * $FreeBSD: src/sys/netinet/in.h,v 1.48.2.11 2003/09/09 19:09:22 bms Exp $ *//*modification history--------------------02d,25aug05,dlk Add section tags.02c,18may05,kch Merged from FreeBSD v 1.48.2.12.02b,19apr05,rp merged from comp_wn_ipv6_mld_interim-dev02a,18apr05,vvv included in6.h for user-space01z,03mar05,vvv removed reference to _KERNEL01y,25feb05,niq merge from niqbal.tor3.mroute for IP router alert changes01x,17feb05,dlk NTOHL() etc. only usable as statements, not expressions.01w,07feb05,vvv _KERNEL cleanup01v,24jan05,vvv osdep.h cleanup01u,20jan05,sar Removal of divert, dummynet and fw code.01t,14oct04,nee include osdep.h and machdep.h when _KERNEL is defined (SPR #102593)01s,31may04,nee Adding macro IN_ADDR_IS_LINKLOCAL01r,25nov03,ppp added a comment before the inclusion of in6.h01q,21nov03,ppp rtp work01p,04nov03,rlm Ran batch header path update for header re-org.01o,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.01n,23oct03,rlm updated #includes for header re-org01m,07aug03,niq Merging from Accordion label ACCORDION_BASE6_MERGE_BASELINE01l,13jun03,syy Added declaration for inet_ntoa_b() (SPR#88384)01k,15may03,vvv included mbuf.h01j,09may03,vvv included vxWorks.h01i,01feb03,pas merge from FreeBSD 4.7 - moved satosin() etc here01h,09sep02,hsh add c++ protection01g,15jul02,ann moved the early declaration of some structures to avoid compilation warnings01f,08feb02,nee making in_socktrim non static01e,02oct01,ppp Removing the INET6 guard fot in6.h01d,18sep01,qli fixed a header inclusion error01c,18sep01,ppp guarding the inclusion of in6.h by INET6 for the link temporarily01b,23aug01,ppp Adding the WindRiver copyright01a,08aug01,ppp Created from FreeBSD 4.3*/#ifndef _NETINET_IN_H_#define _NETINET_IN_H_ #include <vxWorks.h>#ifdef _WRS_KERNEL#include <net/mbuf.h>#endif#ifdef __cplusplusextern "C" {#endif#include <sys/socket.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_HOPOPTS 0 /* IP6 hop-by-hop options */#define IPPROTO_ICMP 1 /* control message protocol */#define IPPROTO_IGMP 2 /* group mgmt protocol */#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */#define IPPROTO_IPV4 4 /* IPv4 encapsulation */#define IPPROTO_IPIP IPPROTO_IPV4 /* for compatibility */#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_IPV6 41 /* IP6 header */#define IPPROTO_SDRP 42 /* Source Demand Routing */#define IPPROTO_ROUTING 43 /* IP6 routing header */#define IPPROTO_FRAGMENT 44 /* IP6 fragmentation header */#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 /* IP6 Encap Sec. Payload */#define IPPROTO_AH 51 /* IP6 Auth Header */#define IPPROTO_INLSP 52 /* Integ. Net Layer Security */#define IPPROTO_SWIPE 53 /* IP with encryption */#define IPPROTO_NHRP 54 /* Next Hop Resolution */#define IPPROTO_MOBILE 55 /* IP Mobility *//* 56-57: Unassigned */#define IPPROTO_ICMPV6 58 /* ICMP6 */#define IPPROTO_NONE 59 /* IP6 no next header */#define IPPROTO_DSTOPTS 60 /* IP6 destination option */#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*/#define IPPROTO_IPCOMP 108 /* payload compression (IPComp) */#define IPPROTO_PIM 103 /* Protocol Independent Mcast */#define IPPROTO_PGM 113 /* PGM */#define IPPROTO_SCTP 132 /* SCTP (RFC2960) *//* 134-254: Partly Unassigned */#define IPPROTO_MH 135 /* IPv6 Mobility Header *//* 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/* last return value of *_input(), meaning "all job for this pkt is done". */#define IPPROTO_DONE 257/* * 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) */typedef u_int32_t in_addr_t;struct in_addr { in_addr_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 IN_LOCAL_GROUP(i) (((u_int32_t)(i) & 0xffffff00) == 0xe0000000)#define INADDR_ANY (u_int32_t)0x00000000#define INADDR_LOOPBACK (u_int32_t)0x7f000001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -