Merge pull request #410 from dslicenc/rdnbrd-vrr

zebra: fix attempt to install a second rib from imported table entries
This commit is contained in:
Martin Winter 2017-05-02 08:42:38 -07:00 committed by GitHub
commit fdb33a50e1

View File

@ -498,6 +498,7 @@ int
zebra_add_import_table_entry (struct route_node *rn, struct rib *rib, const char *rmap_name)
{
struct rib *newrib;
struct rib *same;
struct prefix p;
struct nexthop *nhop;
union g_addr *gate;
@ -515,6 +516,21 @@ zebra_add_import_table_entry (struct route_node *rn, struct rib *rib, const char
p.prefixlen = rn->p.prefixlen;
p.u.prefix4 = rn->p.u.prefix4;
RNODE_FOREACH_RIB (rn, same)
{
if (CHECK_FLAG (same->status, RIB_ENTRY_REMOVED))
continue;
if (same->type == rib->type && same->instance == rib->instance
&& same->table == rib->table
&& same->type != ZEBRA_ROUTE_CONNECT)
break;
}
if (same)
zebra_del_import_table_entry (rn, same);
if (rib->nexthop_num == 1)
{
nhop = rib->nexthop;