Loading include/linux/ipv6.h +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ struct ipv6_opt_hdr { struct rt0_hdr { struct ipv6_rt_hdr rt_hdr; __u32 bitmap; /* strict/loose bit map */ __u32 reserved; struct in6_addr addr[0]; #define rt0_type rt_hdr.type Loading net/ipv6/exthdrs.c +1 −2 Original line number Diff line number Diff line Loading @@ -406,8 +406,7 @@ ipv6_invert_rthdr(struct sock *sk, struct ipv6_rt_hdr *hdr) memcpy(opt->srcrt, hdr, sizeof(*hdr)); irthdr = (struct rt0_hdr*)opt->srcrt; /* Obsolete field, MBZ, when originated by us */ irthdr->bitmap = 0; irthdr->reserved = 0; opt->srcrt->segments_left = n; for (i=0; i<n; i++) memcpy(irthdr->addr+i, rthdr->addr+(n-1-i), 16); Loading net/ipv6/netfilter/ip6t_rt.c +7 −7 Original line number Diff line number Diff line Loading @@ -161,8 +161,8 @@ match(const struct sk_buff *skb, ((rtinfo->hdrlen == hdrlen) ^ !!(rtinfo->invflags & IP6T_RT_INV_LEN)))); DEBUGP("res %02X %02X %02X ", (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->bitmap, !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->bitmap))); (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->reserved, !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->reserved))); ret = (rh != NULL) && Loading @@ -179,12 +179,12 @@ match(const struct sk_buff *skb, !!(rtinfo->invflags & IP6T_RT_INV_TYP))); if (ret && (rtinfo->flags & IP6T_RT_RES)) { u_int32_t *bp, _bitmap; bp = skb_header_pointer(skb, ptr + offsetof(struct rt0_hdr, bitmap), sizeof(_bitmap), &_bitmap); u_int32_t *rp, _reserved; rp = skb_header_pointer(skb, ptr + offsetof(struct rt0_hdr, reserved), sizeof(_reserved), &_reserved); ret = (*bp == 0); ret = (*rp == 0); } DEBUGP("#%d ",rtinfo->addrnr); Loading Loading
include/linux/ipv6.h +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ struct ipv6_opt_hdr { struct rt0_hdr { struct ipv6_rt_hdr rt_hdr; __u32 bitmap; /* strict/loose bit map */ __u32 reserved; struct in6_addr addr[0]; #define rt0_type rt_hdr.type Loading
net/ipv6/exthdrs.c +1 −2 Original line number Diff line number Diff line Loading @@ -406,8 +406,7 @@ ipv6_invert_rthdr(struct sock *sk, struct ipv6_rt_hdr *hdr) memcpy(opt->srcrt, hdr, sizeof(*hdr)); irthdr = (struct rt0_hdr*)opt->srcrt; /* Obsolete field, MBZ, when originated by us */ irthdr->bitmap = 0; irthdr->reserved = 0; opt->srcrt->segments_left = n; for (i=0; i<n; i++) memcpy(irthdr->addr+i, rthdr->addr+(n-1-i), 16); Loading
net/ipv6/netfilter/ip6t_rt.c +7 −7 Original line number Diff line number Diff line Loading @@ -161,8 +161,8 @@ match(const struct sk_buff *skb, ((rtinfo->hdrlen == hdrlen) ^ !!(rtinfo->invflags & IP6T_RT_INV_LEN)))); DEBUGP("res %02X %02X %02X ", (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->bitmap, !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->bitmap))); (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->reserved, !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->reserved))); ret = (rh != NULL) && Loading @@ -179,12 +179,12 @@ match(const struct sk_buff *skb, !!(rtinfo->invflags & IP6T_RT_INV_TYP))); if (ret && (rtinfo->flags & IP6T_RT_RES)) { u_int32_t *bp, _bitmap; bp = skb_header_pointer(skb, ptr + offsetof(struct rt0_hdr, bitmap), sizeof(_bitmap), &_bitmap); u_int32_t *rp, _reserved; rp = skb_header_pointer(skb, ptr + offsetof(struct rt0_hdr, reserved), sizeof(_reserved), &_reserved); ret = (*bp == 0); ret = (*rp == 0); } DEBUGP("#%d ",rtinfo->addrnr); Loading