diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index b11aaf2..060c68c 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -108,7 +108,7 @@
   union sockunion *su2;
   struct peer_group *group;
   struct peer *peer;
-  struct listnode *nn;
+  struct listnode *node, *nnode;
 
   if (type == RMAP_BGP)
     {
@@ -147,7 +147,7 @@
       else
         {
           group = peer->group;
-          LIST_LOOP (group->peer, peer, nn)
+          for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
             {
               if (sockunion_same (su, &peer->su))
                 return RMAP_MATCH;
@@ -2181,7 +2181,8 @@
   afi_t afi;
   safi_t safi;
   int direct;
-  struct listnode *nn, *nm;
+  struct listnode *node, *nnode;
+  struct listnode *mnode, *mnnode;
   struct bgp *bgp;
   struct peer *peer;
   struct peer_group *group;
@@ -2190,9 +2191,9 @@
   struct bgp_static *bgp_static;
 
   /* For neighbor route-map updates. */
-  LIST_LOOP (bm->bgp, bgp, nn)
+  for (ALL_LIST_ELEMENTS (bm->bgp, mnode, mnnode, bgp))
     {
-      LIST_LOOP (bgp->peer, peer, nm)
+      for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
 	{
 	  for (afi = AFI_IP; afi < AFI_MAX; afi++)
 	    for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
@@ -2214,7 +2215,7 @@
 		  filter->usmap.map = NULL;
 	      }
 	}
-      LIST_LOOP (bgp->group, group, nm)
+      for (ALL_LIST_ELEMENTS (bgp->group, node, nnode, group))
 	{
 	  for (afi = AFI_IP; afi < AFI_MAX; afi++)
 	    for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
@@ -2239,9 +2240,9 @@
     }
 
   /* For default-originate route-map updates. */
-  LIST_LOOP (bm->bgp, bgp, nn)
+  for (ALL_LIST_ELEMENTS (bm->bgp, mnode, mnnode, bgp))
     {
-      LIST_LOOP (bgp->peer, peer, nm)
+      for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
 	{
 	  for (afi = AFI_IP; afi < AFI_MAX; afi++)
 	    for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
@@ -2256,7 +2257,7 @@
     }
 
   /* For network route-map updates. */
-  LIST_LOOP (bm->bgp, bgp, nn)
+  for (ALL_LIST_ELEMENTS (bm->bgp, mnode, mnnode, bgp))
     {
       for (afi = AFI_IP; afi < AFI_MAX; afi++)
 	for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
@@ -2273,7 +2274,7 @@
     }
 
   /* For redistribute route-map updates. */
-  LIST_LOOP (bm->bgp, bgp, nn)
+  for (ALL_LIST_ELEMENTS (bm->bgp, mnode, mnnode, bgp))
     {
       for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
 	{
