207 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2#ifndef _UAPI_IPV6_H3#define _UAPI_IPV6_H4 5#include <linux/libc-compat.h>6#include <linux/types.h>7#include <linux/stddef.h>8#include <linux/in6.h>9#include <asm/byteorder.h>10 11/* The latest drafts declared increase in minimal mtu up to 1280. */12 13#define IPV6_MIN_MTU 128014 15/*16 * Advanced API17 * source interface/address selection, source routing, etc...18 * *under construction*19 */20 21#if __UAPI_DEF_IN6_PKTINFO22struct in6_pktinfo {23 struct in6_addr ipi6_addr;24 int ipi6_ifindex;25};26#endif27 28#if __UAPI_DEF_IP6_MTUINFO29struct ip6_mtuinfo {30 struct sockaddr_in6 ip6m_addr;31 __u32 ip6m_mtu;32};33#endif34 35struct in6_ifreq {36 struct in6_addr ifr6_addr;37 __u32 ifr6_prefixlen;38 int ifr6_ifindex; 39};40 41#define IPV6_SRCRT_STRICT 0x01 /* Deprecated; will be removed */42#define IPV6_SRCRT_TYPE_0 0 /* Deprecated; will be removed */43#define IPV6_SRCRT_TYPE_2 2 /* IPv6 type 2 Routing Header */44#define IPV6_SRCRT_TYPE_3 3 /* RPL Segment Routing with IPv6 */45#define IPV6_SRCRT_TYPE_4 4 /* Segment Routing with IPv6 */46 47/*48 * routing header49 */50struct ipv6_rt_hdr {51 __u8 nexthdr;52 __u8 hdrlen;53 __u8 type;54 __u8 segments_left;55 56 /*57 * type specific data58 * variable length field59 */60};61 62 63struct ipv6_opt_hdr {64 __u8 nexthdr;65 __u8 hdrlen;66 /* 67 * TLV encoded option data follows.68 */69} __attribute__((packed)); /* required for some archs */70 71#define ipv6_destopt_hdr ipv6_opt_hdr72#define ipv6_hopopt_hdr ipv6_opt_hdr73 74/* Router Alert option values (RFC2711) */75#define IPV6_OPT_ROUTERALERT_MLD 0x0000 /* MLD(RFC2710) */76 77/*78 * routing header type 0 (used in cmsghdr struct)79 */80 81struct rt0_hdr {82 struct ipv6_rt_hdr rt_hdr;83 __u32 reserved;84 struct in6_addr addr[];85 86#define rt0_type rt_hdr.type87};88 89/*90 * routing header type 291 */92 93struct rt2_hdr {94 struct ipv6_rt_hdr rt_hdr;95 __u32 reserved;96 struct in6_addr addr;97 98#define rt2_type rt_hdr.type99};100 101/*102 * home address option in destination options header103 */104 105struct ipv6_destopt_hao {106 __u8 type;107 __u8 length;108 struct in6_addr addr;109} __attribute__((packed));110 111/*112 * IPv6 fixed header113 *114 * BEWARE, it is incorrect. The first 4 bits of flow_lbl115 * are glued to priority now, forming "class".116 */117 118struct ipv6hdr {119#if defined(__LITTLE_ENDIAN_BITFIELD)120 __u8 priority:4,121 version:4;122#elif defined(__BIG_ENDIAN_BITFIELD)123 __u8 version:4,124 priority:4;125#else126#error "Please fix <asm/byteorder.h>"127#endif128 __u8 flow_lbl[3];129 130 __be16 payload_len;131 __u8 nexthdr;132 __u8 hop_limit;133 134 __struct_group(/* no tag */, addrs, /* no attrs */,135 struct in6_addr saddr;136 struct in6_addr daddr;137 );138};139 140 141/* index values for the variables in ipv6_devconf */142enum {143 DEVCONF_FORWARDING = 0,144 DEVCONF_HOPLIMIT,145 DEVCONF_MTU6,146 DEVCONF_ACCEPT_RA,147 DEVCONF_ACCEPT_REDIRECTS,148 DEVCONF_AUTOCONF,149 DEVCONF_DAD_TRANSMITS,150 DEVCONF_RTR_SOLICITS,151 DEVCONF_RTR_SOLICIT_INTERVAL,152 DEVCONF_RTR_SOLICIT_DELAY,153 DEVCONF_USE_TEMPADDR,154 DEVCONF_TEMP_VALID_LFT,155 DEVCONF_TEMP_PREFERED_LFT,156 DEVCONF_REGEN_MAX_RETRY,157 DEVCONF_MAX_DESYNC_FACTOR,158 DEVCONF_MAX_ADDRESSES,159 DEVCONF_FORCE_MLD_VERSION,160 DEVCONF_ACCEPT_RA_DEFRTR,161 DEVCONF_ACCEPT_RA_PINFO,162 DEVCONF_ACCEPT_RA_RTR_PREF,163 DEVCONF_RTR_PROBE_INTERVAL,164 DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,165 DEVCONF_PROXY_NDP,166 DEVCONF_OPTIMISTIC_DAD,167 DEVCONF_ACCEPT_SOURCE_ROUTE,168 DEVCONF_MC_FORWARDING,169 DEVCONF_DISABLE_IPV6,170 DEVCONF_ACCEPT_DAD,171 DEVCONF_FORCE_TLLAO,172 DEVCONF_NDISC_NOTIFY,173 DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,174 DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,175 DEVCONF_SUPPRESS_FRAG_NDISC,176 DEVCONF_ACCEPT_RA_FROM_LOCAL,177 DEVCONF_USE_OPTIMISTIC,178 DEVCONF_ACCEPT_RA_MTU,179 DEVCONF_STABLE_SECRET,180 DEVCONF_USE_OIF_ADDRS_ONLY,181 DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,182 DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,183 DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,184 DEVCONF_DROP_UNSOLICITED_NA,185 DEVCONF_KEEP_ADDR_ON_DOWN,186 DEVCONF_RTR_SOLICIT_MAX_INTERVAL,187 DEVCONF_SEG6_ENABLED,188 DEVCONF_SEG6_REQUIRE_HMAC,189 DEVCONF_ENHANCED_DAD,190 DEVCONF_ADDR_GEN_MODE,191 DEVCONF_DISABLE_POLICY,192 DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,193 DEVCONF_NDISC_TCLASS,194 DEVCONF_RPL_SEG_ENABLED,195 DEVCONF_RA_DEFRTR_METRIC,196 DEVCONF_IOAM6_ENABLED,197 DEVCONF_IOAM6_ID,198 DEVCONF_IOAM6_ID_WIDE,199 DEVCONF_NDISC_EVICT_NOCARRIER,200 DEVCONF_ACCEPT_UNTRACKED_NA,201 DEVCONF_ACCEPT_RA_MIN_LFT,202 DEVCONF_MAX203};204 205 206#endif /* _UAPI_IPV6_H */207