diff options
author | Roopa Prabhu <roopa@cumulusnetworks.com> | 2015-09-13 13:18:33 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-09-17 18:00:27 -0400 |
commit | 37a1d3611c126fd9782ce5235791f898f053e763 (patch) | |
tree | 6b5f58c44fc55acb1dface329e468ff3f3e52e70 /net | |
parent | 20471ed4d403a5f4de6aa0c10cd1e446f7f2b3c7 (diff) |
ipv6: include NLM_F_REPLACE in route replace notifications
This patch adds NLM_F_REPLACE flag to ipv6 route replace notifications.
This makes nlm_flags in ipv6 replace notifications consistent
with ipv4.
Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/ip6_fib.c | 6 | ||||
-rw-r--r-- | net/ipv6/route.c | 5 |
2 files changed, 6 insertions, 5 deletions
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index 8a9ec01f4d01..7d2e0023c72d 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c | |||
@@ -851,7 +851,7 @@ add: | |||
851 | *ins = rt; | 851 | *ins = rt; |
852 | rt->rt6i_node = fn; | 852 | rt->rt6i_node = fn; |
853 | atomic_inc(&rt->rt6i_ref); | 853 | atomic_inc(&rt->rt6i_ref); |
854 | inet6_rt_notify(RTM_NEWROUTE, rt, info); | 854 | inet6_rt_notify(RTM_NEWROUTE, rt, info, 0); |
855 | info->nl_net->ipv6.rt6_stats->fib_rt_entries++; | 855 | info->nl_net->ipv6.rt6_stats->fib_rt_entries++; |
856 | 856 | ||
857 | if (!(fn->fn_flags & RTN_RTINFO)) { | 857 | if (!(fn->fn_flags & RTN_RTINFO)) { |
@@ -877,7 +877,7 @@ add: | |||
877 | rt->rt6i_node = fn; | 877 | rt->rt6i_node = fn; |
878 | rt->dst.rt6_next = iter->dst.rt6_next; | 878 | rt->dst.rt6_next = iter->dst.rt6_next; |
879 | atomic_inc(&rt->rt6i_ref); | 879 | atomic_inc(&rt->rt6i_ref); |
880 | inet6_rt_notify(RTM_NEWROUTE, rt, info); | 880 | inet6_rt_notify(RTM_NEWROUTE, rt, info, NLM_F_REPLACE); |
881 | if (!(fn->fn_flags & RTN_RTINFO)) { | 881 | if (!(fn->fn_flags & RTN_RTINFO)) { |
882 | info->nl_net->ipv6.rt6_stats->fib_route_nodes++; | 882 | info->nl_net->ipv6.rt6_stats->fib_route_nodes++; |
883 | fn->fn_flags |= RTN_RTINFO; | 883 | fn->fn_flags |= RTN_RTINFO; |
@@ -1422,7 +1422,7 @@ static void fib6_del_route(struct fib6_node *fn, struct rt6_info **rtp, | |||
1422 | 1422 | ||
1423 | fib6_purge_rt(rt, fn, net); | 1423 | fib6_purge_rt(rt, fn, net); |
1424 | 1424 | ||
1425 | inet6_rt_notify(RTM_DELROUTE, rt, info); | 1425 | inet6_rt_notify(RTM_DELROUTE, rt, info, 0); |
1426 | rt6_release(rt); | 1426 | rt6_release(rt); |
1427 | } | 1427 | } |
1428 | 1428 | ||
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 3d3c1b294725..d5fa50297f80 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -3304,7 +3304,8 @@ errout: | |||
3304 | return err; | 3304 | return err; |
3305 | } | 3305 | } |
3306 | 3306 | ||
3307 | void inet6_rt_notify(int event, struct rt6_info *rt, struct nl_info *info) | 3307 | void inet6_rt_notify(int event, struct rt6_info *rt, struct nl_info *info, |
3308 | unsigned int nlm_flags) | ||
3308 | { | 3309 | { |
3309 | struct sk_buff *skb; | 3310 | struct sk_buff *skb; |
3310 | struct net *net = info->nl_net; | 3311 | struct net *net = info->nl_net; |
@@ -3319,7 +3320,7 @@ void inet6_rt_notify(int event, struct rt6_info *rt, struct nl_info *info) | |||
3319 | goto errout; | 3320 | goto errout; |
3320 | 3321 | ||
3321 | err = rt6_fill_node(net, skb, rt, NULL, NULL, 0, | 3322 | err = rt6_fill_node(net, skb, rt, NULL, NULL, 0, |
3322 | event, info->portid, seq, 0, 0, 0); | 3323 | event, info->portid, seq, 0, 0, nlm_flags); |
3323 | if (err < 0) { | 3324 | if (err < 0) { |
3324 | /* -EMSGSIZE implies BUG in rt6_nlmsg_size() */ | 3325 | /* -EMSGSIZE implies BUG in rt6_nlmsg_size() */ |
3325 | WARN_ON(err == -EMSGSIZE); | 3326 | WARN_ON(err == -EMSGSIZE); |