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

     1  #ifndef _IPV6_H
     2  #define _IPV6_H
     3  
     4  #include <linux/type_mapper.h>
     5  #include <linux/in6.h>
     6  
     7  /* The latest drafts declared increase in minimal mtu up to 1280. */
     8  
     9  #define IPV6_MIN_MTU	1280
    10  
    11  /*
    12   *	Advanced API
    13   *	source interface/address selection, source routing, etc...
    14   *	*under construction*
    15   */
    16  
    17  #define IPV6_SRCRT_STRICT	0x01	/* Deprecated; will be removed */
    18  #define IPV6_SRCRT_TYPE_0	0	/* Deprecated; will be removed */
    19  #define IPV6_SRCRT_TYPE_2	2	/* IPv6 type 2 Routing Header	*/
    20  
    21  /*
    22   *	routing header
    23   */
    24  struct ipv6_rt_hdr {
    25  	__u8		nexthdr;
    26  	__u8		hdrlen;
    27  	__u8		type;
    28  	__u8		segments_left;
    29  
    30  	/*
    31  	 *	type specific data
    32  	 *	variable length field
    33  	 */
    34  };
    35  
    36  
    37  struct ipv6_opt_hdr {
    38  	__u8 		nexthdr;
    39  	__u8 		hdrlen;
    40  	/* 
    41  	 * TLV encoded option data follows.
    42  	 */
    43  } __attribute__((packed));	/* required for some archs */
    44  
    45  #define ipv6_destopt_hdr ipv6_opt_hdr
    46  #define ipv6_hopopt_hdr  ipv6_opt_hdr
    47  
    48  /* Router Alert option values (RFC2711) */
    49  #define IPV6_OPT_ROUTERALERT_MLD	0x0000	/* MLD(RFC2710) */
    50  
    51  /*
    52   *	routing header type 0 (used in cmsghdr struct)
    53   */
    54  
    55  struct rt0_hdr {
    56  	struct ipv6_rt_hdr	rt_hdr;
    57  	__u32			reserved;
    58  	struct in6_addr		addr[0];
    59  
    60  #define rt0_type		rt_hdr.type
    61  };
    62  
    63  /*
    64   *	routing header type 2
    65   */
    66  
    67  struct rt2_hdr {
    68  	struct ipv6_rt_hdr	rt_hdr;
    69  	__u32			reserved;
    70  	struct in6_addr		addr;
    71  
    72  #define rt2_type		rt_hdr.type
    73  };
    74  
    75  /*
    76   *	home address option in destination options header
    77   */
    78  
    79  struct ipv6_destopt_hao {
    80  	__u8			type;
    81  	__u8			length;
    82  	struct in6_addr		addr;
    83  } __attribute__((packed));
    84  
    85  /*
    86   *	IPv6 fixed header
    87   *
    88   *	BEWARE, it is incorrect. The first 4 bits of flow_lbl
    89   *	are glued to priority now, forming "class".
    90   */
    91  
    92  struct ipv6hdr {
    93  #if defined(__LITTLE_ENDIAN_BITFIELD)
    94  	__u8			priority:4,
    95  				version:4;
    96  #elif defined(__BIG_ENDIAN_BITFIELD)
    97  	__u8			version:4,
    98  				priority:4;
    99  #else
   100  #error	"Please fix <asm/byteorder.h>"
   101  #endif
   102  	__u8			flow_lbl[3];
   103  
   104  	__be16			payload_len;
   105  	__u8			nexthdr;
   106  	__u8			hop_limit;
   107  
   108  	struct	in6_addr	saddr;
   109  	struct	in6_addr	daddr;
   110  };
   111  
   112  
   113  /* index values for the variables in ipv6_devconf */
   114  enum {
   115  	DEVCONF_FORWARDING = 0,
   116  	DEVCONF_HOPLIMIT,
   117  	DEVCONF_MTU6,
   118  	DEVCONF_ACCEPT_RA,
   119  	DEVCONF_ACCEPT_REDIRECTS,
   120  	DEVCONF_AUTOCONF,
   121  	DEVCONF_DAD_TRANSMITS,
   122  	DEVCONF_RTR_SOLICITS,
   123  	DEVCONF_RTR_SOLICIT_INTERVAL,
   124  	DEVCONF_RTR_SOLICIT_DELAY,
   125  	DEVCONF_USE_TEMPADDR,
   126  	DEVCONF_TEMP_VALID_LFT,
   127  	DEVCONF_TEMP_PREFERED_LFT,
   128  	DEVCONF_REGEN_MAX_RETRY,
   129  	DEVCONF_MAX_DESYNC_FACTOR,
   130  	DEVCONF_MAX_ADDRESSES,
   131  	DEVCONF_FORCE_MLD_VERSION,
   132  	DEVCONF_ACCEPT_RA_DEFRTR,
   133  	DEVCONF_ACCEPT_RA_PINFO,
   134  	DEVCONF_ACCEPT_RA_RTR_PREF,
   135  	DEVCONF_RTR_PROBE_INTERVAL,
   136  	DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
   137  	DEVCONF_PROXY_NDP,
   138  	DEVCONF_OPTIMISTIC_DAD,
   139  	DEVCONF_ACCEPT_SOURCE_ROUTE,
   140  	DEVCONF_MC_FORWARDING,
   141  	DEVCONF_DISABLE_IPV6,
   142  	DEVCONF_ACCEPT_DAD,
   143  	DEVCONF_FORCE_TLLAO,
   144  	DEVCONF_NDISC_NOTIFY,
   145  	DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
   146  	DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
   147  	DEVCONF_SUPPRESS_FRAG_NDISC,
   148  	DEVCONF_ACCEPT_RA_FROM_LOCAL,
   149  	DEVCONF_USE_OPTIMISTIC,
   150  	DEVCONF_ACCEPT_RA_MTU,
   151  	DEVCONF_STABLE_SECRET,
   152  	DEVCONF_USE_OIF_ADDRS_ONLY,
   153  	DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
   154  	DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
   155  	DEVCONF_MAX
   156  };
   157  
   158  
   159  #endif /* _IPV6_H */