diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-06-04 23:35:37 -0700 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-06-07 13:39:19 -0700 |
commit | 31be308541e990592a2d0a3e77e8e51bd0cea0e0 (patch) | |
tree | 4b37efef3a38439be092ca269e687706be07f8f1 /include | |
parent | 42f811b8bcdf6695bf74de580b1daf53445e8949 (diff) | |
download | linux-stable-31be308541e990592a2d0a3e77e8e51bd0cea0e0.tar.gz linux-stable-31be308541e990592a2d0a3e77e8e51bd0cea0e0.tar.bz2 linux-stable-31be308541e990592a2d0a3e77e8e51bd0cea0e0.zip |
[IPV4]: Add default config support after inetdev_init
Previously once inetdev_init has been called on a device any changes
made to ipv4_devconf_dflt would have no effect on that device's
configuration.
This creates a problem since we have moved the point where
inetdev_init is called from when an address is added to where the
device is registered.
This patch is the first half of a set that tries to mimic the old
behaviour while still calling inetdev_init.
It propagates any changes to ipv4_devconf_dflt to those devices that
have not had the corresponding attribute set.
The next patch will forcibly set all values at the point where
inetdev_init was previously called.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/inetdevice.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index 1ef174d83e09..40adefdfe5d1 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h @@ -3,6 +3,7 @@ #ifdef __KERNEL__ +#include <linux/bitmap.h> #include <linux/if.h> #include <linux/netdevice.h> #include <linux/rcupdate.h> @@ -12,6 +13,7 @@ struct ipv4_devconf { void *sysctl; int data[__NET_IPV4_CONF_MAX - 1]; + DECLARE_BITMAP(state, __NET_IPV4_CONF_MAX - 1); }; extern struct ipv4_devconf ipv4_devconf; @@ -53,6 +55,7 @@ static inline void ipv4_devconf_set(struct in_device *in_dev, int index, int val) { index--; + set_bit(index, in_dev->cnf.state); in_dev->cnf.data[index] = val; } |