summaryrefslogtreecommitdiffstats
path: root/net/ipv6/addrconf.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki2006-07-28 11:12:11 +0200
committerDavid S. Miller2006-08-02 22:38:10 +0200
commit8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c (patch)
tree425c50a174d06f20537311acab60ee0353a7700c /net/ipv6/addrconf.c
parent[IPV6] ADDRCONF: Allow user-space to specify address lifetime (diff)
downloadkernel-qcow2-linux-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.tar.gz
kernel-qcow2-linux-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.tar.xz
kernel-qcow2-linux-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.zip
[IPV6] ADDRCONF: Do not verify an address with infinity lifetime
We also do not try regenarating new temporary address corresponding to an address with infinite preferred lifetime. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'net/ipv6/addrconf.c')
-rw-r--r--net/ipv6/addrconf.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index c0641887bdeb..93a40a8ade88 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2797,12 +2797,16 @@ restart:
ifp->idev->nd_parms->retrans_time / HZ;
#endif
- if (age >= ifp->valid_lft) {
+ if (ifp->valid_lft != INFINITY_LIFE_TIME &&
+ age >= ifp->valid_lft) {
spin_unlock(&ifp->lock);
in6_ifa_hold(ifp);
read_unlock(&addrconf_hash_lock);
ipv6_del_addr(ifp);
goto restart;
+ } else if (ifp->prefered_lft == INFINITY_LIFE_TIME) {
+ spin_unlock(&ifp->lock);
+ continue;
} else if (age >= ifp->prefered_lft) {
/* jiffies - ifp->tsamp > age >= ifp->prefered_lft */
int deprecate = 0;