summaryrefslogtreecommitdiff
path: root/bgpd/bgp_attr_evpn.c
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2016-09-05 13:20:41 +0200
committerPhilippe Guibert <philippe.guibert@6wind.com>2017-02-14 13:58:58 +0100
commitdfa42ea338db2d3bec31d69544fb941bb1822594 (patch)
treedc0c11827e500b11f45144b3b12b4e649189d619 /bgpd/bgp_attr_evpn.c
parenta2dac1ef6a4f0dc3cc4e2bac83700119ff8b7459 (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.c20
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)
{