1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 **************************************************************************** 11 ****************************************************************************/ 12 #ifndef _IPV6_H 13 #define _IPV6_H 14 15 #include <linux/types.h> 16 #include <linux/in6.h> 17 #include <asm/byteorder.h> 18 19 #define IPV6_MIN_MTU 1280 20 21 struct in6_pktinfo { 22 struct in6_addr ipi6_addr; 23 int ipi6_ifindex; 24 }; 25 26 struct ip6_mtuinfo { 27 struct sockaddr_in6 ip6m_addr; 28 __u32 ip6m_mtu; 29 }; 30 31 struct in6_ifreq { 32 struct in6_addr ifr6_addr; 33 __u32 ifr6_prefixlen; 34 int ifr6_ifindex; 35 }; 36 37 #define IPV6_SRCRT_STRICT 0x01 38 #define IPV6_SRCRT_TYPE_0 0 39 #define IPV6_SRCRT_TYPE_2 2 40 41 struct ipv6_rt_hdr { 42 __u8 nexthdr; 43 __u8 hdrlen; 44 __u8 type; 45 __u8 segments_left; 46 47 }; 48 49 struct ipv6_opt_hdr { 50 __u8 nexthdr; 51 __u8 hdrlen; 52 53 } __attribute__((packed)); 54 55 #define ipv6_destopt_hdr ipv6_opt_hdr 56 #define ipv6_hopopt_hdr ipv6_opt_hdr 57 58 struct rt0_hdr { 59 struct ipv6_rt_hdr rt_hdr; 60 __u32 reserved; 61 struct in6_addr addr[0]; 62 63 #define rt0_type rt_hdr.type 64 }; 65 66 struct rt2_hdr { 67 struct ipv6_rt_hdr rt_hdr; 68 __u32 reserved; 69 struct in6_addr addr; 70 71 #define rt2_type rt_hdr.type 72 }; 73 74 struct ipv6_destopt_hao { 75 __u8 type; 76 __u8 length; 77 struct in6_addr addr; 78 } __attribute__((packed)); 79 80 struct ipv6hdr { 81 #ifdef __LITTLE_ENDIAN_BITFIELD 82 __u8 priority:4, 83 version:4; 84 #elif defined(__BIG_ENDIAN_BITFIELD) 85 __u8 version:4, 86 priority:4; 87 #else 88 #error "Please fix <asm/byteorder.h>" 89 #endif 90 __u8 flow_lbl[3]; 91 92 __be16 payload_len; 93 __u8 nexthdr; 94 __u8 hop_limit; 95 96 struct in6_addr saddr; 97 struct in6_addr daddr; 98 }; 99 100 enum { 101 DEVCONF_FORWARDING = 0, 102 DEVCONF_HOPLIMIT, 103 DEVCONF_MTU6, 104 DEVCONF_ACCEPT_RA, 105 DEVCONF_ACCEPT_REDIRECTS, 106 DEVCONF_AUTOCONF, 107 DEVCONF_DAD_TRANSMITS, 108 DEVCONF_RTR_SOLICITS, 109 DEVCONF_RTR_SOLICIT_INTERVAL, 110 DEVCONF_RTR_SOLICIT_DELAY, 111 DEVCONF_USE_TEMPADDR, 112 DEVCONF_TEMP_VALID_LFT, 113 DEVCONF_TEMP_PREFERED_LFT, 114 DEVCONF_REGEN_MAX_RETRY, 115 DEVCONF_MAX_DESYNC_FACTOR, 116 DEVCONF_MAX_ADDRESSES, 117 DEVCONF_FORCE_MLD_VERSION, 118 DEVCONF_ACCEPT_RA_DEFRTR, 119 DEVCONF_ACCEPT_RA_PINFO, 120 DEVCONF_ACCEPT_RA_RTR_PREF, 121 DEVCONF_RTR_PROBE_INTERVAL, 122 DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN, 123 DEVCONF_PROXY_NDP, 124 DEVCONF_OPTIMISTIC_DAD, 125 DEVCONF_ACCEPT_SOURCE_ROUTE, 126 DEVCONF_MC_FORWARDING, 127 DEVCONF_DISABLE_IPV6, 128 DEVCONF_ACCEPT_DAD, 129 DEVCONF_FORCE_TLLAO, 130 DEVCONF_MAX 131 }; 132 133 #endif 134