summaryrefslogtreecommitdiffstats
path: root/net/ipv6/addrconf.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2006-07-28 18:12:11 +0900
committerDavid S. Miller <davem@sunset.davemloft.net>2006-08-02 13:38:10 -0700
commit8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c (patch)
tree425c50a174d06f20537311acab60ee0353a7700c /net/ipv6/addrconf.c
parent0778769d392b5b80410673f53e4f946574ebacf7 (diff)
downloadlinux-stable-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.tar.gz
linux-stable-8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c.tar.bz2
linux-stable-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;