mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 11:48:50 +00:00
zebra: Fix other table inactive when ip import-table is on
In `rib_link`, if is_zebra_import_table_enabled returns
true, `rib_queue_add` will not called, resulting in other
table route node never processed. This actually should not
be dependent on whether the route is imported.
In `rib_delnode`, if is_zebra_import_table_enabled returns
true, it will use `rib_unlink` instead of enqueuing the
route node for process. There is no reason that imported
route nodes should not be reprocessed. Long ago, the
behaviour was dependent on whether the route_entry comes
from a table other than main.
Signed-off-by: zyxwvu Shi <i@shiyc.cn>
(cherry picked from commit 207207c0c0
)
This commit is contained in:
parent
6deccd5995
commit
682a1fea98
@ -3851,7 +3851,9 @@ static void rib_link(struct route_node *rn, struct route_entry *re, int process)
|
||||
|
||||
rmap_name = zebra_get_import_table_route_map(afi, re->table);
|
||||
zebra_add_import_table_entry(zvrf, rn, re, rmap_name);
|
||||
} else if (process)
|
||||
}
|
||||
|
||||
if (process)
|
||||
rib_queue_add(rn);
|
||||
}
|
||||
|
||||
@ -3926,11 +3928,9 @@ void rib_delnode(struct route_node *rn, struct route_entry *re)
|
||||
zlog_debug("%s(%u):%pRN: Freeing route rn %p, re %p (%s)",
|
||||
vrf_id_to_name(re->vrf_id), re->vrf_id, rn,
|
||||
rn, re, zebra_route_string(re->type));
|
||||
|
||||
rib_unlink(rn, re);
|
||||
} else {
|
||||
rib_queue_add(rn);
|
||||
}
|
||||
|
||||
rib_queue_add(rn);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user