diff options
author | paul <paul> | 2003-05-10 18:33:28 +0000 |
---|---|---|
committer | paul <paul> | 2003-05-10 18:33:28 +0000 |
commit | fba3d22b84cfe2ba39047c8fc67fe80469e8ef8e (patch) | |
tree | 15850aaefc48bdb6fae79784fc2b4d64cb5cb546 /bgpd | |
parent | 29db05b4a5d9144e4fbfd7139c27e50902e50fda (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.c | 33 |
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; |