zebra: split ip route DEFUNs for blackhole, reject, etc

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
This commit is contained in:
Daniel Walton 2017-09-27 15:35:28 +00:00
parent d7d75634e9
commit 1e058f38c2

View File

@ -339,11 +339,11 @@ DEFUN (show_ip_rpf_addr,
} }
/* Static route configuration. */ /* Static route configuration. */
DEFPY(ip_route, DEFPY(ip_route_blackhole,
ip_route_cmd, ip_route_blackhole_cmd,
"[no] ip route\ "[no] ip route\
<A.B.C.D/M$prefix|A.B.C.D$prefix A.B.C.D$mask> \ <A.B.C.D/M$prefix|A.B.C.D$prefix A.B.C.D$mask> \
<A.B.C.D$gate|INTERFACE$ifname|Null0$flag|reject$flag|blackhole$flag> \ <Null0|reject|blackhole>$flag \
[{ \ [{ \
tag (1-4294967295) \ tag (1-4294967295) \
|(1-255)$distance \ |(1-255)$distance \
@ -355,8 +355,6 @@ DEFPY(ip_route,
"IP destination prefix (e.g. 10.0.0.0/8)\n" "IP destination prefix (e.g. 10.0.0.0/8)\n"
"IP destination prefix\n" "IP destination prefix\n"
"IP destination prefix mask\n" "IP destination prefix mask\n"
"IP gateway address\n"
"IP gateway interface name\n"
"Null interface\n" "Null interface\n"
"Emit an ICMP unreachable when matched\n" "Emit an ICMP unreachable when matched\n"
"Silently discard pkts when matched\n" "Silently discard pkts when matched\n"
@ -367,7 +365,66 @@ DEFPY(ip_route,
MPLS_LABEL_HELPSTR) MPLS_LABEL_HELPSTR)
{ {
return zebra_static_route(vty, AFI_IP, SAFI_UNICAST, no, prefix, return zebra_static_route(vty, AFI_IP, SAFI_UNICAST, no, prefix,
mask_str, NULL, gate_str, ifname, flag, mask_str, NULL, NULL, NULL, flag,
tag_str, distance_str, vrf, label);
}
DEFPY(ip_route_address_interface,
ip_route_address_interface_cmd,
"[no] ip route\
<A.B.C.D/M$prefix|A.B.C.D$prefix A.B.C.D$mask> \
A.B.C.D$gate \
INTERFACE$ifname \
[{ \
tag (1-4294967295) \
|(1-255)$distance \
|vrf NAME \
|label WORD \
}]",
NO_STR IP_STR
"Establish static routes\n"
"IP destination prefix (e.g. 10.0.0.0/8)\n"
"IP destination prefix\n"
"IP destination prefix mask\n"
"IP gateway address\n"
"IP gateway interface name\n"
"Set tag for this route\n"
"Tag value\n"
"Distance value for this route\n"
VRF_CMD_HELP_STR
MPLS_LABEL_HELPSTR)
{
return zebra_static_route(vty, AFI_IP, SAFI_UNICAST, no, prefix,
mask_str, NULL, gate_str, ifname, NULL,
tag_str, distance_str, vrf, label);
}
DEFPY(ip_route,
ip_route_cmd,
"[no] ip route\
<A.B.C.D/M$prefix|A.B.C.D$prefix A.B.C.D$mask> \
<A.B.C.D$gate|INTERFACE$ifname> \
[{ \
tag (1-4294967295) \
|(1-255)$distance \
|vrf NAME \
|label WORD \
}]",
NO_STR IP_STR
"Establish static routes\n"
"IP destination prefix (e.g. 10.0.0.0/8)\n"
"IP destination prefix\n"
"IP destination prefix mask\n"
"IP gateway address\n"
"IP gateway interface name\n"
"Set tag for this route\n"
"Tag value\n"
"Distance value for this route\n"
VRF_CMD_HELP_STR
MPLS_LABEL_HELPSTR)
{
return zebra_static_route(vty, AFI_IP, SAFI_UNICAST, no, prefix,
mask_str, NULL, gate_str, ifname, NULL,
tag_str, distance_str, vrf, label); tag_str, distance_str, vrf, label);
} }
@ -1762,15 +1819,15 @@ static int static_config(struct vty *vty, afi_t afi, safi_t safi,
return write; return write;
} }
DEFPY(ipv6_route, DEFPY(ipv6_route_blackhole,
ipv6_route_cmd, ipv6_route_blackhole_cmd,
"[no] ipv6 route X:X::X:X/M$prefix [from X:X::X:X/M] \ "[no] ipv6 route X:X::X:X/M$prefix [from X:X::X:X/M] \
<X:X::X:X$gate|INTERFACE$ifname|Null0$flag|reject$flag|blackhole$flag> \ <Null0|reject|blackhole>$flag \
[{ \ [{ \
tag (1-4294967295) \ tag (1-4294967295) \
|(1-255)$distance \ |(1-255)$distance \
|vrf NAME \ |vrf NAME \
|label WORD \ |label WORD \
}]", }]",
NO_STR NO_STR
IPV6_STR IPV6_STR
@ -1778,8 +1835,6 @@ DEFPY(ipv6_route,
"IPv6 destination prefix (e.g. 3ffe:506::/32)\n" "IPv6 destination prefix (e.g. 3ffe:506::/32)\n"
"IPv6 source-dest route\n" "IPv6 source-dest route\n"
"IPv6 source prefix\n" "IPv6 source prefix\n"
"IPv6 gateway address\n"
"IPv6 gateway interface name\n"
"Null interface\n" "Null interface\n"
"Emit an ICMP unreachable when matched\n" "Emit an ICMP unreachable when matched\n"
"Silently discard pkts when matched\n" "Silently discard pkts when matched\n"
@ -1790,7 +1845,66 @@ DEFPY(ipv6_route,
MPLS_LABEL_HELPSTR) MPLS_LABEL_HELPSTR)
{ {
return zebra_static_route(vty, AFI_IP6, SAFI_UNICAST, no, prefix_str, return zebra_static_route(vty, AFI_IP6, SAFI_UNICAST, no, prefix_str,
NULL, from_str, gate_str, ifname, flag, NULL, from_str, NULL, NULL, flag,
tag_str, distance_str, vrf, label);
}
DEFPY(ipv6_route_address_interface,
ipv6_route_address_interface_cmd,
"[no] ipv6 route X:X::X:X/M$prefix [from X:X::X:X/M] \
X:X::X:X$gate \
INTERFACE$ifname \
[{ \
tag (1-4294967295) \
|(1-255)$distance \
|vrf NAME \
|label WORD \
}]",
NO_STR
IPV6_STR
"Establish static routes\n"
"IPv6 destination prefix (e.g. 3ffe:506::/32)\n"
"IPv6 source-dest route\n"
"IPv6 source prefix\n"
"IPv6 gateway address\n"
"IPv6 gateway interface name\n"
"Set tag for this route\n"
"Tag value\n"
"Distance value for this prefix\n"
VRF_CMD_HELP_STR
MPLS_LABEL_HELPSTR)
{
return zebra_static_route(vty, AFI_IP6, SAFI_UNICAST, no, prefix_str,
NULL, from_str, gate_str, ifname, NULL,
tag_str, distance_str, vrf, label);
}
DEFPY(ipv6_route,
ipv6_route_cmd,
"[no] ipv6 route X:X::X:X/M$prefix [from X:X::X:X/M] \
<X:X::X:X$gate|INTERFACE$ifname> \
[{ \
tag (1-4294967295) \
|(1-255)$distance \
|vrf NAME \
|label WORD \
}]",
NO_STR
IPV6_STR
"Establish static routes\n"
"IPv6 destination prefix (e.g. 3ffe:506::/32)\n"
"IPv6 source-dest route\n"
"IPv6 source prefix\n"
"IPv6 gateway address\n"
"IPv6 gateway interface name\n"
"Set tag for this route\n"
"Tag value\n"
"Distance value for this prefix\n"
VRF_CMD_HELP_STR
MPLS_LABEL_HELPSTR)
{
return zebra_static_route(vty, AFI_IP6, SAFI_UNICAST, no, prefix_str,
NULL, from_str, gate_str, ifname, NULL,
tag_str, distance_str, vrf, label); tag_str, distance_str, vrf, label);
} }
@ -2677,6 +2791,8 @@ void zebra_vty_init(void)
install_element(CONFIG_NODE, &ip_mroute_dist_cmd); install_element(CONFIG_NODE, &ip_mroute_dist_cmd);
install_element(CONFIG_NODE, &ip_multicast_mode_cmd); install_element(CONFIG_NODE, &ip_multicast_mode_cmd);
install_element(CONFIG_NODE, &no_ip_multicast_mode_cmd); install_element(CONFIG_NODE, &no_ip_multicast_mode_cmd);
install_element(CONFIG_NODE, &ip_route_blackhole_cmd);
install_element(CONFIG_NODE, &ip_route_address_interface_cmd);
install_element(CONFIG_NODE, &ip_route_cmd); install_element(CONFIG_NODE, &ip_route_cmd);
install_element(CONFIG_NODE, &ip_zebra_import_table_distance_cmd); install_element(CONFIG_NODE, &ip_zebra_import_table_distance_cmd);
install_element(CONFIG_NODE, &no_ip_zebra_import_table_cmd); install_element(CONFIG_NODE, &no_ip_zebra_import_table_cmd);
@ -2700,6 +2816,8 @@ void zebra_vty_init(void)
install_element(VIEW_NODE, &show_ip_route_vrf_all_summary_cmd); install_element(VIEW_NODE, &show_ip_route_vrf_all_summary_cmd);
install_element(VIEW_NODE, &show_ip_route_vrf_all_summary_prefix_cmd); install_element(VIEW_NODE, &show_ip_route_vrf_all_summary_prefix_cmd);
install_element(CONFIG_NODE, &ipv6_route_blackhole_cmd);
install_element(CONFIG_NODE, &ipv6_route_address_interface_cmd);
install_element(CONFIG_NODE, &ipv6_route_cmd); install_element(CONFIG_NODE, &ipv6_route_cmd);
install_element(CONFIG_NODE, &ip_nht_default_route_cmd); install_element(CONFIG_NODE, &ip_nht_default_route_cmd);
install_element(CONFIG_NODE, &no_ip_nht_default_route_cmd); install_element(CONFIG_NODE, &no_ip_nht_default_route_cmd);