diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2005-09-07 20:59:17 -0400 |
---|---|---|
committer | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2005-09-07 20:59:17 -0400 |
commit | 333fad5364d6b457c8d837f7d05802d2aaf8a961 (patch) | |
tree | 92149276982a827457e9c556c7ef82ec3b09fb52 /include | |
parent | 4706df3d3c42af802597d82c8b1542c3d52eab23 (diff) |
[IPV6]: Support several new sockopt / ancillary data in Advanced API (RFC3542).
Support several new socket options / ancillary data:
IPV6_RECVPKTINFO, IPV6_PKTINFO,
IPV6_RECVHOPOPTS, IPV6_HOPOPTS,
IPV6_RECVDSTOPTS, IPV6_DSTOPTS, IPV6_RTHDRDSTOPTS,
IPV6_RECVRTHDR, IPV6_RTHDR,
IPV6_RECVHOPOPTS, IPV6_HOPOPTS
Old semantics are preserved as IPV6_2292xxxx so that
we can maintain backward compatibility.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/in6.h | 38 | ||||
-rw-r--r-- | include/linux/ipv6.h | 10 | ||||
-rw-r--r-- | include/net/ipv6.h | 4 |
3 files changed, 44 insertions, 8 deletions
diff --git a/include/linux/in6.h b/include/linux/in6.h index dcf5720ffcbb..c11022f2f2ac 100644 --- a/include/linux/in6.h +++ b/include/linux/in6.h | |||
@@ -148,13 +148,13 @@ struct in6_flowlabel_req | |||
148 | */ | 148 | */ |
149 | 149 | ||
150 | #define IPV6_ADDRFORM 1 | 150 | #define IPV6_ADDRFORM 1 |
151 | #define IPV6_PKTINFO 2 | 151 | #define IPV6_2292PKTINFO 2 |
152 | #define IPV6_HOPOPTS 3 | 152 | #define IPV6_2292HOPOPTS 3 |
153 | #define IPV6_DSTOPTS 4 | 153 | #define IPV6_2292DSTOPTS 4 |
154 | #define IPV6_RTHDR 5 | 154 | #define IPV6_2292RTHDR 5 |
155 | #define IPV6_PKTOPTIONS 6 | 155 | #define IPV6_2292PKTOPTIONS 6 |
156 | #define IPV6_CHECKSUM 7 | 156 | #define IPV6_CHECKSUM 7 |
157 | #define IPV6_HOPLIMIT 8 | 157 | #define IPV6_2292HOPLIMIT 8 |
158 | #define IPV6_NEXTHOP 9 | 158 | #define IPV6_NEXTHOP 9 |
159 | #define IPV6_AUTHHDR 10 /* obsolete */ | 159 | #define IPV6_AUTHHDR 10 /* obsolete */ |
160 | #define IPV6_FLOWINFO 11 | 160 | #define IPV6_FLOWINFO 11 |
@@ -198,4 +198,30 @@ struct in6_flowlabel_req | |||
198 | * MCAST_MSFILTER 48 | 198 | * MCAST_MSFILTER 48 |
199 | */ | 199 | */ |
200 | 200 | ||
201 | /* RFC3542 advanced socket options (50-67) */ | ||
202 | #define IPV6_RECVPKTINFO 50 | ||
203 | #define IPV6_PKTINFO 51 | ||
204 | #if 0 | ||
205 | #define IPV6_RECVPATHMTU 52 | ||
206 | #define IPV6_PATHMTU 53 | ||
207 | #define IPV6_DONTFRAG 54 | ||
208 | #define IPV6_USE_MIN_MTU 55 | ||
209 | #endif | ||
210 | #define IPV6_RECVHOPOPTS 56 | ||
211 | #define IPV6_HOPOPTS 57 | ||
212 | #if 0 | ||
213 | #define IPV6_RECVRTHDRDSTOPTS 58 /* Unused, see net/ipv6/datagram.c */ | ||
214 | #endif | ||
215 | #define IPV6_RTHDRDSTOPTS 59 | ||
216 | #define IPV6_RECVRTHDR 60 | ||
217 | #define IPV6_RTHDR 61 | ||
218 | #define IPV6_RECVDSTOPTS 62 | ||
219 | #define IPV6_DSTOPTS 63 | ||
220 | #define IPV6_RECVHOPLIMIT 64 | ||
221 | #define IPV6_HOPLIMIT 65 | ||
222 | #if 0 | ||
223 | #define IPV6_RECVTCLASS 66 | ||
224 | #define IPV6_TCLASS 67 | ||
225 | #endif | ||
226 | |||
201 | #endif | 227 | #endif |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 3c7dbc6a0a70..2581f1c94df5 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -189,6 +189,7 @@ struct inet6_skb_parm { | |||
189 | __u16 dst0; | 189 | __u16 dst0; |
190 | __u16 srcrt; | 190 | __u16 srcrt; |
191 | __u16 dst1; | 191 | __u16 dst1; |
192 | __u16 lastopt; | ||
192 | }; | 193 | }; |
193 | 194 | ||
194 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) | 195 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) |
@@ -234,14 +235,19 @@ struct ipv6_pinfo { | |||
234 | /* pktoption flags */ | 235 | /* pktoption flags */ |
235 | union { | 236 | union { |
236 | struct { | 237 | struct { |
237 | __u8 srcrt:2, | 238 | __u16 srcrt:2, |
239 | osrcrt:2, | ||
238 | rxinfo:1, | 240 | rxinfo:1, |
241 | rxoinfo:1, | ||
239 | rxhlim:1, | 242 | rxhlim:1, |
243 | rxohlim:1, | ||
240 | hopopts:1, | 244 | hopopts:1, |
245 | ohopopts:1, | ||
241 | dstopts:1, | 246 | dstopts:1, |
247 | odstopts:1, | ||
242 | rxflow:1; | 248 | rxflow:1; |
243 | } bits; | 249 | } bits; |
244 | __u8 all; | 250 | __u16 all; |
245 | } rxopt; | 251 | } rxopt; |
246 | 252 | ||
247 | /* sockopt flags */ | 253 | /* sockopt flags */ |
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 3203eaff4bd4..8a9fe9434e94 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
@@ -233,6 +233,10 @@ extern int ip6_ra_control(struct sock *sk, int sel, | |||
233 | extern int ipv6_parse_hopopts(struct sk_buff *skb, int); | 233 | extern int ipv6_parse_hopopts(struct sk_buff *skb, int); |
234 | 234 | ||
235 | extern struct ipv6_txoptions * ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt); | 235 | extern struct ipv6_txoptions * ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt); |
236 | extern struct ipv6_txoptions * ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt, | ||
237 | int newtype, | ||
238 | struct ipv6_opt_hdr __user *newopt, | ||
239 | int newoptlen); | ||
236 | 240 | ||
237 | extern int ip6_frag_nqueues; | 241 | extern int ip6_frag_nqueues; |
238 | extern atomic_t ip6_frag_mem; | 242 | extern atomic_t ip6_frag_mem; |