Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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
+22 −11
Original line number Original line Diff line number Diff line
@@ -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,
		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)
		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)


	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)


		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)
			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)
	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)
		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,
			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,
		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:
+5 −4
Original line number Original line Diff line number Diff line
@@ -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,
	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)
	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)
			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);