diff options
| author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-09-08 06:56:33 -0700 | 
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@nvidia.com> | 2021-02-24 08:11:24 -0800 | 
| commit | 8b07f173e871f7d0c40084861c2d15fef6e79383 (patch) | |
| tree | 404e9784566ed808a996ddc7dcfe22f44cf376cf /zebra/zebra_evpn_mac.h | |
| parent | 00a7710c25aae45874622d69f5cea6ea6dff0a47 (diff) | |
zebra: link local MACs to destination port for efficient lacp-bypass processing
When an ES-bond comes out of bypass FRR needs to flush the local MACs learnt
while the bond was in bypass. To do that efficiently local MACs are linked
to the dest-access port. This only happens if the access-port is in
LACP-bypass or if it is non-ES.
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'zebra/zebra_evpn_mac.h')
| -rw-r--r-- | zebra/zebra_evpn_mac.h | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/zebra/zebra_evpn_mac.h b/zebra/zebra_evpn_mac.h index b8159914a2..fb162f1a93 100644 --- a/zebra/zebra_evpn_mac.h +++ b/zebra/zebra_evpn_mac.h @@ -90,7 +90,9 @@ struct zebra_mac_t_ {  	/* back pointer to zevpn */  	zebra_evpn_t *zevpn; -	/* Local or remote info. */ +	/* Local or remote info. +	 * Note: fwd_info is only relevant if mac->es is NULL. +	 */  	union {  		struct {  			ifindex_t ifindex; @@ -106,6 +108,16 @@ struct zebra_mac_t_ {  	/* memory used to link the mac to the es */  	struct listnode es_listnode; +	/* access-port/bridge member. only relevant for local macs that +	 * are associated with a zero-ESI, +	 * XXX - this belongs in fwd_info.local; however fwd_info is +	 * being cleared and memset to zero in different ways that can +	 * mess up the links. +	 */ +	struct interface *ifp; +	/* memory used to link the mac to the ifp */ +	struct listnode ifp_listnode; +  	/* Mobility sequence numbers associated with this entry. */  	uint32_t rem_seq;  	uint32_t loc_seq; @@ -269,6 +281,8 @@ int zebra_evpn_mac_gw_macip_add(struct interface *ifp, zebra_evpn_t *zevpn,  				bool def_gw);  void zebra_evpn_mac_svi_add(struct interface *ifp, zebra_evpn_t *zevpn);  void zebra_evpn_mac_svi_del(struct interface *ifp, zebra_evpn_t *zevpn); +void zebra_evpn_mac_ifp_del(struct interface *ifp); +void zebra_evpn_mac_clear_fwd_info(zebra_mac_t *zmac);  #ifdef __cplusplus  }  | 
