From 31689a53f1314f803f50fe07c25a0e51c46a5279 Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Thu, 9 Feb 2017 08:44:13 +0100 Subject: [PATCH] bgpd: change str2mac call api With the changed API, some adaptations are done in rfapi code, and in bgpd evpn code. For evpn code, the internal storage of routermac addr is kept as struct ethaddr structure. Also the evpn add_routermac api has as incoming parameter a struct ethaddr param. Signed-off-by: Philippe Guibert --- bgpd/bgp_attr_evpn.c | 6 +++--- bgpd/bgp_attr_evpn.h | 3 +-- bgpd/bgp_route.h | 2 +- bgpd/rfapi/rfapi_vty.c | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bgpd/bgp_attr_evpn.c b/bgpd/bgp_attr_evpn.c index f60784e708..93b3c9390b 100644 --- a/bgpd/bgp_attr_evpn.c +++ b/bgpd/bgp_attr_evpn.c @@ -34,7 +34,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "bgpd/bgp_ecommunity.h" #include "bgpd/bgp_evpn.h" -void bgp_add_routermac_ecom(struct attr *attr, char *routermac) +void bgp_add_routermac_ecom(struct attr *attr, struct ethaddr *routermac) { struct ecommunity_val routermac_ecom; @@ -42,7 +42,7 @@ void bgp_add_routermac_ecom(struct attr *attr, char *routermac) 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, ETHER_ADDR_LEN); + memcpy(&routermac_ecom.val[2], routermac->octet, ETHER_ADDR_LEN); if (!attr->extra->ecommunity) attr->extra->ecommunity = ecommunity_new(); ecommunity_add_val(attr->extra->ecommunity, &routermac_ecom); @@ -171,7 +171,7 @@ char *ecom_mac2str(char *ecom_mac) en = ecom_mac; en += 2; - return prefix_mac2str(en, NULL, 0); + return prefix_mac2str((struct ethaddr *)en, NULL, 0); } /* dst prefix must be AF_INET or AF_INET6 prefix, to forge EVPN prefix */ diff --git a/bgpd/bgp_attr_evpn.h b/bgpd/bgp_attr_evpn.h index 7fa7256ca0..e6da7e7080 100644 --- a/bgpd/bgp_attr_evpn.h +++ b/bgpd/bgp_attr_evpn.h @@ -50,11 +50,10 @@ struct bgp_route_evpn { }; extern int str2esi(const char *str, struct eth_segment_id *id); -extern int str2mac(const char *str, char *mac); extern char *esi2str(struct eth_segment_id *id); extern char *ecom_mac2str(char *ecom_mac); -extern void bgp_add_routermac_ecom(struct attr *attr, char *routermac); +extern void bgp_add_routermac_ecom(struct attr *attr, struct ethaddr *routermac); extern int bgp_build_evpn_prefix(int type, uint32_t eth_tag, struct prefix *dst); #endif /* _QUAGGA_BGP_ATTR_EVPN_H */ diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h index 3cd4dd59a0..e75978d003 100644 --- a/bgpd/bgp_route.h +++ b/bgpd/bgp_route.h @@ -206,7 +206,7 @@ struct bgp_static /* EVPN */ struct eth_segment_id *eth_s_id; - char *router_mac; + struct ethaddr *router_mac; uint16_t encap_tunneltype; struct prefix gatewayIp; }; diff --git a/bgpd/rfapi/rfapi_vty.c b/bgpd/rfapi/rfapi_vty.c index 22489e87e2..55ad036f28 100644 --- a/bgpd/rfapi/rfapi_vty.c +++ b/bgpd/rfapi/rfapi_vty.c @@ -314,7 +314,7 @@ rfapiL2o2Qprefix (struct rfapi_l2address_option *l2o, struct prefix *pfx) char * rfapiEthAddr2Str (const struct ethaddr *ea, char *buf, int bufsize) { - return prefix_mac2str (ea->octet, buf, bufsize); + return prefix_mac2str (ea, buf, bufsize); } int