Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[IPV6]: Bring Type 0 routing header in-line with rfc3542.

Signed-off-by: Brian Haley <brian.haley@hp.com>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Brian Haley and committed by
David S. Miller
e6df439b 3874b98c

+9 -10
+1 -1
include/linux/ipv6.h
··· 68 68 69 69 struct rt0_hdr { 70 70 struct ipv6_rt_hdr rt_hdr; 71 - __u32 bitmap; /* strict/loose bit map */ 71 + __u32 reserved; 72 72 struct in6_addr addr[0]; 73 73 74 74 #define rt0_type rt_hdr.type
+1 -2
net/ipv6/exthdrs.c
··· 406 406 407 407 memcpy(opt->srcrt, hdr, sizeof(*hdr)); 408 408 irthdr = (struct rt0_hdr*)opt->srcrt; 409 - /* Obsolete field, MBZ, when originated by us */ 410 - irthdr->bitmap = 0; 409 + irthdr->reserved = 0; 411 410 opt->srcrt->segments_left = n; 412 411 for (i=0; i<n; i++) 413 412 memcpy(irthdr->addr+i, rthdr->addr+(n-1-i), 16);
+7 -7
net/ipv6/netfilter/ip6t_rt.c
··· 161 161 ((rtinfo->hdrlen == hdrlen) ^ 162 162 !!(rtinfo->invflags & IP6T_RT_INV_LEN)))); 163 163 DEBUGP("res %02X %02X %02X ", 164 - (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->bitmap, 165 - !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->bitmap))); 164 + (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->reserved, 165 + !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->reserved))); 166 166 167 167 ret = (rh != NULL) 168 168 && ··· 179 179 !!(rtinfo->invflags & IP6T_RT_INV_TYP))); 180 180 181 181 if (ret && (rtinfo->flags & IP6T_RT_RES)) { 182 - u_int32_t *bp, _bitmap; 183 - bp = skb_header_pointer(skb, 184 - ptr + offsetof(struct rt0_hdr, bitmap), 185 - sizeof(_bitmap), &_bitmap); 182 + u_int32_t *rp, _reserved; 183 + rp = skb_header_pointer(skb, 184 + ptr + offsetof(struct rt0_hdr, reserved), 185 + sizeof(_reserved), &_reserved); 186 186 187 - ret = (*bp == 0); 187 + ret = (*rp == 0); 188 188 } 189 189 190 190 DEBUGP("#%d ",rtinfo->addrnr);