aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/inetdevice.h
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-06-04 23:35:37 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2007-06-07 13:39:19 -0700
commit31be308541e990592a2d0a3e77e8e51bd0cea0e0 (patch)
tree4b37efef3a38439be092ca269e687706be07f8f1 /include/linux/inetdevice.h
parent[IPV4]: Convert IPv4 devconf to an array (diff)
downloadlinux-dev-31be308541e990592a2d0a3e77e8e51bd0cea0e0.tar.xz
linux-dev-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/linux/inetdevice.h')
-rw-r--r--include/linux/inetdevice.h3
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;
}