2004-09-24 Paul Jakma <paul@dishone.st>

        * irdp_{interface,main}.c: lists typedef removal cleanup.
          update some list loops to LIST_LOOP. some miscellaneous style
          and indent fixups.
          (no_ip_irdp_address_preference_cmd) Fix delete of referenced node
          in loop.
        * irdp_packet.c: (irdp_recvmsg) Fix buggy assignment of integer
          to pointer.
        * if_ioctl{,_solaris}.c: lists typedef removal cleanup.
          update some list loops to LIST_LOOP.
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 38bca6b..c31ceb8 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,15 @@
+2004-09-24 Paul Jakma <paul@dishone.st>
+
+        * irdp_{interface,main}.c: lists typedef removal cleanup.        
+          update some list loops to LIST_LOOP. some miscellaneous style
+          and indent fixups.
+          (no_ip_irdp_address_preference_cmd) Fix delete of referenced node    
+          in loop.       
+        * irdp_packet.c: (irdp_recvmsg) Fix buggy assignment of integer
+          to pointer.
+        * if_ioctl{,_solaris}.c: lists typedef removal cleanup. 
+          update some list loops to LIST_LOOP.
+
 2004-09-23 Hasso Tepper <hasso at quagga.net>
 
 	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
index ab36f68..431e7ea 100644
--- a/zebra/if_ioctl.c
+++ b/zebra/if_ioctl.c
@@ -405,10 +405,10 @@
 static void
 interface_info_ioctl ()
 {
-  listnode node;
+  struct listnode *node;
   struct interface *ifp;
   
-  for (node = listhead (iflist); node; node = nextnode (node))
+  LIST_LOOP (iflist, ifp, node)
     {
       ifp = getdata (node);
 
diff --git a/zebra/if_ioctl_solaris.c b/zebra/if_ioctl_solaris.c
index c05883c..4f8284a 100644
--- a/zebra/if_ioctl_solaris.c
+++ b/zebra/if_ioctl_solaris.c
@@ -334,16 +334,14 @@
 if_lookup_linklocal (struct interface *ifp)
 {
 #ifdef HAVE_IPV6
-  listnode node;
+  struct listnode *node;
   struct connected *ifc;
 
   if (ifp == NULL)
     return NULL;
 
-  for (node = listhead (ifp->connected); node; node = nextnode (node))
+  LIST_LOOP (ifp->connected, ifc, node)
     {
-      ifc = getdata (node);
-
       if ((ifc->address->family == AF_INET6) &&
           (IN6_IS_ADDR_LINKLOCAL (&ifc->address->u.prefix6)))
         return ifc;
diff --git a/zebra/irdp_interface.c b/zebra/irdp_interface.c
index 59e5de1..7871f4c 100644
--- a/zebra/irdp_interface.c
+++ b/zebra/irdp_interface.c
@@ -76,14 +76,13 @@
 
 struct prefix *irdp_get_prefix(struct interface *ifp)
 {
-  listnode node;
+  struct listnode *node;
   struct connected *ifc;
   
-  if(ifp->connected) 
-    for (node = listhead (ifp->connected); node; nextnode (node)) {
-      ifc = getdata (node);
+  if (ifp->connected)
+    LIST_LOOP (ifp->connected, ifc, node)
       return ifc->address;
-    }
+
   return NULL;
 }
 
@@ -158,13 +157,13 @@
 
 struct interface *get_iflist_ifp(int idx)
 {
-  listnode node;
+  struct listnode *node;
   struct interface *ifp;
 
-  for (node = listhead (iflist); node; nextnode (node)) {
-      ifp = getdata (node);
-      if(ifp->ifindex == idx) return ifp;
-    }
+  LIST_LOOP (iflist, ifp, node)
+    if(ifp->ifindex == idx) 
+      return ifp;
+
   return NULL;
 }
 
@@ -198,7 +197,8 @@
 {
   struct zebra_if *zi= ifp->info;
   struct irdp_interface *irdp = &zi->irdp;
-  listnode node;
+  struct listnode *node;
+  struct connected *ifc;
   u_int32_t timer, seed;
 
   if (irdp->flags & IF_ACTIVE ) {
@@ -234,12 +234,12 @@
   /* The spec suggests this for randomness */
 
   seed = 0;
-  if( ifp->connected) 
-	  for (node = listhead (ifp->connected); node; nextnode (node)) 
-	  {
-		  struct connected *ifc = getdata (node);
-		  seed = ifc->address->u.prefix4.s_addr;
-	  }
+  if( ifp->connected)
+    LIST_LOOP (ifp->connected, ifc, node)
+      {
+        seed = ifc->address->u.prefix4.s_addr;
+        break;
+      }
   
   srandom(seed);
   timer =  (random () % IRDP_DEFAULT_INTERVAL) + 1; 
@@ -337,7 +337,7 @@
   struct zebra_if *zi=ifp->info;
   struct irdp_interface *irdp=&zi->irdp;
   struct Adv *adv;
-  listnode node;
+  struct listnode *node;
 
   if(irdp->flags & IF_ACTIVE || irdp->flags & IF_SHUTDOWN) {
 
@@ -352,14 +352,11 @@
     vty_out (vty, " ip irdp preference %ld%s",  
 	     irdp->Preference, VTY_NEWLINE);
 
-    for (node = listhead (irdp->AdvPrefList); node; nextnode (node)) {
-	    adv = getdata (node);
-	    vty_out (vty, " ip irdp address %s preference %d%s",
-		     inet_2a(adv->ip.s_addr, b1),
-		     adv->pref,
-		     VTY_NEWLINE);
-
-    }
+    LIST_LOOP (irdp->AdvPrefList, adv, node)
+      vty_out (vty, " ip irdp address %s preference %d%s",
+                    inet_2a(adv->ip.s_addr, b1),
+                    adv->pref, 
+                    VTY_NEWLINE);
 
     vty_out (vty, " ip irdp holdtime %d%s",  
 	     irdp->Lifetime, VTY_NEWLINE);
@@ -591,7 +588,7 @@
        "Set IRDP address for advertise\n"
        "Preference level\n")
 {
-  listnode node;
+  struct listnode *node;
   struct in_addr ip; 
   int pref;
   int ret;
@@ -613,10 +610,9 @@
 
   pref = atoi(argv[1]);
 
-  for (node = listhead (irdp->AdvPrefList); node; nextnode (node)) {
-	  adv = getdata (node);
-      if(adv->ip.s_addr == ip.s_addr) return CMD_SUCCESS;
-  }
+  LIST_LOOP (irdp->AdvPrefList, adv, node)
+    if(adv->ip.s_addr == ip.s_addr) 
+      return CMD_SUCCESS;
 
   adv = Adv_new();
   adv->ip = ip;
@@ -637,7 +633,7 @@
        "Select IRDP address\n"
        "Old preference level\n")
 {
-  listnode node;
+  struct listnode *node;
   struct in_addr ip; 
   int pref;
   int ret;
@@ -655,21 +651,24 @@
   irdp=&zi->irdp;
 
   ret = inet_aton(argv[0], &ip);
-  if(!ret) return CMD_WARNING;
+  if (!ret) 
+    return CMD_WARNING;
 
   pref = atoi(argv[1]);
 
-  for (node = listhead (irdp->AdvPrefList); node; nextnode (node)) {
-	  adv = getdata (node);
-	  if(adv->ip.s_addr == ip.s_addr ) {
-		  listnode_delete(irdp->AdvPrefList, adv);
-		  break;
-	  }
-  }
-
+  for (node = listhead (irdp->AdvPrefList); node; node = nnode)
+    {
+      nnode = node->next;
+      adv = getdata (node);
+      
+      if(adv->ip.s_addr == ip.s_addr )
+        {
+          listnode_delete(irdp->AdvPrefList, adv);
+          break;
+        }
+    }
+  
   return CMD_SUCCESS;
-
-
 }
 
 DEFUN (ip_irdp_debug_messages,
diff --git a/zebra/irdp_main.c b/zebra/irdp_main.c
index f711d85..9e31950 100644
--- a/zebra/irdp_main.c
+++ b/zebra/irdp_main.c
@@ -138,18 +138,18 @@
 
 int get_pref(struct irdp_interface *irdp, struct prefix *p)
 {
-  listnode node;
+  struct listnode *node;
   struct Adv *adv;
 
   /* Use default preference or use the override pref */
   
-  if( irdp->AdvPrefList == NULL ) return irdp->Preference;
+  if( irdp->AdvPrefList == NULL )
+    return irdp->Preference;
   
-  for (node = listhead (irdp->AdvPrefList); node; nextnode (node)) {
-    adv = getdata (node);
+  LIST_LOOP (irdp->AdvPrefList, adv, node)
     if( p->u.prefix4.s_addr == adv->ip.s_addr )
       return adv->pref;
-  }
+
   return irdp->Preference;
 }
 
@@ -231,21 +231,18 @@
   struct zebra_if *zi=ifp->info;
   struct irdp_interface *irdp=&zi->irdp;
   struct prefix *p;
-  listnode node;
+  struct listnode *node;
   struct connected *ifc;
 
   irdp->flags &= ~IF_SOLICIT;
 
   if(ifp->connected) 
-    for (node = listhead (ifp->connected); node; nextnode (node)) {
-      ifc = getdata (node);
-
-      p = ifc->address;
-
-      irdp_advertisement(ifp, p);
-      irdp->irdp_sent++;
-
-    }
+    LIST_LOOP (ifp->connected, ifc, node)
+      {
+        p = ifc->address;
+        irdp_advertisement(ifp, p);
+        irdp->irdp_sent++;
+      }
 
   tmp = irdp->MaxAdvertInterval-irdp->MinAdvertInterval;
   timer =  (random () % tmp ) + 1;
@@ -266,7 +263,7 @@
 {
   struct zebra_if *zi=ifp->info;
   struct irdp_interface *irdp=&zi->irdp;
-  listnode node;
+  struct listnode *node;
   int i;
   struct connected *ifc;
   struct prefix *p;
@@ -275,21 +272,20 @@
   irdp->t_advertise = NULL;
   
   if(ifp->connected) 
-    for (node = listhead (ifp->connected); node; nextnode (node)) {
-      ifc = getdata (node);
+    LIST_LOOP (ifp->connected, ifc, node)
+      {
+        p = ifc->address;
 
-      p = ifc->address;
+        /* Output some packets with Lifetime 0 
+           we should add a wait...
+        */
 
-      /* Output some packets with Lifetime 0 
-	 we should add a wait...
-      */
-
-      for(i=0; i< IRDP_LAST_ADVERT_MESSAGES; i++) {
-
-	irdp->irdp_sent++;
-	irdp_advertisement(ifp, p);
+        for(i=0; i< IRDP_LAST_ADVERT_MESSAGES; i++) 
+          {
+            irdp->irdp_sent++;
+            irdp_advertisement(ifp, p);
+          }
       }
-    }
 }
 
 
@@ -320,7 +316,7 @@
 void irdp_finish()
 {
 
-  listnode node;
+  struct listnode *node;
   struct interface *ifp;
   struct zebra_if *zi;
   struct irdp_interface *irdp;
@@ -330,15 +326,19 @@
   for (node = listhead (iflist); node; node = nextnode (node))
     {
       ifp = getdata(node);
-      zi= ifp->info;
-      if(! zi) continue;
+      zi = ifp->info;
+      
+      if (!zi) 
+        continue;
       irdp = &zi->irdp;
-      if(!irdp) continue;
+      if (!irdp) 
+        continue;
 
-      if(irdp->flags & IF_ACTIVE ) {
-	irdp->flags |= IF_SHUTDOWN;
-	irdp_advert_off(ifp);
-      }
+      if (irdp->flags & IF_ACTIVE ) 
+        {
+	  irdp->flags |= IF_SHUTDOWN;
+	  irdp_advert_off(ifp);
+        }
     }
 }
 
@@ -348,8 +348,6 @@
   irdp_if_init ();
 }
 
-
-
 #endif /* HAVE_IRDP */
 
 
diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c
index 8cd3dad..bb3513a 100644
--- a/zebra/irdp_packet.c
+++ b/zebra/irdp_packet.c
@@ -178,10 +178,7 @@
     }
 }
 
-int irdp_recvmsg (int sock, 
-	      u_char *buf, 
-	      int size, 
-	      int *ifindex)
+int irdp_recvmsg (int sock, u_char *buf, int size, int *ifindex)
 {
   struct msghdr msg;
   struct iovec iov;
@@ -214,7 +211,7 @@
     return ret;
   }
 
-  ifindex = getsockopt_ifindex (AF_INET, &msg);
+  *ifindex = getsockopt_ifindex (AF_INET, &msg);
 
   return ret;
 }