]> git.puffer.fish Git - matthieu/frr.git/commitdiff
vtysh: Fix ordering of multicast boundary command
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 4 Oct 2017 21:46:29 +0000 (17:46 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 5 Oct 2017 14:33:42 +0000 (10:33 -0400)
The multicast boundary command must be shown after
the `ip pim sm` command.  So add a new config_add_line_end
and make it the last one.

Signed-off-by: Donald Sharp <sharp@cumulusnetworks.com>
vtysh/vtysh_config.c

index d7e79d6b2cc1660758a8d279d1c55f3f014d7b1c..277429a779329b1dfbbfa02e74f185f5690b18d0 100644 (file)
@@ -131,6 +131,20 @@ static void config_add_line_uniq(struct list *config, const char *line)
        listnode_add_sort(config, XSTRDUP(MTYPE_VTYSH_CONFIG_LINE, line));
 }
 
+/*
+ * I want to explicitly move this command to the end of the line
+ */
+static void config_add_line_end(struct list *config, const char *line)
+{
+       struct listnode *node;
+       void *item = XSTRDUP(MTYPE_VTYSH_CONFIG_LINE, line);
+
+       listnode_add(config, item);
+       node = listnode_lookup(config, item);
+       if (node)
+               listnode_move_to_tail(config, node);
+}
+
 void vtysh_config_parse_line(void *arg, const char *line)
 {
        char c;
@@ -161,6 +175,10 @@ void vtysh_config_parse_line(void *arg, const char *line)
                            == 0) {
                                config_add_line(config->line, line);
                                config->index = LINK_PARAMS_NODE;
+                       } else if (strncmp(line,
+                                          " ip multicast boundary",
+                                          strlen(" ip multicast boundary")) == 0) {
+                               config_add_line_end(config->line, line);
                        } else if (config->index == LINK_PARAMS_NODE
                                   && strncmp(line, "  exit-link-params",
                                              strlen("  exit"))