diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-09-24 01:52:47 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-09-24 01:52:47 -0400 |
| commit | 23930fa1cebfea6f79881c588ccd1b0781e49e3f (patch) | |
| tree | 36d29e3f83661c4f5f45b6f74ac0d5f9886867a8 /net/ipv6/ipv6_sockglue.c | |
| parent | 36b35a5be0e4b406acd816e2122d153e875105be (diff) | |
| parent | 4f5537de7c1531398e84e18a24f667e49cc94208 (diff) | |
Merge branch 'master' into upstream
Diffstat (limited to 'net/ipv6/ipv6_sockglue.c')
| -rw-r--r-- | net/ipv6/ipv6_sockglue.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index a5eaaf693abf..4f3bb7fcc8b5 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c @@ -407,8 +407,16 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, /* routing header option needs extra check */ if (optname == IPV6_RTHDR && opt->srcrt) { struct ipv6_rt_hdr *rthdr = opt->srcrt; - if (rthdr->type) + switch (rthdr->type) { + case IPV6_SRCRT_TYPE_0: +#ifdef CONFIG_IPV6_MIP6 + case IPV6_SRCRT_TYPE_2: +#endif + break; + default: goto sticky_done; + } + if ((rthdr->hdrlen & 1) || (rthdr->hdrlen >> 1) != rthdr->segments_left) goto sticky_done; |
