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.c81
1 files changed, 71 insertions, 10 deletions
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index c4b587e6c4..f18d8fbb6d 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -419,6 +419,33 @@ static void show_nexthop_detail_helper(struct vty *vty,
}
}
+static void zebra_show_ip_route_opaque(struct vty *vty, struct route_entry *re,
+ struct json_object *json)
+{
+ if (!re->opaque)
+ return;
+
+ switch (re->type) {
+ case ZEBRA_ROUTE_SHARP:
+ if (json)
+ json_object_string_add(json, "opaque",
+ (char *)re->opaque->data);
+ else
+ vty_out(vty, " Opaque Data: %s",
+ (char *)re->opaque->data);
+ break;
+ case ZEBRA_ROUTE_BGP:
+ if (json)
+ json_object_string_add(json, "asPath",
+ (char *)re->opaque->data);
+ else
+ vty_out(vty, " AS-Path: %s",
+ (char *)re->opaque->data);
+ default:
+ break;
+ }
+}
+
/* New RIB. Detailed information for IPv4 route. */
static void vty_show_ip_route_detail(struct vty *vty, struct route_node *rn,
int mcast, bool use_fib, bool show_ng)
@@ -495,6 +522,8 @@ static void vty_show_ip_route_detail(struct vty *vty, struct route_node *rn,
if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_HAS_BACKUP))
show_nh_backup_helper(vty, re, nexthop);
}
+ zebra_show_ip_route_opaque(vty, re, NULL);
+
vty_out(vty, "\n");
}
}
@@ -927,6 +956,7 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn,
json_object_object_add(json_route, "backupNexthops",
json_nexthops);
}
+ zebra_show_ip_route_opaque(NULL, re, json_route);
json_object_array_add(json, json_route);
return;
@@ -1274,11 +1304,11 @@ DEFPY (show_ip_nht,
VRF_GET_ID(vrf_id, vrf_name, false);
memset(&prefix, 0, sizeof(prefix));
- if (addr)
+ if (addr) {
p = sockunion2hostprefix(addr, &prefix);
-
- if (!p)
- return CMD_WARNING;
+ if (!p)
+ return CMD_WARNING;
+ }
zebra_print_rnh_table(vrf_id, afi, vty, rtype, p);
return CMD_SUCCESS;
@@ -1301,7 +1331,7 @@ DEFUN (ip_nht_default_route,
zvrf->zebra_rnh_ip_default_route = 1;
- zebra_evaluate_rnh(zvrf, AFI_IP, 1, RNH_NEXTHOP_TYPE, NULL);
+ zebra_evaluate_rnh(zvrf, AFI_IP, 0, RNH_NEXTHOP_TYPE, NULL);
return CMD_SUCCESS;
}
@@ -1623,7 +1653,7 @@ DEFUN (no_ip_nht_default_route,
return CMD_SUCCESS;
zvrf->zebra_rnh_ip_default_route = 0;
- zebra_evaluate_rnh(zvrf, AFI_IP, 1, RNH_NEXTHOP_TYPE, NULL);
+ zebra_evaluate_rnh(zvrf, AFI_IP, 0, RNH_NEXTHOP_TYPE, NULL);
return CMD_SUCCESS;
}
@@ -1643,7 +1673,7 @@ DEFUN (ipv6_nht_default_route,
return CMD_SUCCESS;
zvrf->zebra_rnh_ipv6_default_route = 1;
- zebra_evaluate_rnh(zvrf, AFI_IP6, 1, RNH_NEXTHOP_TYPE, NULL);
+ zebra_evaluate_rnh(zvrf, AFI_IP6, 0, RNH_NEXTHOP_TYPE, NULL);
return CMD_SUCCESS;
}
@@ -1665,7 +1695,7 @@ DEFUN (no_ipv6_nht_default_route,
return CMD_SUCCESS;
zvrf->zebra_rnh_ipv6_default_route = 0;
- zebra_evaluate_rnh(zvrf, AFI_IP6, 1, RNH_NEXTHOP_TYPE, NULL);
+ zebra_evaluate_rnh(zvrf, AFI_IP6, 0, RNH_NEXTHOP_TYPE, NULL);
return CMD_SUCCESS;
}
@@ -2502,6 +2532,20 @@ DEFPY (evpn_mh_startup_delay,
no ? true : false);
}
+DEFPY(evpn_mh_redirect_off, evpn_mh_redirect_off_cmd,
+ "[no$no] evpn mh redirect-off",
+ NO_STR
+ "EVPN\n"
+ "Multihoming\n"
+ "ES bond redirect for fast-failover off\n")
+{
+ bool redirect_off;
+
+ redirect_off = no ? false : true;
+
+ return zebra_evpn_mh_redirect_off(vty, redirect_off);
+}
+
DEFUN (default_vrf_vni_mapping,
default_vrf_vni_mapping_cmd,
"vni " CMD_VNI_RANGE "[prefix-routes-only]",
@@ -2681,6 +2725,21 @@ DEFUN (show_evpn_global,
return CMD_SUCCESS;
}
+DEFPY(show_evpn_l2_nh,
+ show_evpn_l2_nh_cmd,
+ "show evpn l2-nh [json$json]",
+ SHOW_STR
+ "EVPN\n"
+ "Layer2 nexthops\n"
+ JSON_STR)
+{
+ bool uj = !!json;
+
+ zebra_evpn_l2_nh_show(vty, uj);
+
+ return CMD_SUCCESS;
+}
+
DEFPY(show_evpn_es,
show_evpn_es_cmd,
"show evpn es [NAME$esi_str|detail$detail] [json$json]",
@@ -2688,8 +2747,8 @@ DEFPY(show_evpn_es,
"EVPN\n"
"Ethernet Segment\n"
"ES ID\n"
- JSON_STR
- "Detailed information\n")
+ "Detailed information\n"
+ JSON_STR)
{
esi_t esi;
bool uj = !!json;
@@ -4028,6 +4087,7 @@ void zebra_vty_init(void)
install_element(VIEW_NODE, &show_evpn_vni_cmd);
install_element(VIEW_NODE, &show_evpn_vni_detail_cmd);
install_element(VIEW_NODE, &show_evpn_vni_vni_cmd);
+ install_element(VIEW_NODE, &show_evpn_l2_nh_cmd);
install_element(VIEW_NODE, &show_evpn_es_cmd);
install_element(VIEW_NODE, &show_evpn_es_evi_cmd);
install_element(VIEW_NODE, &show_evpn_access_vlan_cmd);
@@ -4060,6 +4120,7 @@ void zebra_vty_init(void)
install_element(CONFIG_NODE, &evpn_mh_mac_holdtime_cmd);
install_element(CONFIG_NODE, &evpn_mh_neigh_holdtime_cmd);
install_element(CONFIG_NODE, &evpn_mh_startup_delay_cmd);
+ install_element(CONFIG_NODE, &evpn_mh_redirect_off_cmd);
install_element(CONFIG_NODE, &default_vrf_vni_mapping_cmd);
install_element(CONFIG_NODE, &no_default_vrf_vni_mapping_cmd);
install_element(VRF_NODE, &vrf_vni_mapping_cmd);