summaryrefslogtreecommitdiff
path: root/bgpd
diff options
context:
space:
mode:
authorpaul <paul>2003-05-10 18:33:28 +0000
committerpaul <paul>2003-05-10 18:33:28 +0000
commitfba3d22b84cfe2ba39047c8fc67fe80469e8ef8e (patch)
tree15850aaefc48bdb6fae79784fc2b4d64cb5cb546 /bgpd
parent29db05b4a5d9144e4fbfd7139c27e50902e50fda (diff)
Hopefully fix the 'bgp dump routes-mrt' command to actually dump routes.
Should recognise the absence of an interval now and schedule one-shot dump. hopefully.
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_dump.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/bgpd/bgp_dump.c b/bgpd/bgp_dump.c
index fca51edc..8ee367be 100644
--- a/bgpd/bgp_dump.c
+++ b/bgpd/bgp_dump.c
@@ -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;