diff options
| author | mitesh <mitesh@cumulusnetworks.com> | 2018-04-13 15:01:12 -0700 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-05-30 07:48:20 -0400 |
| commit | 50f74cf1310572457f742f630c43aaba9b8f2c17 (patch) | |
| tree | 495844a44ec1e532eb06c25201e8412d2fd46abd /lib/prefix.h | |
| parent | 68542a6da651a4a3f5d280482313f14508618c43 (diff) | |
*: support for evpn type-4 route
Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
Diffstat (limited to 'lib/prefix.h')
| -rw-r--r-- | lib/prefix.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/prefix.h b/lib/prefix.h index ab3c05ae74..fadaab1859 100644 --- a/lib/prefix.h +++ b/lib/prefix.h @@ -39,6 +39,9 @@ #define ETH_ALEN 6 #endif +#define ESI_BYTES 10 +#define ESI_STR_LEN (3* ESI_BYTES) + #define ETHER_ADDR_STRLEN (3*ETH_ALEN) /* * there isn't a portable ethernet address type. We define our @@ -213,6 +216,8 @@ static inline int is_evpn_prefix_ipaddr_none(const struct prefix_evpn *evp) return IS_IPADDR_NONE(&(evp)->prefix.macip_addr.ip); if (evp->prefix.route_type == 3) return IS_IPADDR_NONE(&(evp)->prefix.imet_addr.ip); + if (evp->prefix.route_type == 4) + return IS_IPADDR_NONE(&(evp)->prefix.es_addr.ip); if (evp->prefix.route_type == 5) return IS_IPADDR_NONE(&(evp)->prefix.prefix_addr.ip); return 0; @@ -224,6 +229,8 @@ static inline int is_evpn_prefix_ipaddr_v4(const struct prefix_evpn *evp) return IS_IPADDR_V4(&(evp)->prefix.macip_addr.ip); if (evp->prefix.route_type == 3) return IS_IPADDR_V4(&(evp)->prefix.imet_addr.ip); + if (evp->prefix.route_type == 4) + return IS_IPADDR_V4(&(evp)->prefix.es_addr.ip); if (evp->prefix.route_type == 5) return IS_IPADDR_V4(&(evp)->prefix.prefix_addr.ip); return 0; @@ -235,6 +242,8 @@ static inline int is_evpn_prefix_ipaddr_v6(const struct prefix_evpn *evp) return IS_IPADDR_V6(&(evp)->prefix.macip_addr.ip); if (evp->prefix.route_type == 3) return IS_IPADDR_V6(&(evp)->prefix.imet_addr.ip); + if (evp->prefix.route_type == 4) + return IS_IPADDR_V6(&(evp)->prefix.es_addr.ip); if (evp->prefix.route_type == 5) return IS_IPADDR_V6(&(evp)->prefix.prefix_addr.ip); return 0; @@ -432,6 +441,11 @@ extern char *prefix_mac2str(const struct ethaddr *mac, char *buf, int size); extern unsigned prefix_hash_key(void *pp); +extern int str_to_esi(const char *str, esi_t *esi); +extern char *esi_to_str(const esi_t *esi, char *buf, int size); +extern void prefix_hexdump(const struct prefix *p); +extern void prefix_evpn_hexdump(const struct prefix_evpn *p); + static inline int ipv6_martian(struct in6_addr *addr) { struct in6_addr localhost_addr; @@ -482,5 +496,4 @@ static inline int is_host_route(struct prefix *p) return (p->prefixlen == IPV6_MAX_BITLEN); return 0; } - #endif /* _ZEBRA_PREFIX_H */ |
