From fba3d22b84cfe2ba39047c8fc67fe80469e8ef8e Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 10 May 2003 18:33:28 +0000 Subject: 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. --- bgpd/bgp_dump.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'bgpd/bgp_dump.c') 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; -- cgit v1.2.1