cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ipv6.h (4228B)


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