diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index 086cd662f811..8400b5d0c62c 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -1,4 +1,4 @@ -/* $NetBSD: nd6.c,v 1.214 2016/12/12 03:13:14 ozaki-r Exp $ */ +/* $NetBSD: nd6.c,v 1.215 2016/12/12 03:14:01 ozaki-r Exp $ */ /* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */ /* @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.214 2016/12/12 03:13:14 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.215 2016/12/12 03:14:01 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -692,7 +692,7 @@ nd6_timer_work(struct work *wk, void *arg) curlwp_bindx(bound); /* expire prefix list */ - LIST_FOREACH_SAFE(pr, &nd_prefix, ndpr_entry, next_pr) { + ND_PREFIX_LIST_FOREACH_SAFE(pr, next_pr) { /* * check prefix lifetime. * since pltime is just for autoconf, pltime processing for @@ -859,7 +859,7 @@ nd6_purge(struct ifnet *ifp, struct in6_ifextra *ext) } /* Nuke prefix list entries toward ifp */ - LIST_FOREACH_SAFE(pr, &nd_prefix, ndpr_entry, npr) { + ND_PREFIX_LIST_FOREACH_SAFE(pr, npr) { if (pr->ndpr_ifp == ifp) { /* * Because if_detach() does *not* release prefixes @@ -981,7 +981,7 @@ nd6_is_new_addr_neighbor(const struct sockaddr_in6 *addr, struct ifnet *ifp) * If the address matches one of our on-link prefixes, it should be a * neighbor. */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { if (pr->ndpr_ifp != ifp) continue; @@ -1079,7 +1079,7 @@ nd6_is_addr_neighbor(const struct sockaddr_in6 *addr, struct ifnet *ifp) * If the address matches one of our on-link prefixes, it should be a * neighbor. */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { if (pr->ndpr_ifp != ifp) continue; @@ -1647,7 +1647,7 @@ nd6_ioctl(u_long cmd, void *data, struct ifnet *ifp) */ memset(oprl, 0, sizeof(*oprl)); s = splsoftnet(); - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { struct nd_pfxrouter *pfr; int j; @@ -1854,7 +1854,7 @@ nd6_ioctl(u_long cmd, void *data, struct ifnet *ifp) struct nd_prefix *pfx, *next; s = splsoftnet(); - LIST_FOREACH_SAFE(pfx, &nd_prefix, ndpr_entry, next) { + ND_PREFIX_LIST_FOREACH_SAFE(pfx, next) { struct in6_ifaddr *ia, *ia_next; int _s; @@ -2696,7 +2696,7 @@ fill_prlist(void *oldp, size_t *oldlenp, size_t ol) } l = 0; - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { u_short advrtrs; struct sockaddr_in6 sin6; struct nd_pfxrouter *pfr; diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h index ab937ad94292..ebb323ceafe9 100644 --- a/sys/netinet6/nd6.h +++ b/sys/netinet6/nd6.h @@ -1,4 +1,4 @@ -/* $NetBSD: nd6.h,v 1.77 2016/12/12 03:13:14 ozaki-r Exp $ */ +/* $NetBSD: nd6.h,v 1.78 2016/12/12 03:14:01 ozaki-r Exp $ */ /* $KAME: nd6.h,v 1.95 2002/06/08 11:31:06 itojun Exp $ */ /* @@ -321,6 +321,15 @@ struct nd_prefix { #define ndpr_raf_auto ndpr_flags.autonomous #define ndpr_raf_router ndpr_flags.router +#define ND_PREFIX_LIST_FOREACH(pr) \ + LIST_FOREACH((pr), &nd_prefix, ndpr_entry) +#define ND_PREFIX_LIST_FOREACH_SAFE(pr, pr_next) \ + LIST_FOREACH_SAFE((pr), &nd_prefix, ndpr_entry, (pr_next)) +#define ND_PREFIX_LIST_REMOVE(pr) \ + LIST_REMOVE((pr), ndpr_entry) +#define ND_PREFIX_LIST_INSERT_HEAD(pr) \ + LIST_INSERT_HEAD(&nd_prefix, (pr), ndpr_entry) + /* * Message format for use in obtaining information about prefixes * from inet6 sysctl function diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c index 27340f035ad1..e0a018d1bec3 100644 --- a/sys/netinet6/nd6_rtr.c +++ b/sys/netinet6/nd6_rtr.c @@ -1,4 +1,4 @@ -/* $NetBSD: nd6_rtr.c,v 1.124 2016/12/12 03:13:14 ozaki-r Exp $ */ +/* $NetBSD: nd6_rtr.c,v 1.125 2016/12/12 03:14:01 ozaki-r Exp $ */ /* $KAME: nd6_rtr.c,v 1.95 2001/02/07 08:09:47 itojun Exp $ */ /* @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nd6_rtr.c,v 1.124 2016/12/12 03:13:14 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nd6_rtr.c,v 1.125 2016/12/12 03:14:01 ozaki-r Exp $"); #include #include @@ -528,7 +528,7 @@ nd6_defrtrlist_del(struct nd_defrouter *dr, struct in6_ifextra *ext) /* * Also delete all the pointers to the router in each prefix lists. */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { struct nd_pfxrouter *pfxrtr; if ((pfxrtr = pfxrtr_lookup(pr, dr)) != NULL) pfxrtr_del(pfxrtr); @@ -881,7 +881,7 @@ nd6_prefix_lookup(struct nd_prefixctl *key) { struct nd_prefix *search; - LIST_FOREACH(search, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(search) { if (key->ndprc_ifp == search->ndpr_ifp && key->ndprc_plen == search->ndpr_plen && in6_are_prefix_equal(&key->ndprc_prefix.sin6_addr, @@ -983,7 +983,7 @@ nd6_prelist_add(struct nd_prefixctl *prc, struct nd_defrouter *dr, s = splsoftnet(); /* link ndpr_entry to nd_prefix list */ - LIST_INSERT_HEAD(&nd_prefix, newpr, ndpr_entry); + ND_PREFIX_LIST_INSERT_HEAD(newpr); splx(s); /* ND_OPT_PI_FLAG_ONLINK processing */ @@ -1039,7 +1039,7 @@ nd6_prelist_remove(struct nd_prefix *pr) s = splsoftnet(); /* unlink ndpr_entry from nd_prefix list */ - LIST_REMOVE(pr, ndpr_entry); + ND_PREFIX_LIST_REMOVE(pr); /* free list of routers that adversed the prefix */ for (pfr = LIST_FIRST(&pr->ndpr_advrtrs); pfr != NULL; pfr = next) { @@ -1454,7 +1454,7 @@ nd6_pfxlist_onlink_check(void) * Check if there is a prefix that has a reachable advertising * router. */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { if (pr->ndpr_raf_onlink && find_pfxlist_reachable_router(pr)) break; } @@ -1466,7 +1466,7 @@ nd6_pfxlist_onlink_check(void) ND_DEFROUTER_LIST_FOREACH(dr) { struct nd_prefix *pr0; - LIST_FOREACH(pr0, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr0) { if ((pfxrtr = pfxrtr_lookup(pr0, dr)) != NULL) break; } @@ -1484,7 +1484,7 @@ nd6_pfxlist_onlink_check(void) * Detach prefixes which have no reachable advertising * router, and attach other prefixes. */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { /* XXX: a link-local prefix should never be detached */ if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr)) continue; @@ -1505,7 +1505,7 @@ nd6_pfxlist_onlink_check(void) } } else { /* there is no prefix that has a reachable router */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr)) continue; @@ -1525,7 +1525,7 @@ nd6_pfxlist_onlink_check(void) * interfaces. Such cases will be handled in nd6_prefix_onlink, * so we don't have to care about them. */ - LIST_FOREACH(pr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(pr) { int e; if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr)) @@ -1679,7 +1679,7 @@ nd6_prefix_onlink(struct nd_prefix *pr) * Although such a configuration is expected to be rare, we explicitly * allow it. */ - LIST_FOREACH(opr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(opr) { if (opr == pr) continue; @@ -1794,7 +1794,7 @@ nd6_prefix_offlink(struct nd_prefix *pr) * If there's one, try to make the prefix on-link on the * interface. */ - LIST_FOREACH(opr, &nd_prefix, ndpr_entry) { + ND_PREFIX_LIST_FOREACH(opr) { if (opr == pr) continue;