aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/inetdevice.h
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-06-05 02:36:06 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-06-07 16:39:26 -0400
commit71e27da9618b5f4d525ec821def83991da20429f (patch)
tree521645ee5c7e43cc0de100bc4425668e078d92f9 /include/linux/inetdevice.h
parent31be308541e990592a2d0a3e77e8e51bd0cea0e0 (diff)
[IPV4]: Restore old behaviour of default config values
Previously inet devices were only constructed when addresses are added (or rarely in ipmr). Therefore the default config values they get are the ones at the time of these operations. Now that we're creating inet devices earlier, this changes the behaviour of default config values in an incompatible way (see bug #8519). This patch creates a compromise by setting the default values at the same point as before but only for those that have not been explicitly set by the user since the inet device's creation. 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.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h
index 40adefdfe5d1..ae04901aa09a 100644
--- a/include/linux/inetdevice.h
+++ b/include/linux/inetdevice.h
@@ -59,6 +59,11 @@ static inline void ipv4_devconf_set(struct in_device *in_dev, int index,
59 in_dev->cnf.data[index] = val; 59 in_dev->cnf.data[index] = val;
60} 60}
61 61
62static inline void ipv4_devconf_setall(struct in_device *in_dev)
63{
64 bitmap_fill(in_dev->cnf.state, __NET_IPV4_CONF_MAX - 1);
65}
66
62#define IN_DEV_CONF_GET(in_dev, attr) \ 67#define IN_DEV_CONF_GET(in_dev, attr) \
63 ipv4_devconf_get((in_dev), NET_IPV4_CONF_ ## attr) 68 ipv4_devconf_get((in_dev), NET_IPV4_CONF_ ## attr)
64#define IN_DEV_CONF_SET(in_dev, attr, val) \ 69#define IN_DEV_CONF_SET(in_dev, attr, val) \
@@ -125,7 +130,6 @@ extern struct net_device *ip_dev_find(__be32 addr);
125extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b); 130extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b);
126extern int devinet_ioctl(unsigned int cmd, void __user *); 131extern int devinet_ioctl(unsigned int cmd, void __user *);
127extern void devinet_init(void); 132extern void devinet_init(void);
128extern struct in_device *inetdev_init(struct net_device *dev);
129extern struct in_device *inetdev_by_index(int); 133extern struct in_device *inetdev_by_index(int);
130extern __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope); 134extern __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope);
131extern __be32 inet_confirm_addr(const struct net_device *dev, __be32 dst, __be32 local, int scope); 135extern __be32 inet_confirm_addr(const struct net_device *dev, __be32 dst, __be32 local, int scope);