return CMD_SUCCESS;
}
+#if defined(HAVE_CUMULUS)
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_vni, show_bgp_evpn_vni_cmd,
+ "show bgp evpn vni [(1-16777215)]", SHOW_STR BGP_STR EVPN_HELP_STR
+ "Show VNI\n"
+ "VNI number\n")
+
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_summary, show_bgp_evpn_summary_cmd,
+ "show bgp evpn summary [json]", SHOW_STR BGP_STR EVPN_HELP_STR
+ "Summary of BGP neighbor status\n"
+ "JavaScript Object Notation\n")
+
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_route, show_bgp_evpn_route_cmd,
+ "show bgp evpn route [type <macip|multicast>]",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "Specify Route type\n"
+ "MAC-IP (Type-2) route\n"
+ "Multicast (Type-3) route\n")
+
+ALIAS_HIDDEN(
+ show_bgp_l2vpn_evpn_route_rd, show_bgp_evpn_route_rd_cmd,
+ "show bgp evpn route rd ASN:nn_or_IP-address:nn [type <macip|multicast>]",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "Route Distinguisher\n"
+ "ASN:XX or A.B.C.D:XX\n"
+ "Specify Route type\n"
+ "MAC-IP (Type-2) route\n"
+ "Multicast (Type-3) route\n")
+
+ALIAS_HIDDEN(
+ show_bgp_l2vpn_evpn_route_rd_macip, show_bgp_evpn_route_rd_macip_cmd,
+ "show bgp evpn route rd ASN:nn_or_IP-address:nn mac WORD [ip WORD]",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "Route Distinguisher\n"
+ "ASN:XX or A.B.C.D:XX\n"
+ "MAC\n"
+ "MAC address (e.g., 00:e0:ec:20:12:62)\n"
+ "IP\n"
+ "IP address (IPv4 or IPv6)\n")
+
+ALIAS_HIDDEN(
+ show_bgp_l2vpn_evpn_route_vni, show_bgp_evpn_route_vni_cmd,
+ "show bgp evpn route vni (1-16777215) [<type <macip|multicast> | vtep A.B.C.D>]",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "VXLAN Network Identifier\n"
+ "VNI number\n"
+ "Specify Route type\n"
+ "MAC-IP (Type-2) route\n"
+ "Multicast (Type-3) route\n"
+ "Remote VTEP\n"
+ "Remote VTEP IP address\n")
+
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_route_vni_macip,
+ show_bgp_evpn_route_vni_macip_cmd,
+ "show bgp evpn route vni (1-16777215) mac WORD [ip WORD]",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "VXLAN Network Identifier\n"
+ "VNI number\n"
+ "MAC\n"
+ "MAC address (e.g., 00:e0:ec:20:12:62)\n"
+ "IP\n"
+ "IP address (IPv4 or IPv6)\n")
+
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_route_vni_multicast,
+ show_bgp_evpn_route_vni_multicast_cmd,
+ "show bgp evpn route vni (1-16777215) multicast A.B.C.D",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "VXLAN Network Identifier\n"
+ "VNI number\n"
+ "Multicast (Type-3) route\n"
+ "Originating Router IP address\n")
+
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_route_vni_all, show_bgp_evpn_route_vni_all_cmd,
+ "show bgp evpn route vni all [vtep A.B.C.D]",
+ SHOW_STR BGP_STR EVPN_HELP_STR
+ "EVPN route information\n"
+ "VXLAN Network Identifier\n"
+ "All VNIs\n"
+ "Remote VTEP\n"
+ "Remote VTEP IP address\n")
+
+ALIAS_HIDDEN(show_bgp_l2vpn_evpn_import_rt, show_bgp_evpn_import_rt_cmd,
+ "show bgp evpn import-rt",
+ SHOW_STR BGP_STR EVPN_HELP_STR "Show import route target\n")
+#endif
+
DEFUN_NOSH (bgp_evpn_vni,
bgp_evpn_vni_cmd,
"vni (1-16777215)",
install_element(VIEW_NODE, &show_bgp_l2vpn_evpn_route_vni_all_cmd);
install_element(VIEW_NODE, &show_bgp_l2vpn_evpn_import_rt_cmd);
+ /* "show bgp evpn" commands. */
+ install_element(VIEW_NODE, &show_bgp_evpn_vni_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_summary_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_rd_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_rd_macip_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_vni_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_vni_multicast_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_vni_macip_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_route_vni_all_cmd);
+ install_element(VIEW_NODE, &show_bgp_evpn_import_rt_cmd);
+
install_element(BGP_EVPN_NODE, &bgp_evpn_vni_cmd);
install_element(BGP_EVPN_NODE, &no_bgp_evpn_vni_cmd);
install_element(BGP_EVPN_VNI_NODE, &exit_vni_cmd);
ctx_keys.append("address-family ipv6 unicast")
elif line == "address-family ipv4":
ctx_keys.append("address-family ipv4 unicast")
+ elif line == "address-family evpn":
+ ctx_keys.append("address-family l2vpn evpn")
else:
ctx_keys.append(line)
lines_to_del_to_del.append((ctx_keys, None))
lines_to_add_to_del.append(((tmpline,), None))
+ if (len(ctx_keys) == 3 and
+ ctx_keys[0].startswith('router bgp') and
+ ctx_keys[1] == 'address-family l2vpn evpn' and
+ ctx_keys[2].startswith('vni')):
+
+ re_route_target = re.search('^route-target import (.*)$', line) if line is not None else False
+
+ if re_route_target:
+ rt = re_route_target.group(1).strip()
+ route_target_import_line = line
+ route_target_export_line = "route-target export %s" % rt
+ route_target_both_line = "route-target both %s" % rt
+
+ found_route_target_export_line = line_exist(lines_to_del, ctx_keys, route_target_export_line)
+ found_route_target_both_line = line_exist(lines_to_add, ctx_keys, route_target_both_line)
+
+ '''
+ If the running configs has
+ route-target import 1:1
+ route-target export 1:1
+
+ and the config we are reloading against has
+ route-target both 1:1
+
+ then we can ignore deleting the import/export and ignore adding the 'both'
+ '''
+ if found_route_target_export_line and found_route_target_both_line:
+ lines_to_del_to_del.append((ctx_keys, route_target_import_line))
+ lines_to_del_to_del.append((ctx_keys, route_target_export_line))
+ lines_to_add_to_del.append((ctx_keys, route_target_both_line))
+
if not deleted:
found_add_line = line_exist(lines_to_add, ctx_keys, line)
elif "router bgp" in running_ctx_keys[0] and len(running_ctx_keys) > 1 and delete_bgpd:
continue
+ # Delete an entire vni sub-context under "address-family l2vpn evpn"
+ elif ("router bgp" in running_ctx_keys[0] and
+ len(running_ctx_keys) > 2 and
+ running_ctx_keys[1].startswith('address-family l2vpn evpn') and
+ running_ctx_keys[2].startswith('vni ')):
+ lines_to_del.append((running_ctx_keys, None))
+
elif ("router bgp" in running_ctx_keys[0] and
len(running_ctx_keys) > 1 and
running_ctx_keys[1].startswith('address-family')):