at v3.8 3.0 kB view raw
1#ifndef _UAPI_IPV6_H 2#define _UAPI_IPV6_H 3 4#include <linux/types.h> 5#include <linux/in6.h> 6#include <asm/byteorder.h> 7 8/* The latest drafts declared increase in minimal mtu up to 1280. */ 9 10#define IPV6_MIN_MTU 1280 11 12/* 13 * Advanced API 14 * source interface/address selection, source routing, etc... 15 * *under construction* 16 */ 17 18 19struct in6_pktinfo { 20 struct in6_addr ipi6_addr; 21 int ipi6_ifindex; 22}; 23 24struct ip6_mtuinfo { 25 struct sockaddr_in6 ip6m_addr; 26 __u32 ip6m_mtu; 27}; 28 29struct in6_ifreq { 30 struct in6_addr ifr6_addr; 31 __u32 ifr6_prefixlen; 32 int ifr6_ifindex; 33}; 34 35#define IPV6_SRCRT_STRICT 0x01 /* Deprecated; will be removed */ 36#define IPV6_SRCRT_TYPE_0 0 /* Deprecated; will be removed */ 37#define IPV6_SRCRT_TYPE_2 2 /* IPv6 type 2 Routing Header */ 38 39/* 40 * routing header 41 */ 42struct ipv6_rt_hdr { 43 __u8 nexthdr; 44 __u8 hdrlen; 45 __u8 type; 46 __u8 segments_left; 47 48 /* 49 * type specific data 50 * variable length field 51 */ 52}; 53 54 55struct ipv6_opt_hdr { 56 __u8 nexthdr; 57 __u8 hdrlen; 58 /* 59 * TLV encoded option data follows. 60 */ 61} __attribute__((packed)); /* required for some archs */ 62 63#define ipv6_destopt_hdr ipv6_opt_hdr 64#define ipv6_hopopt_hdr ipv6_opt_hdr 65 66 67/* 68 * routing header type 0 (used in cmsghdr struct) 69 */ 70 71struct rt0_hdr { 72 struct ipv6_rt_hdr rt_hdr; 73 __u32 reserved; 74 struct in6_addr addr[0]; 75 76#define rt0_type rt_hdr.type 77}; 78 79/* 80 * routing header type 2 81 */ 82 83struct rt2_hdr { 84 struct ipv6_rt_hdr rt_hdr; 85 __u32 reserved; 86 struct in6_addr addr; 87 88#define rt2_type rt_hdr.type 89}; 90 91/* 92 * home address option in destination options header 93 */ 94 95struct ipv6_destopt_hao { 96 __u8 type; 97 __u8 length; 98 struct in6_addr addr; 99} __attribute__((packed)); 100 101/* 102 * IPv6 fixed header 103 * 104 * BEWARE, it is incorrect. The first 4 bits of flow_lbl 105 * are glued to priority now, forming "class". 106 */ 107 108struct ipv6hdr { 109#if defined(__LITTLE_ENDIAN_BITFIELD) 110 __u8 priority:4, 111 version:4; 112#elif defined(__BIG_ENDIAN_BITFIELD) 113 __u8 version:4, 114 priority:4; 115#else 116#error "Please fix <asm/byteorder.h>" 117#endif 118 __u8 flow_lbl[3]; 119 120 __be16 payload_len; 121 __u8 nexthdr; 122 __u8 hop_limit; 123 124 struct in6_addr saddr; 125 struct in6_addr daddr; 126}; 127 128 129/* index values for the variables in ipv6_devconf */ 130enum { 131 DEVCONF_FORWARDING = 0, 132 DEVCONF_HOPLIMIT, 133 DEVCONF_MTU6, 134 DEVCONF_ACCEPT_RA, 135 DEVCONF_ACCEPT_REDIRECTS, 136 DEVCONF_AUTOCONF, 137 DEVCONF_DAD_TRANSMITS, 138 DEVCONF_RTR_SOLICITS, 139 DEVCONF_RTR_SOLICIT_INTERVAL, 140 DEVCONF_RTR_SOLICIT_DELAY, 141 DEVCONF_USE_TEMPADDR, 142 DEVCONF_TEMP_VALID_LFT, 143 DEVCONF_TEMP_PREFERED_LFT, 144 DEVCONF_REGEN_MAX_RETRY, 145 DEVCONF_MAX_DESYNC_FACTOR, 146 DEVCONF_MAX_ADDRESSES, 147 DEVCONF_FORCE_MLD_VERSION, 148 DEVCONF_ACCEPT_RA_DEFRTR, 149 DEVCONF_ACCEPT_RA_PINFO, 150 DEVCONF_ACCEPT_RA_RTR_PREF, 151 DEVCONF_RTR_PROBE_INTERVAL, 152 DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN, 153 DEVCONF_PROXY_NDP, 154 DEVCONF_OPTIMISTIC_DAD, 155 DEVCONF_ACCEPT_SOURCE_ROUTE, 156 DEVCONF_MC_FORWARDING, 157 DEVCONF_DISABLE_IPV6, 158 DEVCONF_ACCEPT_DAD, 159 DEVCONF_FORCE_TLLAO, 160 DEVCONF_NDISC_NOTIFY, 161 DEVCONF_MAX 162}; 163 164 165#endif /* _UAPI_IPV6_H */