Author: jhb
Date: Fri Mar 16 21:28:29 2012
New Revision: 233047
URL: http://svn.freebsd.org/changeset/base/233047

Log:
  MFC 226340,226340:
  Use queue(3) macros instead of home-rolled versions in several places in
  the INET6 code.  This includes retiring the 'ndpr_next' and 'pfr_next'
  macros.

Modified:
  stable/8/sys/netinet/sctp_output.c
  stable/8/sys/netinet6/icmp6.c
  stable/8/sys/netinet6/in6.c
  stable/8/sys/netinet6/in6_ifattach.c
  stable/8/sys/netinet6/nd6.c
  stable/8/sys/netinet6/nd6.h
  stable/8/sys/netinet6/nd6_nbr.c
  stable/8/sys/netinet6/nd6_rtr.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/boot/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/e1000/   (props changed)
  stable/8/sys/i386/conf/XENHVM   (props changed)

Modified: stable/8/sys/netinet/sctp_output.c
==============================================================================
--- stable/8/sys/netinet/sctp_output.c  Fri Mar 16 21:28:05 2012        
(r233046)
+++ stable/8/sys/netinet/sctp_output.c  Fri Mar 16 21:28:29 2012        
(r233047)
@@ -13834,8 +13834,7 @@ sctp_v6src_match_nexthop(struct sockaddr
        SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, (struct sockaddr *)src6);
 
        /* search installed gateway from prefix entry */
