diff options
Diffstat (limited to 'tags/2.6.18-10/30041_ipv6-disallow-RH0-by-default-2.patch')
-rw-r--r-- | tags/2.6.18-10/30041_ipv6-disallow-RH0-by-default-2.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tags/2.6.18-10/30041_ipv6-disallow-RH0-by-default-2.patch b/tags/2.6.18-10/30041_ipv6-disallow-RH0-by-default-2.patch new file mode 100644 index 0000000..1923828 --- /dev/null +++ b/tags/2.6.18-10/30041_ipv6-disallow-RH0-by-default-2.patch @@ -0,0 +1,30 @@ +diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c +index 95a9eb5..6e9822d 100644 +--- a/net/ipv6/exthdrs.c ++++ b/net/ipv6/exthdrs.c +@@ -249,12 +249,6 @@ static int ipv6_rthdr_rcv(struct sk_buff **skbp) + + hdr = (struct ipv6_rt_hdr *) skb->h.raw; + +- if (hdr->type != IPV6_SRCRT_TYPE_0) { +- IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); +- icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, (&hdr->type) - skb->nh.raw); +- return -1; +- } +- + if (ipv6_addr_is_multicast(&skb->nh.ipv6h->daddr) || + skb->pkt_type != PACKET_HOST) { + IP6_INC_STATS_BH(IPSTATS_MIB_INADDRERRORS); +@@ -273,6 +267,12 @@ looped_back: + return 1; + } + ++ if (hdr->type != IPV6_SRCRT_TYPE_0) { ++ IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); ++ icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, (&hdr->type) - skb->nh.raw); ++ return -1; ++ } ++ + if (hdr->hdrlen & 0x01) { + IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); + icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, (&hdr->hdrlen) - skb->nh.raw); |