summaryrefslogtreecommitdiff
path: root/zebra/zebra_vty.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_vty.c')
-rw-r--r--zebra/zebra_vty.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 1b8a12e319..536fdabcbc 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -2277,6 +2277,55 @@ DEFUN (show_pbr_iptable,
return CMD_SUCCESS;
}
+DEFPY (clear_evpn_dup_addr,
+ clear_evpn_dup_addr_cmd,
+ "clear evpn dup-addr vni <all$vni_all |" CMD_VNI_RANGE"$vni_val [mac M:A:C$mac_val | ip <A.B.C.D|X:X::X:X>]>",
+ CLEAR_STR
+ "EVPN\n"
+ "Duplicate address \n"
+ "VxLAN Network Identifier\n"
+ "VNI number\n"
+ "All VNIs\n"
+ "MAC\n"
+ "MAC address (e.g., 00:e0:ec:20:12:62)\n"
+ "IP\n"
+ "IPv4 address\n"
+ "IPv6 address\n")
+{
+ struct zebra_vrf *zvrf;
+ vni_t vni = 0;
+ struct ipaddr host_ip = {.ipa_type = IPADDR_NONE };
+ struct ethaddr mac_addr;
+
+ zvrf = vrf_info_lookup(VRF_DEFAULT);
+ if (vni_val) {
+ vni = strtoul(vni_val, NULL, 10);
+
+ if (mac_val) {
+ prefix_str2mac(mac_val, &mac_addr);
+ zebra_vxlan_clear_dup_detect_vni_mac(vty, zvrf, vni,
+ &mac_addr);
+ } else if (ip) {
+ if (sockunion_family(ip) == AF_INET) {
+ host_ip.ipa_type = IPADDR_V4;
+ host_ip.ipaddr_v4.s_addr = sockunion2ip(ip);
+ } else {
+ host_ip.ipa_type = IPADDR_V6;
+ memcpy(&host_ip.ipaddr_v6, &ip->sin6.sin6_addr,
+ sizeof(struct in6_addr));
+ }
+ zebra_vxlan_clear_dup_detect_vni_ip(vty, zvrf, vni,
+ &host_ip);
+ } else
+ zebra_vxlan_clear_dup_detect_vni(vty, zvrf, vni);
+
+ } else {
+ zebra_vxlan_clear_dup_detect_vni_all(vty, zvrf);
+ }
+
+ return CMD_SUCCESS;
+}
+
/* Static ip route configuration write function. */
static int zebra_ip_config(struct vty *vty)
{
@@ -2847,6 +2896,7 @@ void zebra_vty_init(void)
install_element(VIEW_NODE, &show_evpn_neigh_vni_vtep_cmd);
install_element(VIEW_NODE, &show_evpn_neigh_vni_dad_cmd);
install_element(VIEW_NODE, &show_evpn_neigh_vni_all_dad_cmd);
+ install_element(ENABLE_NODE, &clear_evpn_dup_addr_cmd);
install_element(VIEW_NODE, &show_pbr_ipset_cmd);
install_element(VIEW_NODE, &show_pbr_iptable_cmd);