177 lines · 3.3 KB · C
RawDownload
#ifndef _UAPI_IPV6_H#define _UAPI_IPV6_H #include <linux/libc-compat.h>#include <linux/types.h>#include <linux/in6.h>#include <asm/byteorder.h> /* The latest drafts declared increase in minimal mtu up to 1280. */ #define IPV6_MIN_MTU	1280 /* *	Advanced API *	source interface/address selection, source routing, etc... *	*under construction* */ #if __UAPI_DEF_IN6_PKTINFOstruct in6_pktinfo {	struct in6_addr	ipi6_addr;	int		ipi6_ifindex;};#endif #if __UAPI_DEF_IP6_MTUINFOstruct ip6_mtuinfo {	struct sockaddr_in6	ip6m_addr;	__u32			ip6m_mtu;};#endif struct in6_ifreq {	struct in6_addr	ifr6_addr;	__u32		ifr6_prefixlen;	int		ifr6_ifindex; }; #define IPV6_SRCRT_STRICT	0x01	/* Deprecated; will be removed */#define IPV6_SRCRT_TYPE_0	0	/* Deprecated; will be removed */#define IPV6_SRCRT_TYPE_2	2	/* IPv6 type 2 Routing Header	*/ /* *	routing header */struct ipv6_rt_hdr {	__u8		nexthdr;	__u8		hdrlen;	__u8		type;	__u8		segments_left; 	/*	 *	type specific data	 *	variable length field	 */};  struct ipv6_opt_hdr {	__u8 		nexthdr;	__u8 		hdrlen;	/* 	 * TLV encoded option data follows.	 */} __attribute__((packed));	/* required for some archs */ #define ipv6_destopt_hdr ipv6_opt_hdr#define ipv6_hopopt_hdr  ipv6_opt_hdr /* Router Alert option values (RFC2711) */#define IPV6_OPT_ROUTERALERT_MLD	0x0000	/* MLD(RFC2710) */ /* *	routing header type 0 (used in cmsghdr struct) */ struct rt0_hdr {	struct ipv6_rt_hdr	rt_hdr;	__u32			reserved;	struct in6_addr		addr[0]; #define rt0_type		rt_hdr.type}; /* *	routing header type 2 */ struct rt2_hdr {	struct ipv6_rt_hdr	rt_hdr;	__u32			reserved;	struct in6_addr		addr; #define rt2_type		rt_hdr.type}; /* *	home address option in destination options header */ struct ipv6_destopt_hao {	__u8			type;	__u8			length;	struct in6_addr		addr;} __attribute__((packed)); /* *	IPv6 fixed header * *	BEWARE, it is incorrect. The first 4 bits of flow_lbl *	are glued to priority now, forming "class". */ struct ipv6hdr {#if defined(__LITTLE_ENDIAN_BITFIELD)	__u8			priority:4,				version:4;#elif defined(__BIG_ENDIAN_BITFIELD)	__u8			version:4,				priority:4;#else#error	"Please fix <asm/byteorder.h>"#endif	__u8			flow_lbl[3]; 	__be16			payload_len;	__u8			nexthdr;	__u8			hop_limit; 	struct	in6_addr	saddr;	struct	in6_addr	daddr;};  /* index values for the variables in ipv6_devconf */enum {	DEVCONF_FORWARDING = 0,	DEVCONF_HOPLIMIT,	DEVCONF_MTU6,	DEVCONF_ACCEPT_RA,	DEVCONF_ACCEPT_REDIRECTS,	DEVCONF_AUTOCONF,	DEVCONF_DAD_TRANSMITS,	DEVCONF_RTR_SOLICITS,	DEVCONF_RTR_SOLICIT_INTERVAL,	DEVCONF_RTR_SOLICIT_DELAY,	DEVCONF_USE_TEMPADDR,	DEVCONF_TEMP_VALID_LFT,	DEVCONF_TEMP_PREFERED_LFT,	DEVCONF_REGEN_MAX_RETRY,	DEVCONF_MAX_DESYNC_FACTOR,	DEVCONF_MAX_ADDRESSES,	DEVCONF_FORCE_MLD_VERSION,	DEVCONF_ACCEPT_RA_DEFRTR,	DEVCONF_ACCEPT_RA_PINFO,	DEVCONF_ACCEPT_RA_RTR_PREF,	DEVCONF_RTR_PROBE_INTERVAL,	DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,	DEVCONF_PROXY_NDP,	DEVCONF_OPTIMISTIC_DAD,	DEVCONF_ACCEPT_SOURCE_ROUTE,	DEVCONF_MC_FORWARDING,	DEVCONF_DISABLE_IPV6,	DEVCONF_ACCEPT_DAD,	DEVCONF_FORCE_TLLAO,	DEVCONF_NDISC_NOTIFY,	DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,	DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,	DEVCONF_SUPPRESS_FRAG_NDISC,	DEVCONF_ACCEPT_RA_FROM_LOCAL,	DEVCONF_USE_OPTIMISTIC,	DEVCONF_ACCEPT_RA_MTU,	DEVCONF_MAX};  #endif /* _UAPI_IPV6_H */