diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2023-10-24 16:14:40 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2023-10-25 11:55:01 -0400 | 
| commit | 4a43b81d7c89f264ab8670f8381238cdc3207d85 (patch) | |
| tree | 100eb61ff1e9f3315022bafb1ce70acafdd6a62d /bgpd/bgp_nexthop.h | |
| parent | f239b0f05a3b68e4105f4a6dd7326d636020210f (diff) | |
bgpd: combine import_check_table and nexthop_check_table
In zebra, the import check table and the nexthop check tables
were combined.  This leaves an issue where when bgp happens
to have a tracked address in both the import check table
and the nexthop track table that are the same address.
When the the item is removed from one table the call
to remove it from zebra removes tracking for the other
table.
Combine the two tables together and keep track where
they came from for processing in bgpd.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'bgpd/bgp_nexthop.h')
| -rw-r--r-- | bgpd/bgp_nexthop.h | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/bgpd/bgp_nexthop.h b/bgpd/bgp_nexthop.h index 49cbbaf885..c1d4d088a3 100644 --- a/bgpd/bgp_nexthop.h +++ b/bgpd/bgp_nexthop.h @@ -91,6 +91,9 @@ struct bgp_nexthop_cache {  	 * nexthop.  	 */  	bool is_evpn_gwip_nexthop; + +	bool import_check_table; +	bool nexthop_check_table;  };  extern int bgp_nexthop_cache_compare(const struct bgp_nexthop_cache *a, @@ -132,8 +135,9 @@ extern bool bgp_nexthop_self(struct bgp *bgp, afi_t afi, uint8_t type,  			     struct bgp_dest *dest);  extern struct bgp_nexthop_cache *bnc_new(struct bgp_nexthop_cache_head *tree,  					 struct prefix *prefix, -					 uint32_t srte_color, -					 ifindex_t ifindex); +					 uint32_t srte_color, ifindex_t ifindex, +					 bool import_check_table, +					 bool nexthop_check_table);  extern bool bnc_existing_for_prefix(struct bgp_nexthop_cache *bnc);  extern void bnc_free(struct bgp_nexthop_cache *bnc);  extern struct bgp_nexthop_cache *bnc_find(struct bgp_nexthop_cache_head *tree,  | 
