]> git.puffer.fish Git - mirror/frr.git/commitdiff
Hopefully fix the 'bgp dump routes-mrt' command to actually dump routes.
authorpaul <paul>
Sat, 10 May 2003 18:33:28 +0000 (18:33 +0000)
committerpaul <paul>
Sat, 10 May 2003 18:33:28 +0000 (18:33 +0000)
Should recognise the absence of an interval now and schedule one-shot dump.
hopefully.

bgpd/bgp_dump.c

index fca51edc7c2cdc2b0d6530b98530d57bcd53fbba..8ee367be2d8d16f11072ab434d096037c829a206 100644 (file)
@@ -130,8 +130,13 @@ bgp_dump_interval_add (struct bgp_dump *bgp_dump, int interval)
 {
   int bgp_dump_interval_func (struct thread *);
 
-  bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func, 
-                                          bgp_dump, interval);
+  if (interval > 0 )
+    bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func, 
+                                            bgp_dump, interval);
+  else
+    bgp_dump->t_interval = thread_add_event (master, bgp_dump_interval_func,
+                                            bgp_dump, 0);
+
   return 0;
 }
 
@@ -296,7 +301,6 @@ int
 bgp_dump_interval_func (struct thread *t)
 {
   struct bgp_dump *bgp_dump;
-
   bgp_dump = THREAD_ARG (t);
   bgp_dump->t_interval = NULL;
 
@@ -310,8 +314,11 @@ bgp_dump_interval_func (struct thread *t)
       bgp_dump_routes_func (AFI_IP6);
     }
 
-  bgp_dump_interval_add (bgp_dump, bgp_dump->interval);
-  
+  /* if interval is set reschedule */
+  if (bgp_dump->interval > 0)
+    bgp_dump_interval_add (bgp_dump, bgp_dump->interval);
+
+     
   return 0;
 }
 
@@ -475,10 +482,11 @@ int
 bgp_dump_set (struct vty *vty, struct bgp_dump *bgp_dump, int type,
              char *path, char *interval_str)
 {
+  unsigned int interval;
+  
   if (interval_str)
     {
-      unsigned int interval;
-
+      
       /* Check interval string. */
       interval = bgp_dump_parse_time (interval_str);
       if (interval == 0)
@@ -491,10 +499,15 @@ bgp_dump_set (struct vty *vty, struct bgp_dump *bgp_dump, int type,
       if (bgp_dump->interval_str)
        free (bgp_dump->interval_str);
       bgp_dump->interval_str = strdup (interval_str);
-
-      /* Create interval thread. */
-      bgp_dump_interval_add (bgp_dump, interval);
+      
     }
+  else
+    {
+      interval = 0;
+    }
+    
+  /* Create interval thread. */
+  bgp_dump_interval_add (bgp_dump, interval);
 
   /* Set type. */
   bgp_dump->type = type;