]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: silently ignore duplicated values
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Mon, 7 Dec 2020 15:10:42 +0000 (12:10 -0300)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 10 Dec 2020 13:27:36 +0000 (10:27 -0300)
Keep the previous CLI behavior of silently ignoring access lists which
contain the same value.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
(cherry picked from commit 866f48f2df2e9de260080f31edbde9f17622fc03)

lib/filter_cli.c

index 880b31acfc9ae8fea8a67766a5131673ad9d2414..54b6cda9a59752a37be493b4ef66fed29960e748 100644 (file)
@@ -1319,9 +1319,44 @@ DEFPY_YANG(
        "Maximum prefix length\n")
 {
        int64_t sseq;
+       int arg_idx = 0;
+       struct plist_dup_args pda = {};
        char xpath[XPATH_MAXLEN];
        char xpath_entry[XPATH_MAXLEN + 128];
 
+       /*
+        * Backward compatibility: don't complain about duplicated values,
+        * just silently accept.
+        */
+       if (seq_str == NULL) {
+               pda.pda_type = "ipv4";
+               pda.pda_name = name;
+               if (prefix_str) {
+                       pda.pda_xpath[arg_idx] = "./ipv4-prefix";
+                       pda.pda_value[arg_idx] = prefix_str;
+                       arg_idx++;
+                       if (ge_str) {
+                               pda.pda_xpath[arg_idx] =
+                                       "./ipv4-prefix-length-greater-or-equal";
+                               pda.pda_value[arg_idx] = ge_str;
+                               arg_idx++;
+                       }
+                       if (le_str) {
+                               pda.pda_xpath[arg_idx] =
+                                       "./ipv4-prefix-length-lesser-or-equal";
+                               pda.pda_value[arg_idx] = le_str;
+                               arg_idx++;
+                       }
+               } else {
+                       pda.pda_xpath[0] = "./any";
+                       pda.pda_value[0] = "";
+               }
+
+               /* Duplicated entry without sequence, just quit. */
+               if (plist_is_dup(vty->candidate_config->dnode, &pda))
+                       return CMD_SUCCESS;
+       }
+
        /*
         * Create the prefix-list first, so we can generate sequence if
         * none given (backward compatibility).
@@ -1479,9 +1514,44 @@ DEFPY_YANG(
        "Minimum prefix length\n")
 {
        int64_t sseq;
+       int arg_idx = 0;
+       struct plist_dup_args pda = {};
        char xpath[XPATH_MAXLEN];
        char xpath_entry[XPATH_MAXLEN + 128];
 
+       /*
+        * Backward compatibility: don't complain about duplicated values,
+        * just silently accept.
+        */
+       if (seq_str == NULL) {
+               pda.pda_type = "ipv6";
+               pda.pda_name = name;
+               if (prefix_str) {
+                       pda.pda_xpath[arg_idx] = "./ipv6-prefix";
+                       pda.pda_value[arg_idx] = prefix_str;
+                       arg_idx++;
+                       if (ge_str) {
+                               pda.pda_xpath[arg_idx] =
+                                       "./ipv6-prefix-length-greater-or-equal";
+                               pda.pda_value[arg_idx] = ge_str;
+                               arg_idx++;
+                       }
+                       if (le_str) {
+                               pda.pda_xpath[arg_idx] =
+                                       "./ipv6-prefix-length-lesser-or-equal";
+                               pda.pda_value[arg_idx] = le_str;
+                               arg_idx++;
+                       }
+               } else {
+                       pda.pda_xpath[0] = "./any";
+                       pda.pda_value[0] = "";
+               }
+
+               /* Duplicated entry without sequence, just quit. */
+               if (plist_is_dup(vty->candidate_config->dnode, &pda))
+                       return CMD_SUCCESS;
+       }
+
        /*
         * Create the prefix-list first, so we can generate sequence if
         * none given (backward compatibility).