Browse Source

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.
paul 16 years ago
parent
commit
0c0f9112e1
6 changed files with 99 additions and 95 deletions
  1. 12 0
      zebra/ChangeLog
  2. 2 2
      zebra/if_ioctl.c
  3. 2 4
      zebra/if_ioctl_solaris.c
  4. 42 43
      zebra/irdp_interface.c
  5. 39 41
      zebra/irdp_main.c
  6. 2 5
      zebra/irdp_packet.c

+ 12 - 0
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 *.

+ 2 - 2
zebra/if_ioctl.c

@@ -405,10 +405,10 @@ if_get_addr (struct interface *ifp)
 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);
 

+ 2 - 4
zebra/if_ioctl_solaris.c

@@ -334,16 +334,14 @@ struct connected *
 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;

+ 42 - 43
zebra/irdp_interface.c

@@ -76,14 +76,13 @@ char b1[16], b2[16], b3[16], b4[16];  /* For inet_2a */
 
 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 @@ int if_drop_group (struct interface *ifp)
 
 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 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
 {
   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 @@ void irdp_if_start(struct interface *ifp, int multicast, int set_defaults)
   /* 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 @@ void irdp_config_write (struct vty *vty, struct interface *ifp)
   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 @@ void irdp_config_write (struct vty *vty, struct interface *ifp)
     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 @@ DEFUN (ip_irdp_address_preference,
        "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 @@ DEFUN (ip_irdp_address_preference,
 
   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 @@ DEFUN (no_ip_irdp_address_preference,
        "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 @@ DEFUN (no_ip_irdp_address_preference,
   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,

+ 39 - 41
zebra/irdp_main.c

@@ -138,18 +138,18 @@ irdp_sock_init (void)
 
 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 @@ int irdp_send_thread(struct thread *t_advert)
   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 @@ void irdp_advert_off(struct interface *ifp)
 {
   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 @@ void irdp_advert_off(struct interface *ifp)
   irdp->t_advertise = NULL;
   
   if(ifp->connected) 
-    for (node = listhead (ifp->connected); node; nextnode (node)) {
-      ifc = getdata (node);
-
-      p = ifc->address;
-
-      /* 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);
+    LIST_LOOP (ifp->connected, ifc, node)
+      {
+        p = ifc->address;
+
+        /* 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);
+          }
       }
-    }
 }
 
 
@@ -320,7 +316,7 @@ void process_solicit (struct interface *ifp)
 void irdp_finish()
 {
 
-  listnode node;
+  struct listnode *node;
   struct interface *ifp;
   struct zebra_if *zi;
   struct irdp_interface *irdp;
@@ -330,15 +326,19 @@ void irdp_finish()
   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->flags & IF_ACTIVE ) {
-	irdp->flags |= IF_SHUTDOWN;
-	irdp_advert_off(ifp);
-      }
+      if (!irdp) 
+        continue;
+
+      if (irdp->flags & IF_ACTIVE ) 
+        {
+	  irdp->flags |= IF_SHUTDOWN;
+	  irdp_advert_off(ifp);
+        }
     }
 }
 
@@ -348,8 +348,6 @@ void irdp_init()
   irdp_if_init ();
 }
 
-
-
 #endif /* HAVE_IRDP */
 
 

+ 2 - 5
zebra/irdp_packet.c

@@ -178,10 +178,7 @@ void parse_irdp_packet(char *p,
     }
 }
 
-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 @@ int irdp_recvmsg (int sock,
     return ret;
   }
 
-  ifindex = getsockopt_ifindex (AF_INET, &msg);
+  *ifindex = getsockopt_ifindex (AF_INET, &msg);
 
   return ret;
 }