mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
rt-show.c: fixed OBSREF_SET after cf_error(), changed message when 'show route export' called on static protocol
This commit is contained in:
parent
3f4332f0bd
commit
99fa1f01a4
@ -735,7 +735,6 @@ r_args:
|
||||
$$ = cfg_allocz(sizeof(struct rt_show_data));
|
||||
init_list(&($$->tables));
|
||||
$$->filter = FILTER_ACCEPT;
|
||||
OBSREF_SET($$->running_on_config, this_cli->main_config);
|
||||
$$->cli = this_cli;
|
||||
$$->tf_route = this_cli->main_config->tf_route;
|
||||
}
|
||||
|
@ -361,14 +361,22 @@ rt_show_get_default_tables(struct rt_show_data *d)
|
||||
|
||||
if (d->export_protocol)
|
||||
{
|
||||
int seen_only_export_down = 1;
|
||||
int tab_found = 0;
|
||||
WALK_LIST(c, d->export_protocol->channels)
|
||||
{
|
||||
tab_found = 1;
|
||||
if (rt_export_get_state(&c->out_req) == TES_DOWN)
|
||||
continue;
|
||||
continue;
|
||||
|
||||
seen_only_export_down = 0;
|
||||
tab = rt_show_add_table(d, c->table);
|
||||
tab->export_channel = c;
|
||||
}
|
||||
|
||||
if (tab_found && seen_only_export_down)
|
||||
cf_error("Requested 'show route export' to protocols which aren't accepting exports at all.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -460,6 +468,11 @@ rt_show(struct rt_show_data *d)
|
||||
|
||||
d->tab = HEAD(d->tables);
|
||||
|
||||
/* OBSREF_SET should not be called sooner than the last cf_error() may occur.
|
||||
If cf_error() called after OBSREF_SET, the crreated obstacle may not be removed at all.
|
||||
(cf_error() contains long jump.) */
|
||||
OBSREF_SET(d->running_on_config, this_cli->main_config);
|
||||
|
||||
this_cli->cleanup = rt_show_cleanup;
|
||||
this_cli->rover = d;
|
||||
this_cli->cont = rt_show_cont;
|
||||
|
Loading…
Reference in New Issue
Block a user