github.com/looshlee/beatles@v0.0.0-20220727174639-742810ab631c/bpf/include/linux/in.h (about)

     1  /*
     2   * INET		An implementation of the TCP/IP protocol suite for the LINUX
     3   *		operating system.  INET is implemented using the  BSD Socket
     4   *		interface as the means of communication with the user level.
     5   *
     6   *		Definitions of the Internet Protocol.
     7   *
     8   * Version:	@(#)in.h	1.0.1	04/21/93
     9   *
    10   * Authors:	Original taken from the GNU Project <netinet/in.h> file.
    11   *		Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
    12   *
    13   *		This program is free software; you can redistribute it and/or
    14   *		modify it under the terms of the GNU General Public License
    15   *		as published by the Free Software Foundation; either version
    16   *		2 of the License, or (at your option) any later version.
    17   */
    18  #ifndef _LINUX_IN_H
    19  #define _LINUX_IN_H
    20  
    21  #include <linux/type_mapper.h>
    22  
    23  /* Standard well-defined IP protocols.  */
    24  enum {
    25    IPPROTO_IP = 0,		/* Dummy protocol for TCP		*/
    26  #define IPPROTO_IP		IPPROTO_IP
    27    IPPROTO_ICMP = 1,		/* Internet Control Message Protocol	*/
    28  #define IPPROTO_ICMP		IPPROTO_ICMP
    29    IPPROTO_IGMP = 2,		/* Internet Group Management Protocol	*/
    30  #define IPPROTO_IGMP		IPPROTO_IGMP
    31    IPPROTO_IPIP = 4,		/* IPIP tunnels (older KA9Q tunnels use 94) */
    32  #define IPPROTO_IPIP		IPPROTO_IPIP
    33    IPPROTO_TCP = 6,		/* Transmission Control Protocol	*/
    34  #define IPPROTO_TCP		IPPROTO_TCP
    35    IPPROTO_EGP = 8,		/* Exterior Gateway Protocol		*/
    36  #define IPPROTO_EGP		IPPROTO_EGP
    37    IPPROTO_PUP = 12,		/* PUP protocol				*/
    38  #define IPPROTO_PUP		IPPROTO_PUP
    39    IPPROTO_UDP = 17,		/* User Datagram Protocol		*/
    40  #define IPPROTO_UDP		IPPROTO_UDP
    41    IPPROTO_IDP = 22,		/* XNS IDP protocol			*/
    42  #define IPPROTO_IDP		IPPROTO_IDP
    43    IPPROTO_TP = 29,		/* SO Transport Protocol Class 4	*/
    44  #define IPPROTO_TP		IPPROTO_TP
    45    IPPROTO_DCCP = 33,		/* Datagram Congestion Control Protocol */
    46  #define IPPROTO_DCCP		IPPROTO_DCCP
    47    IPPROTO_IPV6 = 41,		/* IPv6-in-IPv4 tunnelling		*/
    48  #define IPPROTO_IPV6		IPPROTO_IPV6
    49    IPPROTO_RSVP = 46,		/* RSVP Protocol			*/
    50  #define IPPROTO_RSVP		IPPROTO_RSVP
    51    IPPROTO_GRE = 47,		/* Cisco GRE tunnels (rfc 1701,1702)	*/
    52  #define IPPROTO_GRE		IPPROTO_GRE
    53    IPPROTO_ESP = 50,		/* Encapsulation Security Payload protocol */
    54  #define IPPROTO_ESP		IPPROTO_ESP
    55    IPPROTO_AH = 51,		/* Authentication Header protocol	*/
    56  #define IPPROTO_AH		IPPROTO_AH
    57    IPPROTO_MTP = 92,		/* Multicast Transport Protocol		*/
    58  #define IPPROTO_MTP		IPPROTO_MTP
    59    IPPROTO_BEETPH = 94,		/* IP option pseudo header for BEET	*/
    60  #define IPPROTO_BEETPH		IPPROTO_BEETPH
    61    IPPROTO_ENCAP = 98,		/* Encapsulation Header			*/
    62  #define IPPROTO_ENCAP		IPPROTO_ENCAP
    63    IPPROTO_PIM = 103,		/* Protocol Independent Multicast	*/
    64  #define IPPROTO_PIM		IPPROTO_PIM
    65    IPPROTO_COMP = 108,		/* Compression Header Protocol		*/
    66  #define IPPROTO_COMP		IPPROTO_COMP
    67    IPPROTO_SCTP = 132,		/* Stream Control Transport Protocol	*/
    68  #define IPPROTO_SCTP		IPPROTO_SCTP
    69    IPPROTO_UDPLITE = 136,	/* UDP-Lite (RFC 3828)			*/
    70  #define IPPROTO_UDPLITE		IPPROTO_UDPLITE
    71    IPPROTO_MPLS = 137,		/* MPLS in IP (RFC 4023)		*/
    72  #define IPPROTO_MPLS		IPPROTO_MPLS
    73    IPPROTO_RAW = 255,		/* Raw IP packets			*/
    74  #define IPPROTO_RAW		IPPROTO_RAW
    75    IPPROTO_MAX
    76  };
    77  
    78  /* Internet address. */
    79  struct in_addr {
    80  	__be32	s_addr;
    81  };
    82  
    83  #define IP_TOS		1
    84  #define IP_TTL		2
    85  #define IP_HDRINCL	3
    86  #define IP_OPTIONS	4
    87  #define IP_ROUTER_ALERT	5
    88  #define IP_RECVOPTS	6
    89  #define IP_RETOPTS	7
    90  #define IP_PKTINFO	8
    91  #define IP_PKTOPTIONS	9
    92  #define IP_MTU_DISCOVER	10
    93  #define IP_RECVERR	11
    94  #define IP_RECVTTL	12
    95  #define	IP_RECVTOS	13
    96  #define IP_MTU		14
    97  #define IP_FREEBIND	15
    98  #define IP_IPSEC_POLICY	16
    99  #define IP_XFRM_POLICY	17
   100  #define IP_PASSSEC	18
   101  #define IP_TRANSPARENT	19
   102  
   103  /* BSD compatibility */
   104  #define IP_RECVRETOPTS	IP_RETOPTS
   105  
   106  /* TProxy original addresses */
   107  #define IP_ORIGDSTADDR       20
   108  #define IP_RECVORIGDSTADDR   IP_ORIGDSTADDR
   109  
   110  #define IP_MINTTL       21
   111  #define IP_NODEFRAG     22
   112  #define IP_CHECKSUM	23
   113  #define IP_BIND_ADDRESS_NO_PORT	24
   114  
   115  /* IP_MTU_DISCOVER values */
   116  #define IP_PMTUDISC_DONT		0	/* Never send DF frames */
   117  #define IP_PMTUDISC_WANT		1	/* Use per route hints	*/
   118  #define IP_PMTUDISC_DO			2	/* Always DF		*/
   119  #define IP_PMTUDISC_PROBE		3       /* Ignore dst pmtu      */
   120  /* Always use interface mtu (ignores dst pmtu) but don't set DF flag.
   121   * Also incoming ICMP frag_needed notifications will be ignored on
   122   * this socket to prevent accepting spoofed ones.
   123   */
   124  #define IP_PMTUDISC_INTERFACE		4
   125  /* weaker version of IP_PMTUDISC_INTERFACE, which allos packets to get
   126   * fragmented if they exeed the interface mtu
   127   */
   128  #define IP_PMTUDISC_OMIT		5
   129  
   130  #define IP_MULTICAST_IF			32
   131  #define IP_MULTICAST_TTL 		33
   132  #define IP_MULTICAST_LOOP 		34
   133  #define IP_ADD_MEMBERSHIP		35
   134  #define IP_DROP_MEMBERSHIP		36
   135  #define IP_UNBLOCK_SOURCE		37
   136  #define IP_BLOCK_SOURCE			38
   137  #define IP_ADD_SOURCE_MEMBERSHIP	39
   138  #define IP_DROP_SOURCE_MEMBERSHIP	40
   139  #define IP_MSFILTER			41
   140  #define MCAST_JOIN_GROUP		42
   141  #define MCAST_BLOCK_SOURCE		43
   142  #define MCAST_UNBLOCK_SOURCE		44
   143  #define MCAST_LEAVE_GROUP		45
   144  #define MCAST_JOIN_SOURCE_GROUP		46
   145  #define MCAST_LEAVE_SOURCE_GROUP	47
   146  #define MCAST_MSFILTER			48
   147  #define IP_MULTICAST_ALL		49
   148  #define IP_UNICAST_IF			50
   149  
   150  #define MCAST_EXCLUDE	0
   151  #define MCAST_INCLUDE	1
   152  
   153  /* These need to appear somewhere around here */
   154  #define IP_DEFAULT_MULTICAST_TTL        1
   155  #define IP_DEFAULT_MULTICAST_LOOP       1
   156  
   157  /* Request struct for multicast socket ops */
   158  
   159  /*
   160   * Definitions of the bits in an Internet address integer.
   161   * On subnets, host and network parts are found according
   162   * to the subnet mask, not these masks.
   163   */
   164  #define	IN_CLASSA(a)		((((long int) (a)) & 0x80000000) == 0)
   165  #define	IN_CLASSA_NET		0xff000000
   166  #define	IN_CLASSA_NSHIFT	24
   167  #define	IN_CLASSA_HOST		(0xffffffff & ~IN_CLASSA_NET)
   168  #define	IN_CLASSA_MAX		128
   169  
   170  #define	IN_CLASSB(a)		((((long int) (a)) & 0xc0000000) == 0x80000000)
   171  #define	IN_CLASSB_NET		0xffff0000
   172  #define	IN_CLASSB_NSHIFT	16
   173  #define	IN_CLASSB_HOST		(0xffffffff & ~IN_CLASSB_NET)
   174  #define	IN_CLASSB_MAX		65536
   175  
   176  #define	IN_CLASSC(a)		((((long int) (a)) & 0xe0000000) == 0xc0000000)
   177  #define	IN_CLASSC_NET		0xffffff00
   178  #define	IN_CLASSC_NSHIFT	8
   179  #define	IN_CLASSC_HOST		(0xffffffff & ~IN_CLASSC_NET)
   180  
   181  #define	IN_CLASSD(a)		((((long int) (a)) & 0xf0000000) == 0xe0000000)
   182  #define	IN_MULTICAST(a)		IN_CLASSD(a)
   183  #define IN_MULTICAST_NET	0xF0000000
   184  
   185  #define	IN_EXPERIMENTAL(a)	((((long int) (a)) & 0xf0000000) == 0xf0000000)
   186  #define	IN_BADCLASS(a)		IN_EXPERIMENTAL((a))
   187  
   188  /* Address to accept any incoming messages. */
   189  #define	INADDR_ANY		((unsigned long int) 0x00000000)
   190  
   191  /* Address to send to all hosts. */
   192  #define	INADDR_BROADCAST	((unsigned long int) 0xffffffff)
   193  
   194  /* Address indicating an error return. */
   195  #define	INADDR_NONE		((unsigned long int) 0xffffffff)
   196  
   197  /* Network number for local host loopback. */
   198  #define	IN_LOOPBACKNET		127
   199  
   200  /* Address to loopback in software to local host.  */
   201  #define	INADDR_LOOPBACK		0x7f000001	/* 127.0.0.1   */
   202  #define	IN_LOOPBACK(a)		((((long int) (a)) & 0xff000000) == 0x7f000000)
   203  
   204  /* Defines for Multicast INADDR */
   205  #define INADDR_UNSPEC_GROUP   	0xe0000000U	/* 224.0.0.0   */
   206  #define INADDR_ALLHOSTS_GROUP 	0xe0000001U	/* 224.0.0.1   */
   207  #define INADDR_ALLRTRS_GROUP    0xe0000002U	/* 224.0.0.2 */
   208  #define INADDR_MAX_LOCAL_GROUP  0xe00000ffU	/* 224.0.0.255 */
   209  
   210  #endif /* _LINUX_IN_H */