From f65d330cbcd24e782c65d8f7ef9338bb10f8739a Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Thu, 25 Jul 2019 15:35:46 +0300 Subject: [PATCH] lib: fix missing M:A:C to X:X:X:X:X:X changes Signed-off-by: Igor Ryzhov --- doc/developer/cli.rst | 42 +++++++++++++++++++++--------------------- zebra/zebra_vty.c | 8 +++----- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/doc/developer/cli.rst b/doc/developer/cli.rst index c0716a5c9319..cf35b03f0c64 100644 --- a/doc/developer/cli.rst +++ b/doc/developer/cli.rst @@ -160,27 +160,27 @@ parser, but this is merely a dumb copy job. Here is a brief summary of the various token types along with examples. -+-----------------+-----------------+-------------------------------------------------------------+ -| Token type | Syntax | Description | -+=================+=================+=============================================================+ -| ``WORD`` | ``show ip bgp`` | Matches itself. In the given example every token is a WORD. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``IPV4`` | ``A.B.C.D`` | Matches an IPv4 address. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``IPV6`` | ``X:X::X:X`` | Matches an IPv6 address. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``IPV4_PREFIX`` | ``A.B.C.D/M`` | Matches an IPv4 prefix in CIDR notation. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``IPV6_PREFIX`` | ``X:X::X:X/M`` | Matches an IPv6 prefix in CIDR notation. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``MAC`` | ``M:A:C`` | Matches a 48-bit mac address. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``MAC_PREFIX`` | ``M:A:C/M`` | Matches a 48-bit mac address with a mask. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``VARIABLE`` | ``FOOBAR`` | Matches anything. | -+-----------------+-----------------+-------------------------------------------------------------+ -| ``RANGE`` | ``(X-Y)`` | Matches numbers in the range X..Y inclusive. | -+-----------------+-----------------+-------------------------------------------------------------+ ++-----------------+-------------------+-------------------------------------------------------------+ +| Token type | Syntax | Description | ++=================+===================+=============================================================+ +| ``WORD`` | ``show ip bgp`` | Matches itself. In the given example every token is a WORD. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``IPV4`` | ``A.B.C.D`` | Matches an IPv4 address. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``IPV6`` | ``X:X::X:X`` | Matches an IPv6 address. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``IPV4_PREFIX`` | ``A.B.C.D/M`` | Matches an IPv4 prefix in CIDR notation. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``IPV6_PREFIX`` | ``X:X::X:X/M`` | Matches an IPv6 prefix in CIDR notation. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``MAC`` | ``X:X:X:X:X:X`` | Matches a 48-bit mac address. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``MAC_PREFIX`` | ``X:X:X:X:X:X/M`` | Matches a 48-bit mac address with a mask. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``VARIABLE`` | ``FOOBAR`` | Matches anything. | ++-----------------+-------------------+-------------------------------------------------------------+ +| ``RANGE`` | ``(X-Y)`` | Matches numbers in the range X..Y inclusive. | ++-----------------+-------------------+-------------------------------------------------------------+ When presented with user input, the parser will search over all defined commands in the current context to find a match. It is aware of the various diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c index 74baabbf240c..4d18045fb3cb 100644 --- a/zebra/zebra_vty.c +++ b/zebra/zebra_vty.c @@ -2383,7 +2383,7 @@ DEFUN (show_pbr_iptable, DEFPY (clear_evpn_dup_addr, clear_evpn_dup_addr_cmd, - "clear evpn dup-addr vni ]>", + "clear evpn dup-addr vni ]>", CLEAR_STR "EVPN\n" "Duplicate address \n" @@ -2398,16 +2398,14 @@ DEFPY (clear_evpn_dup_addr, { struct zebra_vrf *zvrf; struct ipaddr host_ip = {.ipa_type = IPADDR_NONE }; - struct ethaddr mac_addr; int ret = CMD_SUCCESS; zvrf = zebra_vrf_get_evpn(); if (vni_str) { - if (mac_val) { - prefix_str2mac(mac_val, &mac_addr); + if (mac) { ret = zebra_vxlan_clear_dup_detect_vni_mac(vty, zvrf, vni, - &mac_addr); + &mac->eth_addr); } else if (ip) { if (sockunion_family(ip) == AF_INET) { host_ip.ipa_type = IPADDR_V4;