]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Actually find the sequence number for `bgp extcommunity-list...`
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 2 Jun 2020 20:10:48 +0000 (16:10 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 1 Jul 2020 18:03:31 +0000 (14:03 -0400)
The code in the bgp extcommunity-list function was using
argv_find to get the correct idx.  The problem was that
we had already done argv_finds before and idx was non-zero
thus having us always set the seq pointer to what was last
looked up.  This causes us to pass in a value to the
underlying function and it would just wisely ignore it
causing a seq number of 0.

We would then write this seq number of 0 and then immediately
reject it on read in again.  BOO!

Actually handle argv_find the way it was meant to be.

Ticket:CM-29926
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_vty.c

index 3669205ee3f87b86146569aaefea72d2a00c1c20..9c8f1e1def10293887d146cdc99b50fc49182ae9 100644 (file)
@@ -17617,8 +17617,7 @@ DEFUN (extcommunity_list_standard,
        argv_find(argv, argc, "WORD", &idx);
        cl_number_or_name = argv[idx]->arg;
 
-       argv_find(argv, argc, "(1-4294967295)", &idx);
-       if (idx)
+       if (argv_find(argv, argc, "(1-4294967295)", &idx))
                seq = argv[idx]->arg;
 
        direct = argv_find(argv, argc, "permit", &idx) ? COMMUNITY_PERMIT
@@ -17663,8 +17662,7 @@ DEFUN (extcommunity_list_name_expanded,
        argv_find(argv, argc, "WORD", &idx);
        cl_number_or_name = argv[idx]->arg;
 
-       argv_find(argv, argc, "(1-4294967295)", &idx);
-       if (idx)
+       if (argv_find(argv, argc, "(1-4294967295)", &idx))
                seq = argv[idx]->arg;
 
        direct = argv_find(argv, argc, "permit", &idx) ? COMMUNITY_PERMIT
@@ -17707,8 +17705,7 @@ DEFUN (no_extcommunity_list_standard_all,
        char *seq = NULL;
        int idx = 0;
 
-       argv_find(argv, argc, "(1-4294967295)", &idx);
-       if (idx)
+       if (argv_find(argv, argc, "(1-4294967295)", &idx))
                seq = argv[idx]->arg;
 
        idx = 0;
@@ -17772,8 +17769,7 @@ DEFUN (no_extcommunity_list_expanded_all,
        char *seq = NULL;
        int idx = 0;
 
-       argv_find(argv, argc, "(1-4294967295)", &idx);
-       if (idx)
+       if (argv_find(argv, argc, "(1-4294967295)", &idx))
                seq = argv[idx]->arg;
 
        idx = 0;