if (tag_str)
tag = strtoul(tag_str, NULL, 10);
- /* When gateway is valid IPv6 addrees, then gate is treated as
- nexthop address other case gate is treated as interface name. */
- ret = inet_pton(AF_INET6, gate_str, &gate_addr);
-
/* VRF id */
zvrf = zebra_vrf_lookup_by_name(vrf_id_str);
}
}
+ if (gate_str == NULL) {
+ if (add_cmd)
+ static_add_route(AFI_IP6, SAFI_UNICAST, type, &p, src_p,
+ NULL, ifindex, ifname, flag, tag,
+ distance, zvrf, &snh_label);
+ else
+ static_delete_route(AFI_IP6, SAFI_UNICAST, type, &p,
+ src_p, NULL, ifindex, tag, distance,
+ zvrf, &snh_label);
+
+ return CMD_SUCCESS;
+ }
+
+ /* When gateway is valid IPv6 addrees, then gate is treated as
+ nexthop address other case gate is treated as interface name. */
+ ret = inet_pton(AF_INET6, gate_str, &gate_addr);
+
if (ifname) {
/* When ifname is specified. It must be come with gateway
address. */
DEFUN (ipv6_route_flags,
ipv6_route_flags_cmd,
- "ipv6 route X:X::X:X/M [from X:X::X:X/M] <X:X::X:X|INTERFACE> <reject|blackhole> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
+ "ipv6 route X:X::X:X/M [from X:X::X:X/M] <reject|blackhole> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
IP_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"
"Emit an ICMP unreachable when matched\n"
"Silently discard pkts when matched\n"
"Set tag for this route\n"
VRF_CMD_HELP_STR)
{
int idx_ipv6_prefixlen = 2;
- int idx_ipv6_ifname;
int idx_reject_blackhole;
int idx_curr;
char *src, *tag, *distance, *vrf;
if (strmatch(argv[3]->text, "from")) {
src = argv[4]->arg;
- idx_ipv6_ifname = 5;
- idx_reject_blackhole = 6;
- idx_curr = 7;
+ idx_reject_blackhole = 5;
+ idx_curr = 6;
} else {
src = NULL;
- idx_ipv6_ifname = 3;
- idx_reject_blackhole = 4;
- idx_curr = 5;
+ idx_reject_blackhole = 3;
+ idx_curr = 4;
}
tag = distance = vrf = NULL;
&vrf, NULL);
return static_ipv6_func(vty, 1, argv[idx_ipv6_prefixlen]->arg, src,
- argv[idx_ipv6_ifname]->arg, NULL,
- argv[idx_reject_blackhole]->arg, tag, distance,
- vrf, NULL);
+ NULL, NULL, argv[idx_reject_blackhole]->arg,
+ tag, distance, vrf, NULL);
}
DEFUN (ipv6_route_ifname,
NULL, tag, distance, vrf, NULL);
}
-DEFUN (ipv6_route_ifname_flags,
- ipv6_route_ifname_flags_cmd,
- "ipv6 route X:X::X:X/M [from X:X::X:X/M] X:X::X:X INTERFACE <reject|blackhole> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
- IP_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"
- "Emit an ICMP unreachable when matched\n"
- "Silently discard pkts when matched\n"
- "Set tag for this route\n"
- "Tag value\n"
- "Distance value for this prefix\n"
- VRF_CMD_HELP_STR)
-{
- int idx_ipv6_prefixlen = 2;
- int idx_ipv6;
- int idx_interface;
- int idx_reject_blackhole;
- int idx_curr;
- char *src, *tag, *distance, *vrf;
-
- if (strmatch(argv[3]->text, "from")) {
- src = argv[4]->arg;
- idx_ipv6 = 5;
- idx_interface = 6;
- idx_reject_blackhole = 7;
- idx_curr = 8;
- } else {
- src = NULL;
- idx_ipv6 = 3;
- idx_interface = 4;
- idx_reject_blackhole = 5;
- idx_curr = 6;
- }
-
- tag = distance = vrf = NULL;
- zebra_vty_ip_route_tdv_helper(argc, argv, idx_curr, &tag, &distance,
- &vrf, NULL);
-
- return static_ipv6_func(vty, 1, argv[idx_ipv6_prefixlen]->arg, src,
- argv[idx_ipv6]->arg, argv[idx_interface]->arg,
- argv[idx_reject_blackhole]->arg, tag, distance,
- vrf, NULL);
-}
-
DEFUN (no_ipv6_route,
no_ipv6_route_cmd,
"no ipv6 route X:X::X:X/M [from X:X::X:X/M] <X:X::X:X|INTERFACE|null0> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
DEFUN (no_ipv6_route_flags,
no_ipv6_route_flags_cmd,
- "no ipv6 route X:X::X:X/M [from X:X::X:X/M] <X:X::X:X|INTERFACE> <reject|blackhole> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
+ "no ipv6 route X:X::X:X/M [from X:X::X:X/M] <reject|blackhole> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
NO_STR
IP_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"
"Emit an ICMP unreachable when matched\n"
"Silently discard pkts when matched\n"
"Set tag for this route\n"
VRF_CMD_HELP_STR)
{
int idx_ipv6_prefixlen = 3;
- int idx_ipv6_ifname;
int idx_reject_blackhole;
int idx_curr;
char *src, *tag, *distance, *vrf;
if (strmatch(argv[4]->text, "from")) {
src = argv[5]->arg;
- idx_ipv6_ifname = 6;
- idx_reject_blackhole = 7;
- idx_curr = 8;
+ idx_reject_blackhole = 6;
+ idx_curr = 7;
} else {
src = NULL;
- idx_ipv6_ifname = 4;
- idx_reject_blackhole = 5;
- idx_curr = 6;
+ idx_reject_blackhole = 4;
+ idx_curr = 5;
}
tag = distance = vrf = NULL;
&vrf, NULL);
return static_ipv6_func(vty, 0, argv[idx_ipv6_prefixlen]->arg, src,
- argv[idx_ipv6_ifname]->arg, NULL,
- argv[idx_reject_blackhole]->arg, tag, distance,
- vrf, NULL);
+ NULL, NULL, argv[idx_reject_blackhole]->arg,
+ tag, distance, vrf, NULL);
}
DEFUN (no_ipv6_route_ifname,
NULL, tag, distance, vrf, NULL);
}
-DEFUN (no_ipv6_route_ifname_flags,
- no_ipv6_route_ifname_flags_cmd,
- "no ipv6 route X:X::X:X/M [from X:X::X:X/M] X:X::X:X INTERFACE <reject|blackhole> [{tag (1-4294967295)|(1-255)|vrf NAME}]",
- NO_STR
- IP_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"
- "Emit an ICMP unreachable when matched\n"
- "Silently discard pkts when matched\n"
- "Set tag for this route\n"
- "Tag value\n"
- "Distance value for this prefix\n"
- VRF_CMD_HELP_STR)
-{
- int idx_ipv6_prefixlen = 3;
- int idx_ipv6;
- int idx_interface;
- int idx_reject_blackhole;
- int idx_curr;
- char *src, *tag, *distance, *vrf;
-
- if (strmatch(argv[4]->text, "from")) {
- src = argv[5]->arg;
- idx_ipv6 = 6;
- idx_interface = 7;
- idx_reject_blackhole = 8;
- idx_curr = 9;
- } else {
- src = NULL;
- idx_ipv6 = 4;
- idx_interface = 5;
- idx_reject_blackhole = 6;
- idx_curr = 7;
- }
-
- tag = distance = vrf = NULL;
- zebra_vty_ip_route_tdv_helper(argc, argv, idx_curr, &tag, &distance,
- &vrf, NULL);
-
- return static_ipv6_func(vty, 0, argv[idx_ipv6_prefixlen]->arg, src,
- argv[idx_ipv6]->arg, argv[idx_interface]->arg,
- argv[idx_reject_blackhole]->arg, tag, distance,
- vrf, NULL);
-}
-
DEFUN (show_ipv6_route,
show_ipv6_route_cmd,
"show ipv6 <fib|route> [vrf NAME] [tag (1-4294967295)|X:X::X:X/M longer-prefixes|" FRR_IP6_REDIST_STR_ZEBRA "] [json]",
install_element(CONFIG_NODE, &ipv6_route_cmd);
install_element(CONFIG_NODE, &ipv6_route_flags_cmd);
install_element(CONFIG_NODE, &ipv6_route_ifname_cmd);
- install_element(CONFIG_NODE, &ipv6_route_ifname_flags_cmd);
install_element(CONFIG_NODE, &no_ipv6_route_cmd);
install_element(CONFIG_NODE, &no_ipv6_route_flags_cmd);
install_element(CONFIG_NODE, &no_ipv6_route_ifname_cmd);
- install_element(CONFIG_NODE, &no_ipv6_route_ifname_flags_cmd);
install_element(CONFIG_NODE, &ip_nht_default_route_cmd);
install_element(CONFIG_NODE, &no_ip_nht_default_route_cmd);
install_element(CONFIG_NODE, &ipv6_nht_default_route_cmd);