diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h index 76fc7d1dbfd3a4f425a0afe0e88f40353b1468ea..592fecd2e59efa19b1d91db88f6ba99865c03633 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h @@ -28,6 +28,7 @@ struct netns_sysctl_ipv6 { int ip6_rt_mtu_expires; int ip6_rt_min_advmss; int icmpv6_time; + int anycast_src_echo_reply; }; struct netns_ipv6 { @@ -73,7 +74,6 @@ struct netns_ipv6 { #endif atomic_t dev_addr_genid; atomic_t rt_genid; - int anycast_src_echo_reply; }; #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 8003b4930267b8b3c401401d690912408af54338..902405dc258cdebbc496d5ab945e7db9e9a42665 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c @@ -559,7 +559,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb) saddr = &ipv6_hdr(skb)->daddr; if (!ipv6_unicast_destination(skb) && - !(net->ipv6.anycast_src_echo_reply && + !(net->ipv6.sysctl.anycast_src_echo_reply && ipv6_anycast_destination(skb))) saddr = NULL; diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c index 6b6a2c83027eaa810936e14178d8db1cdb06c531..b51b2688102cf025ae98c314eb605dd7cd3000f9 100644 --- a/net/ipv6/sysctl_net_ipv6.c +++ b/net/ipv6/sysctl_net_ipv6.c @@ -26,7 +26,7 @@ static struct ctl_table ipv6_table_template[] = { }, { .procname = "anycast_src_echo_reply", - .data = &init_net.ipv6.anycast_src_echo_reply, + .data = &init_net.ipv6.sysctl.anycast_src_echo_reply, .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec @@ -58,7 +58,7 @@ static int __net_init ipv6_sysctl_net_init(struct net *net) if (!ipv6_table) goto out; ipv6_table[0].data = &net->ipv6.sysctl.bindv6only; - ipv6_table[1].data = &net->ipv6.anycast_src_echo_reply; + ipv6_table[1].data = &net->ipv6.sysctl.anycast_src_echo_reply; ipv6_route_table = ipv6_route_sysctl_init(net); if (!ipv6_route_table)