diff options
Diffstat (limited to 'include/linux/ipv6.h')
| -rw-r--r-- | include/linux/ipv6.h | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 297853c841b4..4f435c59de06 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
| @@ -29,6 +29,7 @@ struct in6_ifreq { | |||
| 29 | 29 | ||
| 30 | #define IPV6_SRCRT_STRICT 0x01 /* this hop must be a neighbor */ | 30 | #define IPV6_SRCRT_STRICT 0x01 /* this hop must be a neighbor */ |
| 31 | #define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */ | 31 | #define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */ |
| 32 | #define IPV6_SRCRT_TYPE_2 2 /* IPv6 type 2 Routing Header */ | ||
| 32 | 33 | ||
| 33 | /* | 34 | /* |
| 34 | * routing header | 35 | * routing header |
| @@ -73,25 +74,47 @@ struct rt0_hdr { | |||
| 73 | #define rt0_type rt_hdr.type | 74 | #define rt0_type rt_hdr.type |
| 74 | }; | 75 | }; |
| 75 | 76 | ||
| 77 | /* | ||
| 78 | * routing header type 2 | ||
| 79 | */ | ||
| 80 | |||
| 81 | struct rt2_hdr { | ||
| 82 | struct ipv6_rt_hdr rt_hdr; | ||
| 83 | __u32 reserved; | ||
| 84 | struct in6_addr addr; | ||
| 85 | |||
| 86 | #define rt2_type rt_hdr.type | ||
| 87 | }; | ||
| 88 | |||
| 89 | /* | ||
| 90 | * home address option in destination options header | ||
| 91 | */ | ||
| 92 | |||
| 93 | struct ipv6_destopt_hao { | ||
| 94 | __u8 type; | ||
| 95 | __u8 length; | ||
| 96 | struct in6_addr addr; | ||
| 97 | } __attribute__ ((__packed__)); | ||
| 98 | |||
| 76 | struct ipv6_auth_hdr { | 99 | struct ipv6_auth_hdr { |
| 77 | __u8 nexthdr; | 100 | __u8 nexthdr; |
| 78 | __u8 hdrlen; /* This one is measured in 32 bit units! */ | 101 | __u8 hdrlen; /* This one is measured in 32 bit units! */ |
| 79 | __u16 reserved; | 102 | __be16 reserved; |
| 80 | __u32 spi; | 103 | __be32 spi; |
| 81 | __u32 seq_no; /* Sequence number */ | 104 | __be32 seq_no; /* Sequence number */ |
| 82 | __u8 auth_data[0]; /* Length variable but >=4. Mind the 64 bit alignment! */ | 105 | __u8 auth_data[0]; /* Length variable but >=4. Mind the 64 bit alignment! */ |
| 83 | }; | 106 | }; |
| 84 | 107 | ||
| 85 | struct ipv6_esp_hdr { | 108 | struct ipv6_esp_hdr { |
| 86 | __u32 spi; | 109 | __be32 spi; |
| 87 | __u32 seq_no; /* Sequence number */ | 110 | __be32 seq_no; /* Sequence number */ |
| 88 | __u8 enc_data[0]; /* Length variable but >=8. Mind the 64 bit alignment! */ | 111 | __u8 enc_data[0]; /* Length variable but >=8. Mind the 64 bit alignment! */ |
| 89 | }; | 112 | }; |
| 90 | 113 | ||
| 91 | struct ipv6_comp_hdr { | 114 | struct ipv6_comp_hdr { |
| 92 | __u8 nexthdr; | 115 | __u8 nexthdr; |
| 93 | __u8 flags; | 116 | __u8 flags; |
| 94 | __u16 cpi; | 117 | __be16 cpi; |
| 95 | }; | 118 | }; |
| 96 | 119 | ||
| 97 | /* | 120 | /* |
| @@ -113,7 +136,7 @@ struct ipv6hdr { | |||
| 113 | #endif | 136 | #endif |
| 114 | __u8 flow_lbl[3]; | 137 | __u8 flow_lbl[3]; |
| 115 | 138 | ||
| 116 | __u16 payload_len; | 139 | __be16 payload_len; |
| 117 | __u8 nexthdr; | 140 | __u8 nexthdr; |
| 118 | __u8 hop_limit; | 141 | __u8 hop_limit; |
| 119 | 142 | ||
| @@ -153,6 +176,7 @@ struct ipv6_devconf { | |||
| 153 | __s32 accept_ra_rt_info_max_plen; | 176 | __s32 accept_ra_rt_info_max_plen; |
| 154 | #endif | 177 | #endif |
| 155 | #endif | 178 | #endif |
| 179 | __s32 proxy_ndp; | ||
| 156 | void *sysctl; | 180 | void *sysctl; |
| 157 | }; | 181 | }; |
| 158 | 182 | ||
| @@ -180,6 +204,7 @@ enum { | |||
| 180 | DEVCONF_ACCEPT_RA_RTR_PREF, | 204 | DEVCONF_ACCEPT_RA_RTR_PREF, |
| 181 | DEVCONF_RTR_PROBE_INTERVAL, | 205 | DEVCONF_RTR_PROBE_INTERVAL, |
| 182 | DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN, | 206 | DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN, |
| 207 | DEVCONF_PROXY_NDP, | ||
| 183 | DEVCONF_MAX | 208 | DEVCONF_MAX |
| 184 | }; | 209 | }; |
| 185 | 210 | ||
| @@ -206,6 +231,9 @@ struct inet6_skb_parm { | |||
| 206 | __u16 lastopt; | 231 | __u16 lastopt; |
| 207 | __u32 nhoff; | 232 | __u32 nhoff; |
| 208 | __u16 flags; | 233 | __u16 flags; |
| 234 | #ifdef CONFIG_IPV6_MIP6 | ||
| 235 | __u16 dsthao; | ||
| 236 | #endif | ||
| 209 | 237 | ||
| 210 | #define IP6SKB_XFRM_TRANSFORMED 1 | 238 | #define IP6SKB_XFRM_TRANSFORMED 1 |
| 211 | }; | 239 | }; |
| @@ -242,6 +270,9 @@ struct ipv6_pinfo { | |||
| 242 | struct in6_addr rcv_saddr; | 270 | struct in6_addr rcv_saddr; |
| 243 | struct in6_addr daddr; | 271 | struct in6_addr daddr; |
| 244 | struct in6_addr *daddr_cache; | 272 | struct in6_addr *daddr_cache; |
| 273 | #ifdef CONFIG_IPV6_SUBTREES | ||
| 274 | struct in6_addr *saddr_cache; | ||
| 275 | #endif | ||
| 245 | 276 | ||
| 246 | __u32 flow_label; | 277 | __u32 flow_label; |
| 247 | __u32 frag_size; | 278 | __u32 frag_size; |
| @@ -430,7 +461,7 @@ static inline struct raw6_sock *raw6_sk(const struct sock *sk) | |||
| 430 | 461 | ||
| 431 | #define INET6_MATCH(__sk, __hash, __saddr, __daddr, __ports, __dif)\ | 462 | #define INET6_MATCH(__sk, __hash, __saddr, __daddr, __ports, __dif)\ |
| 432 | (((__sk)->sk_hash == (__hash)) && \ | 463 | (((__sk)->sk_hash == (__hash)) && \ |
| 433 | ((*((__u32 *)&(inet_sk(__sk)->dport))) == (__ports)) && \ | 464 | ((*((__portpair *)&(inet_sk(__sk)->dport))) == (__ports)) && \ |
| 434 | ((__sk)->sk_family == AF_INET6) && \ | 465 | ((__sk)->sk_family == AF_INET6) && \ |
| 435 | ipv6_addr_equal(&inet6_sk(__sk)->daddr, (__saddr)) && \ | 466 | ipv6_addr_equal(&inet6_sk(__sk)->daddr, (__saddr)) && \ |
| 436 | ipv6_addr_equal(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \ | 467 | ipv6_addr_equal(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \ |
