diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2006-07-28 05:12:11 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-08-02 16:38:10 -0400 |
commit | 8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c (patch) | |
tree | 425c50a174d06f20537311acab60ee0353a7700c /net/ipv6/addrconf.c | |
parent | 0778769d392b5b80410673f53e4f946574ebacf7 (diff) |
[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.c | 6 |
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: | |||
2797 | ifp->idev->nd_parms->retrans_time / HZ; | 2797 | ifp->idev->nd_parms->retrans_time / HZ; |
2798 | #endif | 2798 | #endif |
2799 | 2799 | ||
2800 | if (age >= ifp->valid_lft) { | 2800 | if (ifp->valid_lft != INFINITY_LIFE_TIME && |
2801 | age >= ifp->valid_lft) { | ||
2801 | spin_unlock(&ifp->lock); | 2802 | spin_unlock(&ifp->lock); |
2802 | in6_ifa_hold(ifp); | 2803 | in6_ifa_hold(ifp); |
2803 | read_unlock(&addrconf_hash_lock); | 2804 | read_unlock(&addrconf_hash_lock); |
2804 | ipv6_del_addr(ifp); | 2805 | ipv6_del_addr(ifp); |
2805 | goto restart; | 2806 | goto restart; |
2807 | } else if (ifp->prefered_lft == INFINITY_LIFE_TIME) { | ||
2808 | spin_unlock(&ifp->lock); | ||
2809 | continue; | ||
2806 | } else if (age >= ifp->prefered_lft) { | 2810 | } else if (age >= ifp->prefered_lft) { |
2807 | /* jiffies - ifp->tsamp > age >= ifp->prefered_lft */ | 2811 | /* jiffies - ifp->tsamp > age >= ifp->prefered_lft */ |
2808 | int deprecate = 0; | 2812 | int deprecate = 0; |