diff options
author | Jiri Pirko <jiri@resnulli.us> | 2013-01-24 09:41:41 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-01-29 13:59:57 -0500 |
commit | 5c766d642bcaffd0c2a5b354db2068515b3846cf (patch) | |
tree | f5bb2ed37d70c79304c17911de77779ea92c1041 /include/net | |
parent | 5a1dc31708701e54db1b2bb80215c67d61505d3e (diff) | |
download | linux-5c766d642bcaffd0c2a5b354db2068515b3846cf.tar.gz linux-5c766d642bcaffd0c2a5b354db2068515b3846cf.tar.bz2 linux-5c766d642bcaffd0c2a5b354db2068515b3846cf.zip |
ipv4: introduce address lifetime
There are some usecase when lifetime of ipv4 addresses might be helpful.
For example:
1) initramfs networkmanager uses a DHCP daemon to learn network
configuration parameters
2) initramfs networkmanager addresses, routes and DNS configuration
3) initramfs networkmanager is requested to stop
4) initramfs networkmanager stops all daemons including dhclient
5) there are addresses and routes configured but no daemon running. If
the system doesn't start networkmanager for some reason, addresses and
routes will be used forever, which violates RFC 2131.
This patch is essentially a backport of ivp6 address lifetime mechanism
for ipv4 addresses.
Current "ip" tool supports this without any patch (since it does not
distinguish between ipv4 and ipv6 addresses in this perspective.
Also, this should be back-compatible with all current netlink users.
Reported-by: Pavel Šimerda <psimerda@redhat.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/addrconf.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 6c58d507123f..40be2a0d8ae1 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h @@ -15,6 +15,10 @@ #define IPV6_MAX_ADDRESSES 16 +#define ADDRCONF_TIMER_FUZZ_MINUS (HZ > 50 ? HZ / 50 : 1) +#define ADDRCONF_TIMER_FUZZ (HZ / 4) +#define ADDRCONF_TIMER_FUZZ_MAX (HZ) + #include <linux/in.h> #include <linux/in6.h> |