mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-08 23:55:14 +00:00
[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>
This commit is contained in:
parent
42f811b8bc
commit
31be308541
2 changed files with 101 additions and 35 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue