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 */