]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Return error if v6 prefix is passed to show ip route
authorPooja Jagadeesh Doijode <pdoijode@nvidia.com>
Tue, 21 Jan 2025 22:19:32 +0000 (14:19 -0800)
committerPooja Jagadeesh Doijode <pdoijode@nvidia.com>
Wed, 22 Jan 2025 18:09:03 +0000 (10:09 -0800)
Return error if IPv6 address or prefix is passed as an argument
to "show ip route" command.

UT:
r1# show ip route 2::3/128
% Cannot specify IPv6 address/prefix for IPv4 table
r1#
r1# show ip route 2::3
% Cannot specify IPv6 address/prefix for IPv4 table
r1#

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
zebra/zebra_vty.c

index 582d15627c3742e73a07eeed95551d44ce20a5c7..a1731712d3dae3e07c7a823d07e3ed7effefb26f 100644 (file)
@@ -1789,9 +1789,24 @@ DEFPY (show_route_detail,
        rib_dest_t *dest;
        bool network_found = false;
        bool show_ng = !!ng;
+       int idx = 0;
+
+       /*
+        * Return error if V6 address/prefix is passed as an argument to
+        * "show ip route" cmd.
+        *
+        * When "show ip route <X:X::X:X|X:X::X:X/M>" is queried,
+        * argv[idx]->text will be set to "ipv6" but argv[idx]->arg will be set
+        * to "ip".
+        */
+       if (argv_find(argv, argc, "ipv6", &idx) && !strcmp(argv[idx]->arg, "ip")) {
+               vty_out(vty, "%% Cannot specify IPv6 address/prefix for IPv4 table\n");
+               return CMD_WARNING;
+       }
 
        if (address_str)
                prefix_str = address_str;
+
        if (str2prefix(prefix_str, &p) < 0) {
                vty_out(vty, "%% Malformed address\n");
                return CMD_WARNING;