Commit 29c994e3 authored by Nicolas Dichtel's avatar Nicolas Dichtel Committed by David S. Miller

netconf: add a notif when settings are created

All changes are notified, but the initial state was missing.
Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d26c638c
...@@ -2232,7 +2232,7 @@ static struct devinet_sysctl_table { ...@@ -2232,7 +2232,7 @@ static struct devinet_sysctl_table {
}; };
static int __devinet_sysctl_register(struct net *net, char *dev_name, static int __devinet_sysctl_register(struct net *net, char *dev_name,
struct ipv4_devconf *p) int ifindex, struct ipv4_devconf *p)
{ {
int i; int i;
struct devinet_sysctl_table *t; struct devinet_sysctl_table *t;
...@@ -2255,6 +2255,8 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name, ...@@ -2255,6 +2255,8 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name,
goto free; goto free;
p->sysctl = t; p->sysctl = t;
inet_netconf_notify_devconf(net, NETCONFA_ALL, ifindex, p);
return 0; return 0;
free: free:
...@@ -2286,7 +2288,7 @@ static int devinet_sysctl_register(struct in_device *idev) ...@@ -2286,7 +2288,7 @@ static int devinet_sysctl_register(struct in_device *idev)
if (err) if (err)
return err; return err;
err = __devinet_sysctl_register(dev_net(idev->dev), idev->dev->name, err = __devinet_sysctl_register(dev_net(idev->dev), idev->dev->name,
&idev->cnf); idev->dev->ifindex, &idev->cnf);
if (err) if (err)
neigh_sysctl_unregister(idev->arp_parms); neigh_sysctl_unregister(idev->arp_parms);
return err; return err;
...@@ -2347,11 +2349,12 @@ static __net_init int devinet_init_net(struct net *net) ...@@ -2347,11 +2349,12 @@ static __net_init int devinet_init_net(struct net *net)
} }
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
err = __devinet_sysctl_register(net, "all", all); err = __devinet_sysctl_register(net, "all", NETCONFA_IFINDEX_ALL, all);
if (err < 0) if (err < 0)
goto err_reg_all; goto err_reg_all;
err = __devinet_sysctl_register(net, "default", dflt); err = __devinet_sysctl_register(net, "default",
NETCONFA_IFINDEX_DEFAULT, dflt);
if (err < 0) if (err < 0)
goto err_reg_dflt; goto err_reg_dflt;
......
...@@ -6032,7 +6032,7 @@ static const struct ctl_table addrconf_sysctl[] = { ...@@ -6032,7 +6032,7 @@ static const struct ctl_table addrconf_sysctl[] = {
static int __addrconf_sysctl_register(struct net *net, char *dev_name, static int __addrconf_sysctl_register(struct net *net, char *dev_name,
struct inet6_dev *idev, struct ipv6_devconf *p) struct inet6_dev *idev, struct ipv6_devconf *p)
{ {
int i; int i, ifindex;
struct ctl_table *table; struct ctl_table *table;
char path[sizeof("net/ipv6/conf/") + IFNAMSIZ]; char path[sizeof("net/ipv6/conf/") + IFNAMSIZ];
...@@ -6052,6 +6052,13 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name, ...@@ -6052,6 +6052,13 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
if (!p->sysctl_header) if (!p->sysctl_header)
goto free; goto free;
if (!strcmp(dev_name, "all"))
ifindex = NETCONFA_IFINDEX_ALL;
else if (!strcmp(dev_name, "default"))
ifindex = NETCONFA_IFINDEX_DEFAULT;
else
ifindex = idev->dev->ifindex;
inet6_netconf_notify_devconf(net, NETCONFA_ALL, ifindex, p);
return 0; return 0;
free: free:
......
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