Commit 85b3daad authored by David Ahern's avatar David Ahern Committed by David S. Miller

net: ipv6: Refactor inet6_netconf_notify_devconf to take event

Refactor inet6_netconf_notify_devconf to take the event as an input arg.
Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b5c9641d
...@@ -262,8 +262,8 @@ int register_inet6addr_notifier(struct notifier_block *nb); ...@@ -262,8 +262,8 @@ int register_inet6addr_notifier(struct notifier_block *nb);
int unregister_inet6addr_notifier(struct notifier_block *nb); int unregister_inet6addr_notifier(struct notifier_block *nb);
int inet6addr_notifier_call_chain(unsigned long val, void *v); int inet6addr_notifier_call_chain(unsigned long val, void *v);
void inet6_netconf_notify_devconf(struct net *net, int type, int ifindex, void inet6_netconf_notify_devconf(struct net *net, int event, int type,
struct ipv6_devconf *devconf); int ifindex, struct ipv6_devconf *devconf);
/** /**
* __in6_dev_get - get inet6_dev pointer from netdevice * __in6_dev_get - get inet6_dev pointer from netdevice
......
...@@ -575,8 +575,8 @@ static int inet6_netconf_fill_devconf(struct sk_buff *skb, int ifindex, ...@@ -575,8 +575,8 @@ static int inet6_netconf_fill_devconf(struct sk_buff *skb, int ifindex,
return -EMSGSIZE; return -EMSGSIZE;
} }
void inet6_netconf_notify_devconf(struct net *net, int type, int ifindex, void inet6_netconf_notify_devconf(struct net *net, int event, int type,
struct ipv6_devconf *devconf) int ifindex, struct ipv6_devconf *devconf)
{ {
struct sk_buff *skb; struct sk_buff *skb;
int err = -ENOBUFS; int err = -ENOBUFS;
...@@ -586,7 +586,7 @@ void inet6_netconf_notify_devconf(struct net *net, int type, int ifindex, ...@@ -586,7 +586,7 @@ void inet6_netconf_notify_devconf(struct net *net, int type, int ifindex,
goto errout; goto errout;
err = inet6_netconf_fill_devconf(skb, ifindex, devconf, 0, 0, err = inet6_netconf_fill_devconf(skb, ifindex, devconf, 0, 0,
RTM_NEWNETCONF, 0, type); event, 0, type);
if (err < 0) { if (err < 0) {
/* -EMSGSIZE implies BUG in inet6_netconf_msgsize_devconf() */ /* -EMSGSIZE implies BUG in inet6_netconf_msgsize_devconf() */
WARN_ON(err == -EMSGSIZE); WARN_ON(err == -EMSGSIZE);
...@@ -769,7 +769,8 @@ static void dev_forward_change(struct inet6_dev *idev) ...@@ -769,7 +769,8 @@ static void dev_forward_change(struct inet6_dev *idev)
else else
addrconf_leave_anycast(ifa); addrconf_leave_anycast(ifa);
} }
inet6_netconf_notify_devconf(dev_net(dev), NETCONFA_FORWARDING, inet6_netconf_notify_devconf(dev_net(dev), RTM_NEWNETCONF,
NETCONFA_FORWARDING,
dev->ifindex, &idev->cnf); dev->ifindex, &idev->cnf);
} }
...@@ -804,7 +805,8 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int newf) ...@@ -804,7 +805,8 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int newf)
if (p == &net->ipv6.devconf_dflt->forwarding) { if (p == &net->ipv6.devconf_dflt->forwarding) {
if ((!newf) ^ (!old)) if ((!newf) ^ (!old))
inet6_netconf_notify_devconf(net, NETCONFA_FORWARDING, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_FORWARDING,
NETCONFA_IFINDEX_DEFAULT, NETCONFA_IFINDEX_DEFAULT,
net->ipv6.devconf_dflt); net->ipv6.devconf_dflt);
rtnl_unlock(); rtnl_unlock();
...@@ -816,13 +818,15 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int newf) ...@@ -816,13 +818,15 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int newf)
net->ipv6.devconf_dflt->forwarding = newf; net->ipv6.devconf_dflt->forwarding = newf;
if ((!newf) ^ (!old_dflt)) if ((!newf) ^ (!old_dflt))
inet6_netconf_notify_devconf(net, NETCONFA_FORWARDING, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_FORWARDING,
NETCONFA_IFINDEX_DEFAULT, NETCONFA_IFINDEX_DEFAULT,
net->ipv6.devconf_dflt); net->ipv6.devconf_dflt);
addrconf_forward_change(net, newf); addrconf_forward_change(net, newf);
if ((!newf) ^ (!old)) if ((!newf) ^ (!old))
inet6_netconf_notify_devconf(net, NETCONFA_FORWARDING, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_FORWARDING,
NETCONFA_IFINDEX_ALL, NETCONFA_IFINDEX_ALL,
net->ipv6.devconf_all); net->ipv6.devconf_all);
} else if ((!newf) ^ (!old)) } else if ((!newf) ^ (!old))
...@@ -847,6 +851,7 @@ static void addrconf_linkdown_change(struct net *net, __s32 newf) ...@@ -847,6 +851,7 @@ static void addrconf_linkdown_change(struct net *net, __s32 newf)
idev->cnf.ignore_routes_with_linkdown = newf; idev->cnf.ignore_routes_with_linkdown = newf;
if (changed) if (changed)
inet6_netconf_notify_devconf(dev_net(dev), inet6_netconf_notify_devconf(dev_net(dev),
RTM_NEWNETCONF,
NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
dev->ifindex, dev->ifindex,
&idev->cnf); &idev->cnf);
...@@ -869,6 +874,7 @@ static int addrconf_fixup_linkdown(struct ctl_table *table, int *p, int newf) ...@@ -869,6 +874,7 @@ static int addrconf_fixup_linkdown(struct ctl_table *table, int *p, int newf)
if (p == &net->ipv6.devconf_dflt->ignore_routes_with_linkdown) { if (p == &net->ipv6.devconf_dflt->ignore_routes_with_linkdown) {
if ((!newf) ^ (!old)) if ((!newf) ^ (!old))
inet6_netconf_notify_devconf(net, inet6_netconf_notify_devconf(net,
RTM_NEWNETCONF,
NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
NETCONFA_IFINDEX_DEFAULT, NETCONFA_IFINDEX_DEFAULT,
net->ipv6.devconf_dflt); net->ipv6.devconf_dflt);
...@@ -881,6 +887,7 @@ static int addrconf_fixup_linkdown(struct ctl_table *table, int *p, int newf) ...@@ -881,6 +887,7 @@ static int addrconf_fixup_linkdown(struct ctl_table *table, int *p, int newf)
addrconf_linkdown_change(net, newf); addrconf_linkdown_change(net, newf);
if ((!newf) ^ (!old)) if ((!newf) ^ (!old))
inet6_netconf_notify_devconf(net, inet6_netconf_notify_devconf(net,
RTM_NEWNETCONF,
NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
NETCONFA_IFINDEX_ALL, NETCONFA_IFINDEX_ALL,
net->ipv6.devconf_all); net->ipv6.devconf_all);
...@@ -5675,17 +5682,20 @@ int addrconf_sysctl_proxy_ndp(struct ctl_table *ctl, int write, ...@@ -5675,17 +5682,20 @@ int addrconf_sysctl_proxy_ndp(struct ctl_table *ctl, int write,
return restart_syscall(); return restart_syscall();
if (valp == &net->ipv6.devconf_dflt->proxy_ndp) if (valp == &net->ipv6.devconf_dflt->proxy_ndp)
inet6_netconf_notify_devconf(net, NETCONFA_PROXY_NEIGH, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_PROXY_NEIGH,
NETCONFA_IFINDEX_DEFAULT, NETCONFA_IFINDEX_DEFAULT,
net->ipv6.devconf_dflt); net->ipv6.devconf_dflt);
else if (valp == &net->ipv6.devconf_all->proxy_ndp) else if (valp == &net->ipv6.devconf_all->proxy_ndp)
inet6_netconf_notify_devconf(net, NETCONFA_PROXY_NEIGH, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_PROXY_NEIGH,
NETCONFA_IFINDEX_ALL, NETCONFA_IFINDEX_ALL,
net->ipv6.devconf_all); net->ipv6.devconf_all);
else { else {
struct inet6_dev *idev = ctl->extra1; struct inet6_dev *idev = ctl->extra1;
inet6_netconf_notify_devconf(net, NETCONFA_PROXY_NEIGH, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_PROXY_NEIGH,
idev->dev->ifindex, idev->dev->ifindex,
&idev->cnf); &idev->cnf);
} }
...@@ -6348,7 +6358,8 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name, ...@@ -6348,7 +6358,8 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
ifindex = NETCONFA_IFINDEX_DEFAULT; ifindex = NETCONFA_IFINDEX_DEFAULT;
else else
ifindex = idev->dev->ifindex; ifindex = idev->dev->ifindex;
inet6_netconf_notify_devconf(net, NETCONFA_ALL, ifindex, p); inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, NETCONFA_ALL,
ifindex, p);
return 0; return 0;
free: free:
......
...@@ -815,7 +815,7 @@ static int mif6_delete(struct mr6_table *mrt, int vifi, struct list_head *head) ...@@ -815,7 +815,7 @@ static int mif6_delete(struct mr6_table *mrt, int vifi, struct list_head *head)
in6_dev = __in6_dev_get(dev); in6_dev = __in6_dev_get(dev);
if (in6_dev) { if (in6_dev) {
in6_dev->cnf.mc_forwarding--; in6_dev->cnf.mc_forwarding--;
inet6_netconf_notify_devconf(dev_net(dev), inet6_netconf_notify_devconf(dev_net(dev), RTM_NEWNETCONF,
NETCONFA_MC_FORWARDING, NETCONFA_MC_FORWARDING,
dev->ifindex, &in6_dev->cnf); dev->ifindex, &in6_dev->cnf);
} }
...@@ -974,7 +974,7 @@ static int mif6_add(struct net *net, struct mr6_table *mrt, ...@@ -974,7 +974,7 @@ static int mif6_add(struct net *net, struct mr6_table *mrt,
in6_dev = __in6_dev_get(dev); in6_dev = __in6_dev_get(dev);
if (in6_dev) { if (in6_dev) {
in6_dev->cnf.mc_forwarding++; in6_dev->cnf.mc_forwarding++;
inet6_netconf_notify_devconf(dev_net(dev), inet6_netconf_notify_devconf(dev_net(dev), RTM_NEWNETCONF,
NETCONFA_MC_FORWARDING, NETCONFA_MC_FORWARDING,
dev->ifindex, &in6_dev->cnf); dev->ifindex, &in6_dev->cnf);
} }
...@@ -1599,7 +1599,8 @@ static int ip6mr_sk_init(struct mr6_table *mrt, struct sock *sk) ...@@ -1599,7 +1599,8 @@ static int ip6mr_sk_init(struct mr6_table *mrt, struct sock *sk)
write_unlock_bh(&mrt_lock); write_unlock_bh(&mrt_lock);
if (!err) if (!err)
inet6_netconf_notify_devconf(net, NETCONFA_MC_FORWARDING, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_MC_FORWARDING,
NETCONFA_IFINDEX_ALL, NETCONFA_IFINDEX_ALL,
net->ipv6.devconf_all); net->ipv6.devconf_all);
rtnl_unlock(); rtnl_unlock();
...@@ -1620,7 +1621,7 @@ int ip6mr_sk_done(struct sock *sk) ...@@ -1620,7 +1621,7 @@ int ip6mr_sk_done(struct sock *sk)
mrt->mroute6_sk = NULL; mrt->mroute6_sk = NULL;
net->ipv6.devconf_all->mc_forwarding--; net->ipv6.devconf_all->mc_forwarding--;
write_unlock_bh(&mrt_lock); write_unlock_bh(&mrt_lock);
inet6_netconf_notify_devconf(net, inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
NETCONFA_MC_FORWARDING, NETCONFA_MC_FORWARDING,
NETCONFA_IFINDEX_ALL, NETCONFA_IFINDEX_ALL,
net->ipv6.devconf_all); net->ipv6.devconf_all);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment