]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Check argv_find() value instead of the index
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 12 May 2022 07:23:28 +0000 (10:23 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 12 May 2022 07:25:02 +0000 (10:25 +0300)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd/bgp_debug.c
bgpd/bgp_evpn_vty.c
bgpd/bgp_vty.c

index 0993d6de576781e1025dd720fc80f9319587d556..74f9ca49d5fb282cc50974955c8dc5b972dd9dbb 100644 (file)
@@ -627,8 +627,8 @@ static int bgp_debug_parse_evpn_prefix(struct vty *vty, struct cmd_token **argv,
                                       int argc, struct prefix **argv_pp)
 {
        struct prefix *argv_p;
-       struct ethaddr mac;
-       struct ipaddr ip;
+       struct ethaddr mac = {};
+       struct ipaddr ip = {};
        int evpn_type = 0;
        int mac_idx = 0;
        int ip_idx = 0;
@@ -641,19 +641,19 @@ static int bgp_debug_parse_evpn_prefix(struct vty *vty, struct cmd_token **argv,
        if (evpn_type == BGP_EVPN_MAC_IP_ROUTE) {
                memset(&ip, 0, sizeof(struct ipaddr));
 
-               argv_find(argv, argc, "mac", &mac_idx);
-               (void)prefix_str2mac(argv[mac_idx + 1]->arg, &mac);
+               if (argv_find(argv, argc, "mac", &mac_idx))
+                       (void)prefix_str2mac(argv[mac_idx + 1]->arg, &mac);
 
-               argv_find(argv, argc, "ip", &ip_idx);
-               str2ipaddr(argv[ip_idx + 1]->arg, &ip);
+               if (argv_find(argv, argc, "ip", &ip_idx))
+                       str2ipaddr(argv[ip_idx + 1]->arg, &ip);
 
                build_evpn_type2_prefix((struct prefix_evpn *)argv_p,
                                        &mac, &ip);
        } else if (evpn_type == BGP_EVPN_IMET_ROUTE) {
                memset(&ip, 0, sizeof(struct ipaddr));
 
-               argv_find(argv, argc, "ip", &ip_idx);
-               str2ipaddr(argv[ip_idx + 1]->arg, &ip);
+               if (argv_find(argv, argc, "ip", &ip_idx))
+                       str2ipaddr(argv[ip_idx + 1]->arg, &ip);
 
                build_evpn_type3_prefix((struct prefix_evpn *)argv_p,
                                        ip.ipaddr_v4);
index 0c9cd3b7218de1e4e4e0025ca7868b82dd476a2d..73568074d35aed360d21de3ea1fa71d9bb3e6765 100644 (file)
@@ -1419,8 +1419,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd,
        struct prefix_rd prd;
        int rd_all = 0;
 
-       argv_find(argv, argc, "all", &rd_all);
-       if (rd_all)
+       if (argv_find(argv, argc, "all", &rd_all))
                return bgp_show_ethernet_vpn(vty, NULL, bgp_show_type_normal,
                                             NULL, SHOW_DISPLAY_STANDARD,
                                             use_json(argc, argv));
@@ -1469,8 +1468,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd_tags,
        struct prefix_rd prd;
        int rd_all = 0;
 
-       argv_find(argv, argc, "all", &rd_all);
-       if (rd_all)
+       if (argv_find(argv, argc, "all", &rd_all))
                return bgp_show_ethernet_vpn(vty, NULL, bgp_show_type_normal,
                                             NULL, SHOW_DISPLAY_TAGS, 0);
 
@@ -1587,8 +1585,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd_neighbor_routes,
                return CMD_WARNING;
        }
 
-       argv_find(argv, argc, "all", &rd_all);
-       if (!rd_all) {
+       if (argv_find(argv, argc, "all", &rd_all)) {
                argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN",
                          &idx_ext_community);
                ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd);
@@ -1797,8 +1794,7 @@ DEFUN(show_ip_bgp_l2vpn_evpn_rd_neighbor_advertised_routes,
                return CMD_WARNING;
        }
 
-       argv_find(argv, argc, "all", &rd_all);
-       if (rd_all)
+       if (argv_find(argv, argc, "all", &rd_all))
                return show_adj_route_vpn(vty, peer, NULL, AFI_L2VPN, SAFI_EVPN,
                                          uj);
        else {
@@ -1860,8 +1856,7 @@ DEFUN(show_ip_bgp_evpn_rd_overlay,
        struct prefix_rd prd;
        int rd_all = 0;
 
-       argv_find(argv, argc, "all", &rd_all);
-       if (rd_all)
+       if (argv_find(argv, argc, "all", &rd_all))
                return bgp_show_ethernet_vpn(vty, NULL, bgp_show_type_normal,
                                             NULL, SHOW_DISPLAY_OVERLAY,
                                             use_json(argc, argv));
@@ -4693,7 +4688,7 @@ DEFUN(show_bgp_l2vpn_evpn_route_rd,
       JSON_STR)
 {
        struct bgp *bgp;
-       int ret;
+       int ret = 0;
        struct prefix_rd prd;
        int type = 0;
        bool uj = false;
@@ -4710,15 +4705,16 @@ DEFUN(show_bgp_l2vpn_evpn_route_rd,
        if (uj)
                json = json_object_new_object();
 
-       argv_find(argv, argc, "all", &rd_all);
-       if (!rd_all) {
+       if (argv_find(argv, argc, "all", &rd_all)) {
                /* get the RD */
-               argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN",
-                         &idx_ext_community);
-               ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd);
-               if (!ret) {
-                       vty_out(vty, "%% Malformed Route Distinguisher\n");
-                       return CMD_WARNING;
+               if (argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN",
+                             &idx_ext_community)) {
+                       ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd);
+                       if (!ret) {
+                               vty_out(vty,
+                                       "%% Malformed Route Distinguisher\n");
+                               return CMD_WARNING;
+                       }
                }
        }
 
@@ -4757,7 +4753,7 @@ DEFUN(show_bgp_l2vpn_evpn_route_rd_macip,
       JSON_STR)
 {
        struct bgp *bgp;
-       int ret;
+       int ret = 0;
        struct prefix_rd prd;
        struct ethaddr mac;
        struct ipaddr ip;
@@ -4781,14 +4777,15 @@ DEFUN(show_bgp_l2vpn_evpn_route_rd_macip,
                json = json_object_new_object();
 
        /* get the prd */
-       argv_find(argv, argc, "all", &rd_all);
-       if (!rd_all) {
-               argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN",
-                         &idx_ext_community);
-               ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd);
-               if (!ret) {
-                       vty_out(vty, "%% Malformed Route Distinguisher\n");
-                       return CMD_WARNING;
+       if (argv_find(argv, argc, "all", &rd_all)) {
+               if (argv_find(argv, argc, "ASN:NN_OR_IP-ADDRESS:NN",
+                             &idx_ext_community)) {
+                       ret = str2prefix_rd(argv[idx_ext_community]->arg, &prd);
+                       if (!ret) {
+                               vty_out(vty,
+                                       "%% Malformed Route Distinguisher\n");
+                               return CMD_WARNING;
+                       }
                }
        }
 
index d1d8e817d7b86f4a54d045e953e2971e8d0e9b2c..73bb47de41efb37bf58543ef2cdd3e493098f969 100644 (file)
@@ -1974,8 +1974,8 @@ DEFUN (bgp_maxmed_onstartup,
        VTY_DECLVAR_CONTEXT(bgp, bgp);
        int idx = 0;
 
-       argv_find(argv, argc, "(5-86400)", &idx);
-       bgp->v_maxmed_onstartup = strtoul(argv[idx]->arg, NULL, 10);
+       if (argv_find(argv, argc, "(5-86400)", &idx))
+               bgp->v_maxmed_onstartup = strtoul(argv[idx]->arg, NULL, 10);
        if (argv_find(argv, argc, "(0-4294967295)", &idx))
                bgp->maxmed_onstartup_value = strtoul(argv[idx]->arg, NULL, 10);
        else
@@ -2275,9 +2275,12 @@ DEFUN (bgp_coalesce_time,
        VTY_DECLVAR_CONTEXT(bgp, bgp);
 
        int idx = 0;
-       argv_find(argv, argc, "(0-4294967295)", &idx);
+
        bgp->heuristic_coalesce = false;
-       bgp->coalesce_time = strtoul(argv[idx]->arg, NULL, 10);
+
+       if (argv_find(argv, argc, "(0-4294967295)", &idx))
+               bgp->coalesce_time = strtoul(argv[idx]->arg, NULL, 10);
+
        return CMD_SUCCESS;
 }