diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2006-07-28 18:12:11 +0900 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-08-02 13:38:10 -0700 |
commit | 8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c (patch) | |
tree | 425c50a174d06f20537311acab60ee0353a7700c | |
parent | 0778769d392b5b80410673f53e4f946574ebacf7 (diff) | |
download | op-kernel-dev-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.zip op-kernel-dev-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.tar.gz |
[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>
-rw-r--r-- | net/ipv6/addrconf.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index c064188..93a40a8 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; |