brintos

brintos / linux-shallow public Read only

0
0
Text · 4.2 KiB · cf592d7 Raw
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