diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2016-09-05 13:20:41 +0200 | 
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2017-02-14 13:58:58 +0100 | 
| commit | dfa42ea338db2d3bec31d69544fb941bb1822594 (patch) | |
| tree | dc0c11827e500b11f45144b3b12b4e649189d619 /bgpd/bgp_attr_evpn.c | |
| parent | a2dac1ef6a4f0dc3cc4e2bac83700119ff8b7459 (diff) | |
bgpd: handling router mac extended community
For each received routermac extended community, the mac address is
copied into routermac extended community context. For each emission,
a check is done against routermac extended community, if L2VPN is
enabled. If enabled, the extended community is appended.
Signed-off-by: Philippe Gubiert <philippe.guibert@6wind.com>
Diffstat (limited to 'bgpd/bgp_attr_evpn.c')
| -rw-r--r-- | bgpd/bgp_attr_evpn.c | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/bgpd/bgp_attr_evpn.c b/bgpd/bgp_attr_evpn.c index 76c0e51198..a85ba002db 100644 --- a/bgpd/bgp_attr_evpn.c +++ b/bgpd/bgp_attr_evpn.c @@ -27,7 +27,27 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  #include "memory.h"  #include "stream.h" +#include "bgpd/bgpd.h" +#include "bgpd/bgp_attr.h" +#include "bgpd/bgp_route.h"  #include "bgpd/bgp_attr_evpn.h" +#include "bgpd/bgp_ecommunity.h" + +void bgp_add_routermac_ecom (struct attr* attr, char * routermac) +{ +  struct ecommunity_val routermac_ecom; + +  if(attr->extra) +    { +      memset(&routermac_ecom, 0, sizeof(struct ecommunity_val)); +      routermac_ecom.val[0] = ECOMMUNITY_ENCODE_EVPN; +      routermac_ecom.val[1] = ECOMMUNITY_EVPN_SUBTYPE_ROUTERMAC; +      memcpy(&routermac_ecom.val[2], routermac, MAC_LEN); +      if(!attr->extra->ecommunity) +        attr->extra->ecommunity = ecommunity_new (); +      ecommunity_add_val(attr->extra->ecommunity, &routermac_ecom); +    } +}  static uint8_t convertchartohexa (uint8_t *hexa, int *error)  {  | 
