diff options
| author | vivek <vivek@cumulusnetworks.com> | 2016-08-02 11:51:35 -0700 |
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2017-02-14 13:58:58 +0100 |
| commit | fd6c6cb49b37168dc5fd936b046299009da2fc7e (patch) | |
| tree | 8f971a2c078644e9b1acaa1deec04ec7b3ffef1c /lib/prefix.c | |
| parent | b2055847534536fcb6503a433e71b68df14b1d22 (diff) | |
lib: Functions related to AF_ETHERNET
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Diffstat (limited to 'lib/prefix.c')
| -rw-r--r-- | lib/prefix.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/prefix.c b/lib/prefix.c index f4012a5957..06ed00baa9 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -209,7 +209,7 @@ afi2family (afi_t afi) return AF_INET; else if (afi == AFI_IP6) return AF_INET6; - else if (afi == AFI_ETHER) + else if (afi == AFI_L2VPN) return AF_ETHERNET; return 0; } @@ -222,7 +222,7 @@ family2afi (int family) else if (family == AF_INET6) return AFI_IP6; else if (family == AF_ETHERNET) - return AFI_ETHER; + return AFI_L2VPN; return 0; } @@ -304,6 +304,10 @@ prefix_copy (struct prefix *dest, const struct prefix *src) dest->u.prefix4 = src->u.prefix4; else if (src->family == AF_INET6) dest->u.prefix6 = src->u.prefix6; + else if (src->family == AF_ETHERNET) + { + memcpy (&dest->u.prefix_evpn, &src->u.prefix_evpn, sizeof (struct evpn_addr)); + } else if (src->family == AF_UNSPEC) { dest->u.lp.id = src->u.lp.id; @@ -346,10 +350,9 @@ prefix_same (const struct prefix *p1, const struct prefix *p2) if (p1->family == AF_INET6 ) if (IPV6_ADDR_SAME (&p1->u.prefix6.s6_addr, &p2->u.prefix6.s6_addr)) return 1; - if (p1->family == AF_ETHERNET) { - if (!memcmp(p1->u.prefix_eth.octet, p2->u.prefix_eth.octet, ETHER_ADDR_LEN)) - return 1; - } + if (p1->family == AF_ETHERNET ) + if (!memcmp (&p1->u.prefix_evpn, &p2->u.prefix_evpn, sizeof (struct evpn_addr))) + return 1; } return 0; } @@ -412,6 +415,9 @@ prefix_common_bits (const struct prefix *p1, const struct prefix *p2) length = IPV4_MAX_BYTELEN; if (p1->family == AF_INET6) length = IPV6_MAX_BYTELEN; + if (p1->family == AF_ETHERNET) + length = 8 * sizeof (struct evpn_addr); + if (p1->family != p2->family || !length) return -1; |
