aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/addrconf.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2006-07-28 05:12:11 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-08-02 16:38:10 -0400
commit8f27ebb9823b7f6b7a67ab325b515f75ba51bf4c (patch)
tree425c50a174d06f20537311acab60ee0353a7700c /net/ipv6/addrconf.c
parent0778769d392b5b80410673f53e4f946574ebacf7 (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.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:
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;