-       for (pfxrtr = pfx->ndpr_advrtrs.lh_first; pfxrtr; pfxrtr =
-           pfxrtr->pfr_next) {
+       LIST_FOREACH(pfxrtr, &pfx->ndpr_advrtrs, pfr_entry) {
                memset(&gw6, 0, sizeof(struct sockaddr_in6));
                gw6.sin6_family = AF_INET6;
                gw6.sin6_len = sizeof(struct sockaddr_in6);

Modified: stable/8/sys/netinet6/icmp6.c
==============================================================================
--- stable/8/sys/netinet6/icmp6.c       Fri Mar 16 21:28:05 2012        
(r233046)
+++ stable/8/sys/netinet6/icmp6.c       Fri Mar 16 21:28:29 2012        
(r233047)
@@ -1697,7 +1697,7 @@ ni6_addrs(struct icmp6_nodeinfo *ni6, st
        }
 
        IFNET_RLOCK_NOSLEEP();
-       for (ifp = TAILQ_FIRST(&V_ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_list)) {
+       TAILQ_FOREACH(ifp, &V_ifnet, if_list) {
                addrsofif = 0;
                IF_ADDR_LOCK(ifp);
                TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {

Modified: stable/8/sys/netinet6/in6.c
==============================================================================
--- stable/8/sys/netinet6/in6.c Fri Mar 16 21:28:05 2012        (r233046)
+++ stable/8/sys/netinet6/in6.c Fri Mar 16 21:28:29 2012        (r233047)
@@ -1203,7 +1203,7 @@ in6_purgeaddr_mc(struct ifnet *ifp, stru
        /*
         * Leave from multicast groups we have joined for the interface.
         */
-       while ((imm = ia->ia6_memberships.lh_first) != NULL) {
+       while ((imm = LIST_FIRST(&ia->ia6_memberships)) != NULL) {
                LIST_REMOVE(imm, i6mm_chain);
                in6_leavegroup(imm);
        }
@@ -2242,8 +2242,7 @@ in6_setmaxmtu(void)
        struct ifnet *ifp;
 
        IFNET_RLOCK_NOSLEEP();
-       for (ifp = TAILQ_FIRST(&V_ifnet); ifp;
-           ifp = TAILQ_NEXT(ifp, if_list)) {
+       TAILQ_FOREACH(ifp, &V_ifnet, if_list) {
                /* this function can be called during ifnet initialization */
                if (!ifp->if_afdata[AF_INET6])
                        continue;

Modified: stable/8/sys/netinet6/in6_ifattach.c
==============================================================================
--- stable/8/sys/netinet6/in6_ifattach.c        Fri Mar 16 21:28:05 2012        
(r233046)
+++ stable/8/sys/netinet6/in6_ifattach.c        Fri Mar 16 21:28:29 2012        
(r233047)
@@ -404,7 +404,7 @@ get_ifid(struct ifnet *ifp0, struct ifne
 
        /* next, try to get it from some other hardware interface */
        IFNET_RLOCK_NOSLEEP();
-       for (ifp = V_ifnet.tqh_first; ifp; ifp = ifp->if_list.tqe_next) {
+       TAILQ_FOREACH(ifp, &V_ifnet, if_list) {
                if (ifp == ifp0)
                        continue;
                if (in6_get_hw_ifid(ifp, in6) != 0)
@@ -809,7 +809,7 @@ in6_ifdetach(struct ifnet *ifp)
                /*
                 * leave from multicast groups we have joined for the interface
                 */
-               while ((imm = ia->ia6_memberships.lh_first) != NULL) {
+               while ((imm = LIST_FIRST(&ia->ia6_memberships)) != NULL) {
                        LIST_REMOVE(imm, i6mm_chain);
                        in6_leavegroup(imm);
                }
@@ -909,8 +909,7 @@ in6_tmpaddrtimer(void *arg)
            V_ip6_temp_regen_advance) * hz, in6_tmpaddrtimer, curvnet);
 
        bzero(nullbuf, sizeof(nullbuf));
-       for (ifp = TAILQ_FIRST(&V_ifnet); ifp;
-           ifp = TAILQ_NEXT(ifp, if_list)) {
+       TAILQ_FOREACH(ifp, &V_ifnet, if_list) {
                ndi = ND_IFINFO(ifp);
                if (bcmp(ndi->randomid, nullbuf, sizeof(nullbuf)) != 0) {
                        /*

Modified: stable/8/sys/netinet6/nd6.c
==============================================================================
--- stable/8/sys/netinet6/nd6.c Fri Mar 16 21:28:05 2012        (r233046)
+++ stable/8/sys/netinet6/nd6.c Fri Mar 16 21:28:29 2012        (r233047)
@@ -562,8 +562,8 @@ nd6_timer(void *arg)
 {
        CURVNET_SET((struct vnet *) arg);
        int s;
-       struct nd_defrouter *dr;
-       struct nd_prefix *pr;
+       struct nd_defrouter *dr, *ndr;
+       struct nd_prefix *pr, *npr;
        struct in6_ifaddr *ia6, *nia6;
 
        callout_reset(&V_nd6_timer_ch, V_nd6_prune * hz,
@@ -571,16 +571,9 @@ nd6_timer(void *arg)
 
        /* expire default router list */
        s = splnet();
-       dr = TAILQ_FIRST(&V_nd_defrouter);
-       while (dr) {
-               if (dr->expire && dr->expire < time_second) {
-                       struct nd_defrouter *t;
-                       t = TAILQ_NEXT(dr, dr_entry);
+       TAILQ_FOREACH_SAFE(dr, &V_nd_defrouter, dr_entry, ndr) {
+               if (dr->expire && dr->expire < time_second)
                        defrtrlist_del(dr);
-                       dr = t;
-               } else {
-                       dr = TAILQ_NEXT(dr, dr_entry);
-               }
        }
 
        /*
@@ -656,8 +649,7 @@ nd6_timer(void *arg)
        }
 
        /* expire prefix list */
-       pr = V_nd_prefix.lh_first;
-       while (pr) {
+       LIST_FOREACH_SAFE(pr, &V_nd_prefix, ndpr_entry, npr) {
                /*
                 * check prefix lifetime.
                 * since pltime is just for autoconf, pltime processing for
@@ -665,18 +657,13 @@ nd6_timer(void *arg)
                 */
                if (pr->ndpr_vltime != ND6_INFINITE_LIFETIME &&
                    time_second - pr->ndpr_lastupdate > pr->ndpr_vltime) {
-                       struct nd_prefix *t;
-                       t = pr->ndpr_next;
 
                        /*
                         * address expiration and prefix expiration are
                         * separate.  NEVER perform in6_purgeaddr here.
                         */
-
                        prelist_remove(pr);
-                       pr = t;
-               } else
-                       pr = pr->ndpr_next;
+               }
        }
        splx(s);
        CURVNET_RESTORE();
@@ -769,8 +756,7 @@ nd6_purge(struct ifnet *ifp)
         * in the routing table, in order to keep additional side effects as
         * small as possible.
         */
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr; dr = ndr) {
-               ndr = TAILQ_NEXT(dr, dr_entry);
+       TAILQ_FOREACH_SAFE(dr, &V_nd_defrouter, dr_entry, ndr) {
                if (dr->installed)
                        continue;
 
@@ -778,8 +764,7 @@ nd6_purge(struct ifnet *ifp)
                        defrtrlist_del(dr);
        }
 
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr; dr = ndr) {
-               ndr = TAILQ_NEXT(dr, dr_entry);
+       TAILQ_FOREACH_SAFE(dr, &V_nd_defrouter, dr_entry, ndr) {
                if (!dr->installed)
                        continue;
 
@@ -788,8 +773,7 @@ nd6_purge(struct ifnet *ifp)
        }
 
        /* Nuke prefix list entries toward ifp */
-       for (pr = V_nd_prefix.lh_first; pr; pr = npr) {
-               npr = pr->ndpr_next;
+       LIST_FOREACH_SAFE(pr, &V_nd_prefix, ndpr_entry, npr) {
                if (pr->ndpr_ifp == ifp) {
                        /*
                         * Because if_detach() does *not* release prefixes
@@ -904,7 +888,7 @@ nd6_is_new_addr_neighbor(struct sockaddr
         * If the address matches one of our on-link prefixes, it should be a
         * neighbor.
         */
-       for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+       LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                if (pr->ndpr_ifp != ifp)
                        continue;
 
@@ -958,7 +942,7 @@ nd6_is_new_addr_neighbor(struct sockaddr
         * XXX: we restrict the condition to hosts, because routers usually do
         * not have the "default router list".
         */
-       if (!V_ip6_forwarding && TAILQ_FIRST(&V_nd_defrouter) == NULL &&
+       if (!V_ip6_forwarding && TAILQ_EMPTY(&V_nd_defrouter) &&
            V_nd6_defifindex == ifp->if_index) {
                return (1);
        }
@@ -1231,8 +1215,9 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
                 */
                bzero(drl, sizeof(*drl));
                s = splnet();
-               dr = TAILQ_FIRST(&V_nd_defrouter);
-               while (dr && i < DRLSTSIZ) {
+               TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) {
+                       if (i >= DRLSTSIZ)
+                               break;
                        drl->defrouter[i].rtaddr = dr->rtaddr;
                        in6_clearscope(&drl->defrouter[i].rtaddr);
 
@@ -1241,7 +1226,6 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
                        drl->defrouter[i].expire = dr->expire;
                        drl->defrouter[i].if_index = dr->ifp->if_index;
                        i++;
-                       dr = TAILQ_NEXT(dr, dr_entry);
                }
                splx(s);
                break;
@@ -1260,11 +1244,12 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
                 */
                bzero(oprl, sizeof(*oprl));
                s = splnet();
-               pr = V_nd_prefix.lh_first;
-               while (pr && i < PRLSTSIZ) {
+               LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                        struct nd_pfxrouter *pfr;
                        int j;
 
+                       if (i >= PRLSTSIZ)
+                               break;
                        oprl->prefix[i].prefix = pr->ndpr_prefix.sin6_addr;
                        oprl->prefix[i].raflags = pr->ndpr_raf;
                        oprl->prefix[i].prefixlen = pr->ndpr_plen;
@@ -1289,9 +1274,8 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
                                        oprl->prefix[i].expire = maxexpire;
                        }
 
-                       pfr = pr->ndpr_advrtrs.lh_first;
                        j = 0;
-                       while (pfr) {
+                       LIST_FOREACH(pfr, &pr->ndpr_advrtrs, pfr_entry) {
                                if (j < DRLSTSIZ) {
 #define RTRADDR oprl->prefix[i].advrtr[j]
                                        RTRADDR = pfr->router->rtaddr;
@@ -1299,13 +1283,11 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
 #undef RTRADDR
                                }
                                j++;
-                               pfr = pfr->pfr_next;
                        }
                        oprl->prefix[i].advrtrs = j;
                        oprl->prefix[i].origin = PR_ORIG_RA;
 
                        i++;
-                       pr = pr->ndpr_next;
                }
                splx(s);
 
@@ -1369,11 +1351,9 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
                struct nd_prefix *pr, *next;
 
                s = splnet();
-               for (pr = V_nd_prefix.lh_first; pr; pr = next) {
+               LIST_FOREACH_SAFE(pr, &V_nd_prefix, ndpr_entry, next) {
                        struct in6_ifaddr *ia, *ia_next;
 
-                       next = pr->ndpr_next;
-
                        if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
                                continue; /* XXX */
 
@@ -1399,8 +1379,7 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
 
                s = splnet();
                defrouter_reset();
-               for (dr = TAILQ_FIRST(&V_nd_defrouter); dr; dr = next) {
-                       next = TAILQ_NEXT(dr, dr_entry);
+               TAILQ_FOREACH_SAFE(dr, &V_nd_defrouter, dr_entry, next) {
                        defrtrlist_del(dr);
                }
                defrouter_select();
@@ -1722,8 +1701,7 @@ nd6_slowtimo(void *arg)
        callout_reset(&V_nd6_slowtimo_ch, ND6_SLOWTIMER_INTERVAL * hz,
            nd6_slowtimo, curvnet);
        IFNET_RLOCK_NOSLEEP();
-       for (ifp = TAILQ_FIRST(&V_ifnet); ifp;
-           ifp = TAILQ_NEXT(ifp, if_list)) {
+       TAILQ_FOREACH(ifp, &V_ifnet, if_list) {
                nd6if = ND_IFINFO(ifp);
                if (nd6if->basereachable && /* already initialized */
                    (nd6if->recalctm -= ND6_SLOWTIMER_INTERVAL) <= 0) {
@@ -2169,8 +2147,7 @@ nd6_sysctl_drlist(SYSCTL_HANDLER_ARGS)
                return EPERM;
        error = 0;
 
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr;
-            dr = TAILQ_NEXT(dr, dr_entry)) {
+       TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) {
                d = (struct in6_defrouter *)buf;
                de = (struct in6_defrouter *)(buf + sizeof(buf));
 
@@ -2210,7 +2187,7 @@ nd6_sysctl_prlist(SYSCTL_HANDLER_ARGS)
                return EPERM;
        error = 0;
 
-       for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+       LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                u_short advrtrs;
                size_t advance;
                struct sockaddr_in6 *sin6, *s6;
@@ -2255,8 +2232,7 @@ nd6_sysctl_prlist(SYSCTL_HANDLER_ARGS)
                        p->flags = pr->ndpr_stateflags;
                        p->origin = PR_ORIG_RA;
                        advrtrs = 0;
-                       for (pfr = pr->ndpr_advrtrs.lh_first; pfr;
-                            pfr = pfr->pfr_next) {
+                       LIST_FOREACH(pfr, &pr->ndpr_advrtrs, pfr_entry) {
                                if ((void *)&sin6[advrtrs + 1] > (void *)pe) {
                                        advrtrs++;
                                        continue;

Modified: stable/8/sys/netinet6/nd6.h
==============================================================================
--- stable/8/sys/netinet6/nd6.h Fri Mar 16 21:28:05 2012        (r233046)
+++ stable/8/sys/netinet6/nd6.h Fri Mar 16 21:28:29 2012        (r233047)
@@ -276,8 +276,6 @@ struct nd_prefix {
        int     ndpr_refcnt;    /* reference couter from addresses */
 };
 
-#define ndpr_next              ndpr_entry.le_next
-
 #define ndpr_raf               ndpr_flags
 #define ndpr_raf_onlink                ndpr_flags.onlink
 #define ndpr_raf_auto          ndpr_flags.autonomous
@@ -311,7 +309,6 @@ struct inet6_ndpr_msghdr {
 
 struct nd_pfxrouter {
        LIST_ENTRY(nd_pfxrouter) pfr_entry;
-#define pfr_next pfr_entry.le_next
        struct nd_defrouter *router;
 };
 

Modified: stable/8/sys/netinet6/nd6_nbr.c
==============================================================================
--- stable/8/sys/netinet6/nd6_nbr.c     Fri Mar 16 21:28:05 2012        
(r233046)
+++ stable/8/sys/netinet6/nd6_nbr.c     Fri Mar 16 21:28:29 2012        
(r233047)
@@ -1154,11 +1154,11 @@ nd6_dad_find(struct ifaddr *ifa)
 {
        struct dadq *dp;
 
-       for (dp = V_dadq.tqh_first; dp; dp = dp->dad_list.tqe_next) {
+       TAILQ_FOREACH(dp, &V_dadq, dad_list)
                if (dp->dad_ifa == ifa)
-                       return dp;
-       }
-       return NULL;
+                       return (dp);
+
+       return (NULL);
 }
 
 static void

Modified: stable/8/sys/netinet6/nd6_rtr.c
==============================================================================
--- stable/8/sys/netinet6/nd6_rtr.c     Fri Mar 16 21:28:05 2012        
(r233046)
+++ stable/8/sys/netinet6/nd6_rtr.c     Fri Mar 16 21:28:29 2012        
(r233047)
@@ -494,8 +494,7 @@ defrouter_lookup(struct in6_addr *addr, 
 {
        struct nd_defrouter *dr;
 
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr;
-            dr = TAILQ_NEXT(dr, dr_entry)) {
+       TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) {
                if (dr->ifp == ifp && IN6_ARE_ADDR_EQUAL(addr, &dr->rtaddr))
                        return (dr);
        }
@@ -542,8 +541,7 @@ defrouter_reset(void)
 {
        struct nd_defrouter *dr;
 
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr;
-            dr = TAILQ_NEXT(dr, dr_entry))
+       TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry)
                defrouter_delreq(dr);
 
        /*
@@ -574,7 +572,7 @@ defrtrlist_del(struct nd_defrouter *dr)
        /*
         * Also delete all the pointers to the router in each prefix lists.
         */
-       for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+       LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                struct nd_pfxrouter *pfxrtr;
                if ((pfxrtr = pfxrtr_lookup(pr, dr)) != NULL)
                        pfxrtr_del(pfxrtr);
@@ -638,7 +636,7 @@ defrouter_select(void)
         * Let's handle easy case (3) first:
         * If default router list is empty, there's nothing to be done.
         */
-       if (!TAILQ_FIRST(&V_nd_defrouter)) {
+       if (TAILQ_EMPTY(&V_nd_defrouter)) {
                splx(s);
                return;
        }
@@ -648,8 +646,7 @@ defrouter_select(void)
         * We just pick up the first reachable one (if any), assuming that
         * the ordering rule of the list described in defrtrlist_update().
         */
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr;
-            dr = TAILQ_NEXT(dr, dr_entry)) {
+       TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) {
                IF_AFDATA_LOCK(dr->ifp);
                if (selected_dr == NULL &&
                    (ln = nd6_lookup(&dr->rtaddr, 0, dr->ifp)) &&
@@ -806,8 +803,7 @@ insert:
         */
 
        /* insert at the end of the group */
-       for (dr = TAILQ_FIRST(&V_nd_defrouter); dr;
-            dr = TAILQ_NEXT(dr, dr_entry)) {
+       TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) {
                if (rtpref(n) > rtpref(dr))
                        break;
        }
@@ -828,7 +824,7 @@ pfxrtr_lookup(struct nd_prefix *pr, stru
 {
        struct nd_pfxrouter *search;
 
-       for (search = pr->ndpr_advrtrs.lh_first; search; search = 
search->pfr_next) {
+       LIST_FOREACH(search, &pr->ndpr_advrtrs, pfr_entry) {
                if (search->router == dr)
                        break;
        }
@@ -864,8 +860,7 @@ nd6_prefix_lookup(struct nd_prefixctl *k
 {
        struct nd_prefix *search;
 
-       for (search = V_nd_prefix.lh_first;
-           search; search = search->ndpr_next) {
+       LIST_FOREACH(search, &V_nd_prefix, ndpr_entry) {
                if (key->ndpr_ifp == search->ndpr_ifp &&
                    key->ndpr_plen == search->ndpr_plen &&
                    in6_are_prefix_equal(&key->ndpr_prefix.sin6_addr,
@@ -971,9 +966,7 @@ prelist_remove(struct nd_prefix *pr)
        LIST_REMOVE(pr, ndpr_entry);
 
        /* free list of routers that adversed the prefix */
-       for (pfr = pr->ndpr_advrtrs.lh_first; pfr; pfr = next) {
-               next = pfr->pfr_next;
-
+       LIST_FOREACH_SAFE(pfr, &pr->ndpr_advrtrs, pfr_entry, next) {
                free(pfr, M_IP6NDP);
        }
        splx(s);
@@ -1336,8 +1329,7 @@ find_pfxlist_reachable_router(struct nd_
        struct llentry *ln;
        int canreach;
 
-       for (pfxrtr = LIST_FIRST(&pr->ndpr_advrtrs); pfxrtr != NULL;
-            pfxrtr = LIST_NEXT(pfxrtr, pfr_entry)) {
+       LIST_FOREACH(pfxrtr, &pr->ndpr_advrtrs, pfr_entry) {
                IF_AFDATA_LOCK(pfxrtr->router->ifp);
                ln = nd6_lookup(&pfxrtr->router->rtaddr, 0, 
pfxrtr->router->ifp);
                IF_AFDATA_UNLOCK(pfxrtr->router->ifp);
@@ -1376,7 +1368,7 @@ pfxlist_onlink_check()
         * Check if there is a prefix that has a reachable advertising
         * router.
         */
-       for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+       LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                if (pr->ndpr_raf_onlink && find_pfxlist_reachable_router(pr))
                        break;
        }
@@ -1386,12 +1378,10 @@ pfxlist_onlink_check()
         * that does not advertise any prefixes.
         */
        if (pr == NULL) {
-               for (dr = TAILQ_FIRST(&V_nd_defrouter); dr;
-                   dr = TAILQ_NEXT(dr, dr_entry)) {
+               TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) {
                        struct nd_prefix *pr0;
 
-                       for (pr0 = V_nd_prefix.lh_first; pr0;
-                           pr0 = pr0->ndpr_next) {
+                       LIST_FOREACH(pr0, &V_nd_prefix, ndpr_entry) {
                                if ((pfxrtr = pfxrtr_lookup(pr0, dr)) != NULL)
                                        break;
                        }
@@ -1399,7 +1389,7 @@ pfxlist_onlink_check()
                                break;
                }
        }
-       if (pr != NULL || (TAILQ_FIRST(&V_nd_defrouter) && pfxrtr == NULL)) {
+       if (pr != NULL || (!TAILQ_EMPTY(&V_nd_defrouter) && pfxrtr == NULL)) {
                /*
                 * There is at least one prefix that has a reachable router,
                 * or at least a router which probably does not advertise
@@ -1409,7 +1399,7 @@ pfxlist_onlink_check()
                 * Detach prefixes which have no reachable advertising
                 * router, and attach other prefixes.
                 */
-               for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+               LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                        /* XXX: a link-local prefix should never be detached */
                        if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
                                continue;
@@ -1433,7 +1423,7 @@ pfxlist_onlink_check()
                }
        } else {
                /* there is no prefix that has a reachable router */
-               for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+               LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                        if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
                                continue;
 
@@ -1456,7 +1446,7 @@ pfxlist_onlink_check()
         * interfaces.  Such cases will be handled in nd6_prefix_onlink,
         * so we don't have to care about them.
         */
-       for (pr = V_nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+       LIST_FOREACH(pr, &V_nd_prefix, ndpr_entry) {
                int e;
                char ip6buf[INET6_ADDRSTRLEN];
 
@@ -1657,7 +1647,7 @@ nd6_prefix_onlink(struct nd_prefix *pr)
         * Although such a configuration is expected to be rare, we explicitly
         * allow it.
         */
-       for (opr = V_nd_prefix.lh_first; opr; opr = opr->ndpr_next) {
+       LIST_FOREACH(opr, &V_nd_prefix, ndpr_entry) {
                if (opr == pr)
                        continue;
 
@@ -1769,7 +1759,7 @@ nd6_prefix_offlink(struct nd_prefix *pr)
                 * If there's one, try to make the prefix on-link on the
                 * interface.
                 */
-               for (opr = V_nd_prefix.lh_first; opr; opr = opr->ndpr_next) {
+               LIST_FOREACH(opr, &V_nd_prefix, ndpr_entry) {
                        if (opr == pr)
                                continue;
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to