summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/ip6_fib.c2
-rw-r--r--net/ipv6/route.c20
2 files changed, 17 insertions, 5 deletions
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index f8a9ec7fa616..3e382ba1573e 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -2057,7 +2057,7 @@ static void fib6_del_route(struct fib6_table *table, struct fib6_node *fn,
call_fib6_entry_notifiers_replace(net, replace_rt);
}
if (!info->skip_notify)
- inet6_rt_notify(RTM_DELROUTE, rt, info, 0);
+ inet6_rt_del_notify(rt, info, del_reason);
fib6_info_release(rt);
}
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 1c48332bd193..ae2f93a19dd9 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -6378,8 +6378,9 @@ errout:
return err;
}
-void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info,
- unsigned int nlm_flags)
+static void __inet6_rt_notify(int event, struct fib6_info *rt,
+ struct nl_info *info, unsigned int nlm_flags,
+ enum rt_del_reason del_reason)
{
struct net *net = info->nl_net;
struct sk_buff *skb;
@@ -6398,8 +6399,7 @@ retry:
goto errout;
err = rt6_fill_node(net, skb, rt, NULL, NULL, NULL, 0,
- event, info->portid, seq, nlm_flags,
- RT_DEL_REASON_UNSPEC);
+ event, info->portid, seq, nlm_flags, del_reason);
if (err < 0) {
kfree_skb(skb);
/* -EMSGSIZE implies needed space grew under us. */
@@ -6420,6 +6420,18 @@ errout:
rtnl_set_sk_err(net, RTNLGRP_IPV6_ROUTE, err);
}
+void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info,
+ unsigned int nlm_flags)
+{
+ __inet6_rt_notify(event, rt, info, nlm_flags, RT_DEL_REASON_UNSPEC);
+}
+
+void inet6_rt_del_notify(struct fib6_info *rt, struct nl_info *info,
+ enum rt_del_reason del_reason)
+{
+ __inet6_rt_notify(RTM_DELROUTE, rt, info, 0, del_reason);
+}
+
void fib6_rt_update(struct net *net, struct fib6_info *rt,
struct nl_info *info)
{