ipv6: Process unicast packet with Router Alert by checking flag in skb.
Subsystems (3)
PATCH 1/1 ipv6: Process unicast packet with Router Alert by checking flag in skb.
Router Alert option is marked in skb.
Previously, IP6CB(skb)->ra was set to positive value for such packets. Since commit dd3332bf ("ipv6: Store Router Alert option in IP6CB directly."), IP6SKB_ROUTERALERT is set in IP6CB(skb)->flags, and the value of Router Alert option (in network byte order) is set to IP6CB(skb)->ra for such packets.
Multicast forwarding path uses that flag and value, but unicast forwarding path does not use the flag and misuses IP6CB(skb)->ra value.
--- net/ipv6/ip6_output.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
net/ipv6/ip6_output.c +2 -3
@@ -381,9 +381,8 @@ int ip6_forward(struct sk_buff *skb)* cannot be fragmented, because there is no warranty * that different fragments will go along one path. --ANK */ -if (opt->ra) { -u8 *ptr =skb_network_header (skb) + opt->ra; -if (ip6_call_ra_chain (skb, (ptr[2 ]<<8 ) + ptr[3 ])) +if (unlikely (opt->flags &IP6SKB_ROUTERALERT )) { +if (ip6_call_ra_chain (skb,ntohs (opt->ra)))return 0 ; }
Signature · 1 line
1.7.9.5
From: YOSHIFUJI Hideaki <[email protected]>
Date: Sat, 22 Jun 2013 11:13:13 +0900
Quoted 7 lines
Router Alert option is marked in skb.
Previously, IP6CB(skb)->ra was set to positive value for such packets. Since commitdd3332bf("ipv6: Store Router Alert option in IP6CB directly."),IP6SKB_ROUTERALERTis set in IP6CB(skb)->flags, and the value of Router Alert option (in network byte order) is set to IP6CB(skb)->ra for such packets.
Quoted 5 lines
Multicast forwarding path uses that flag and value, but unicast forwarding path does not use the flag and misuses IP6CB(skb)->ra value.
Signed-off-by YOSHIFUJI Hideaki <[email protected]>
Applied, thanks.