summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch30
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);