[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(usagi-users 03567) Privacy Extensions problem
- To: usagi-users@xxxxxxxxxxxxxx
- Subject: (usagi-users 03567) Privacy Extensions problem
- From: Hiroyuki YAMAMORI <h-yamamo@xxxxxxxxxxxxxxxx>
- Date: Fri, 09 Dec 2005 22:34:42 +0900 (JST)
- Reply-to: usagi-users@xxxxxxxxxxxxxx
Hello,
I tried Privacy Extensions, but passed amount of time, kernel put out
following message and stoped to make temporary address.
ipv6_create_tempaddr(): regeneration time exceeded. disabled temporary address support.
I've made a fix-patch with other problems as following;
Hunk 1: If RA does not come in amount of time (in something trouble)
and ifpub(it has EUI-64 addr) becomes deprecated, and then RA comes again
ifpub becomes OK. But temporary address is not made any more.
Fix it.
Hunk 2: redundancy code.
Hunk 3: Main code, initialize regen_count.
Thanks,
--
Hiroyuki YAMAMORI <h-yamamo@xxxxxxxxxxxxxxxx>
--- linux-2.6.14.3usagi-s20051121/net/ipv6/addrconf.c
+++ linux-2.6.14.3new/net/ipv6/addrconf.c
@@ -1754,6 +1754,8 @@
ifp->flags &= ~IFA_F_DEPRECATED;
spin_unlock(&ifp->lock);
+ if (flags&IFA_F_DEPRECATED)
+ create = 1;
if (!(flags&IFA_F_TENTATIVE))
ipv6_ifa_notify(0, ifp);
} else
@@ -2683,10 +2685,6 @@
unsigned long regen_advance;
#endif
-#ifdef CONFIG_IPV6_PRIVACY
- regen_advance = ifp->idev->cnf.regen_max_retry * ifp->idev->cnf.dad_transmits * ifp->idev->nd_parms->retrans_time / HZ;
-#endif
-
if (ifp->flags & IFA_F_PERMANENT)
continue;
@@ -2740,6 +2738,9 @@
in6_ifa_hold(ifpub);
spin_unlock(&ifp->lock);
write_unlock(&addrconf_hash_lock);
+ spin_lock(&ifpub->lock);
+ ifpub->regen_count = 0;
+ spin_unlock(&ifpub->lock);
ipv6_create_tempaddr(ifpub, ifp);
in6_ifa_put(ifpub);
in6_ifa_put(ifp);