diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2024-12-11 18:15:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-11 18:15:09 +0200 |
| commit | 024c9446a5157e23a129ef56e127e7229f1d6bf1 (patch) | |
| tree | 70c637e629339b710f9c1658f0055bed33c45a18 /zebra/zebra_rib.c | |
| parent | c322b94124287acb7f190a96cbb725139c01a256 (diff) | |
| parent | 3f3c923d7a2175f909e5c20e5f91548cf5c124bb (diff) | |
Merge pull request #17605 from donaldsharp/upstream_some_evpn
Upstream some internal code
Diffstat (limited to 'zebra/zebra_rib.c')
| -rw-r--r-- | zebra/zebra_rib.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 574083ae02..11d279d8c9 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -2838,6 +2838,8 @@ static void process_subq_early_route_add(struct zebra_early_route *ere) if (!ere->startup && (re->flags & ZEBRA_FLAG_SELFROUTE) && zrouter.asic_offloaded) { + struct route_entry *entry; + if (!same) { if (IS_ZEBRA_DEBUG_RIB) zlog_debug( @@ -2854,6 +2856,25 @@ static void process_subq_early_route_add(struct zebra_early_route *ere) early_route_memory_free(ere); return; } + + RNODE_FOREACH_RE (rn, entry) { + if (CHECK_FLAG(entry->status, ROUTE_ENTRY_REMOVED)) + continue; + + if (entry->type != ere->re->type) + continue; + + /* + * If we have an entry that is changed but un + * processed and not a self route, then + * we should just drop this new self route + */ + if (CHECK_FLAG(entry->status, ROUTE_ENTRY_CHANGED) && + !(entry->flags & ZEBRA_FLAG_SELFROUTE)) { + early_route_memory_free(ere); + return; + } + } } /* Set default distance by route type. */ |
