Rename ndpr_refcnt to ndpr_addrcnt.
This field counts derived addresses and is not a true refcount for prefix objects, so the previous name was misleading. MFC after: 1 week
This commit is contained in:
parent
678b8d82ee
commit
0bbf244e9f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=306285
@ -630,7 +630,7 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
|
||||
/* relate the address to the prefix */
|
||||
if (ia->ia6_ndpr == NULL) {
|
||||
ia->ia6_ndpr = pr;
|
||||
pr->ndpr_refcnt++;
|
||||
pr->ndpr_addrcnt++;
|
||||
|
||||
/*
|
||||
* If this is the first autoconf address from the
|
||||
@ -638,7 +638,7 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
|
||||
* (when required).
|
||||
*/
|
||||
if ((ia->ia6_flags & IN6_IFF_AUTOCONF) &&
|
||||
V_ip6_use_tempaddr && pr->ndpr_refcnt == 1) {
|
||||
V_ip6_use_tempaddr && pr->ndpr_addrcnt == 1) {
|
||||
int e;
|
||||
if ((e = in6_tmpifadd(ia, 1, 0)) != 0) {
|
||||
log(LOG_NOTICE, "in6_control: failed "
|
||||
@ -690,11 +690,11 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
|
||||
* and the prefix management. We do this, however, to provide
|
||||
* as much backward compatibility as possible in terms of
|
||||
* the ioctl operation.
|
||||
* Note that in6_purgeaddr() will decrement ndpr_refcnt.
|
||||
* Note that in6_purgeaddr() will decrement ndpr_addrcnt.
|
||||
*/
|
||||
pr = ia->ia6_ndpr;
|
||||
in6_purgeaddr(&ia->ia_ifa);
|
||||
if (pr && pr->ndpr_refcnt == 0)
|
||||
if (pr && pr->ndpr_addrcnt == 0)
|
||||
prelist_remove(pr);
|
||||
EVENTHANDLER_INVOKE(ifaddr_event, ifp);
|
||||
break;
|
||||
@ -1305,9 +1305,9 @@ in6_unlink_ifa(struct in6_ifaddr *ia, struct ifnet *ifp)
|
||||
"in6_unlink_ifa: autoconf'ed address "
|
||||
"%s has no prefix\n", ip6_sprintf(ip6buf, IA6_IN6(ia))));
|
||||
} else {
|
||||
ia->ia6_ndpr->ndpr_refcnt--;
|
||||
ia->ia6_ndpr->ndpr_addrcnt--;
|
||||
/* Do not delete lles within prefix if refcont != 0 */
|
||||
if (ia->ia6_ndpr->ndpr_refcnt == 0)
|
||||
if (ia->ia6_ndpr->ndpr_addrcnt == 0)
|
||||
remove_lle = 1;
|
||||
ia->ia6_ndpr = NULL;
|
||||
}
|
||||
|
@ -1159,7 +1159,7 @@ nd6_purge(struct ifnet *ifp)
|
||||
* still be above zero. We therefore reset it to
|
||||
* make sure that the prefix really gets purged.
|
||||
*/
|
||||
pr->ndpr_refcnt = 0;
|
||||
pr->ndpr_addrcnt = 0;
|
||||
|
||||
prelist_remove(pr);
|
||||
}
|
||||
@ -2674,7 +2674,7 @@ nd6_sysctl_prlist(SYSCTL_HANDLER_ARGS)
|
||||
else
|
||||
p.expire = maxexpire;
|
||||
}
|
||||
p.refcnt = pr->ndpr_refcnt;
|
||||
p.refcnt = pr->ndpr_addrcnt;
|
||||
p.flags = pr->ndpr_stateflags;
|
||||
p.advrtrs = 0;
|
||||
LIST_FOREACH(pfr, &pr->ndpr_advrtrs, pfr_entry)
|
||||
|
@ -275,7 +275,7 @@ struct nd_prefix {
|
||||
/* list of routers that advertise the prefix: */
|
||||
LIST_HEAD(pr_rtrhead, nd_pfxrouter) ndpr_advrtrs;
|
||||
u_char ndpr_plen;
|
||||
int ndpr_refcnt; /* reference couter from addresses */
|
||||
int ndpr_addrcnt; /* count of derived addresses */
|
||||
};
|
||||
|
||||
#define ndpr_raf ndpr_flags
|
||||
|
@ -1053,7 +1053,7 @@ prelist_remove(struct nd_prefix *pr)
|
||||
/* what should we do? */
|
||||
}
|
||||
|
||||
if (pr->ndpr_refcnt > 0)
|
||||
if (pr->ndpr_addrcnt > 0)
|
||||
return; /* notice here? */
|
||||
|
||||
/* unlink ndpr_entry from nd_prefix list */
|
||||
@ -1356,7 +1356,7 @@ prelist_update(struct nd_prefixctl *new, struct nd_defrouter *dr,
|
||||
/*
|
||||
* note that we should use pr (not new) for reference.
|
||||
*/
|
||||
pr->ndpr_refcnt++;
|
||||
pr->ndpr_addrcnt++;
|
||||
ia6->ia6_ndpr = pr;
|
||||
|
||||
/*
|
||||
@ -2114,7 +2114,7 @@ in6_tmpifadd(const struct in6_ifaddr *ia0, int forcegen, int delay)
|
||||
return (EINVAL); /* XXX */
|
||||
}
|
||||
newia->ia6_ndpr = ia0->ia6_ndpr;
|
||||
newia->ia6_ndpr->ndpr_refcnt++;
|
||||
newia->ia6_ndpr->ndpr_addrcnt++;
|
||||
ifa_free(&newia->ia_ifa);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user