]> git.puffer.fish Git - mirror/frr.git/commitdiff
*: Add RMAP_COMPILE_SUCCESS to enum
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 25 Aug 2017 12:31:03 +0000 (08:31 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 25 Aug 2017 14:48:30 +0000 (10:48 -0400)
Add the RMAP_COMPILE_SUCCESS and switch over to using it.
Refactoring allows a removal of a if statement to just
use the switch statement already in place.  Additionally
the reworking cleans up memory freeing in a couple of spots.
In one spot we no longer will leak memory too.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_routemap.c
eigrpd/eigrp_routemap.c
lib/routemap.c
lib/routemap.h
ospf6d/ospf6_asbr.c
zebra/zebra_routemap.c

index 307880f9d191a33954ad4a08849175d2ae5d7ba1..602bacde2849c332f9badc6e205b719aa07de1f6 100644 (file)
@@ -2671,25 +2671,27 @@ static int bgp_route_match_add(struct vty *vty, const char *command,
                               const char *arg, route_map_event_t type)
 {
        VTY_DECLVAR_CONTEXT(route_map_index, index);
+       int retval = CMD_SUCCESS;
        int ret;
 
        ret = route_map_add_match(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% BGP Can't find rule.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% BGP Argument is malformed.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% BGP Can't find rule.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% BGP Argument is malformed.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               if (type != RMAP_EVENT_MATCH_ADDED) {
+                       route_map_upd8_dependency(type, arg, index->map->name);
                }
+               break;
        }
 
-       if (type != RMAP_EVENT_MATCH_ADDED) {
-               route_map_upd8_dependency(type, arg, index->map->name);
-       }
-
-       return CMD_SUCCESS;
+       return retval;
 }
 
 /* Delete bgp route map rule. */
@@ -2698,6 +2700,7 @@ static int bgp_route_match_delete(struct vty *vty, const char *command,
 {
        VTY_DECLVAR_CONTEXT(route_map_index, index);
        int ret;
+       int retval = CMD_SUCCESS;
        char *dep_name = NULL;
        const char *tmpstr;
        char *rmap_name = NULL;
@@ -2716,31 +2719,27 @@ static int bgp_route_match_delete(struct vty *vty, const char *command,
        }
 
        ret = route_map_delete_match(index, command, dep_name);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% BGP Can't find rule.\n");
-                       break;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% BGP Argument is malformed.\n");
-                       break;
-               }
-               if (dep_name)
-                       XFREE(MTYPE_ROUTE_MAP_RULE, dep_name);
-               if (rmap_name)
-                       XFREE(MTYPE_ROUTE_MAP_NAME, rmap_name);
-               return CMD_WARNING_CONFIG_FAILED;
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% BGP Can't find rule.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% BGP Argument is malformed.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               if (type != RMAP_EVENT_MATCH_DELETED && dep_name)
+                       route_map_upd8_dependency(type, dep_name, rmap_name);
+               break;
        }
 
-       if (type != RMAP_EVENT_MATCH_DELETED && dep_name)
-               route_map_upd8_dependency(type, dep_name, rmap_name);
-
        if (dep_name)
                XFREE(MTYPE_ROUTE_MAP_RULE, dep_name);
        if (rmap_name)
                XFREE(MTYPE_ROUTE_MAP_NAME, rmap_name);
 
-       return CMD_SUCCESS;
+       return retval;
 }
 
 /*
index b645ed198784babf9964edf5040c2e741d2a0c20..360e28adf704028367bc79a20fbd9a4b92c77a2d 100644 (file)
@@ -137,16 +137,19 @@ static int eigrp_route_match_add(struct vty *vty, struct route_map_index *index,
 {
        int ret;
        ret = route_map_add_match(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% Can't find rule.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% Argument is malformed.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% Can't find rule.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% Argument is malformed.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               break;
        }
+
        return CMD_SUCCESS;
 }
 
@@ -157,16 +160,19 @@ static int eigrp_route_match_delete(struct vty *vty,
 {
        int ret;
        ret = route_map_delete_match(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% Can't find rule.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% Argument is malformed.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% Can't find rule.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% Argument is malformed.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               break;
        }
+
        return CMD_SUCCESS;
 }
 
@@ -177,25 +183,27 @@ static int eigrp_route_set_add(struct vty *vty, struct route_map_index *index,
        int ret;
 
        ret = route_map_add_set(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% Can't find rule.\n");
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% Can't find rule.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               /*
+                * rip, ripng and other protocols share the set metric command
+                * but only values from 0 to 16 are valid for rip and ripng
+                * if metric is out of range for rip and ripng, it is
+                * not for other protocols. Do not return an error
+                */
+               if (strcmp(command, "metric")) {
+                       vty_out(vty, "%% Argument is malformed.\n");
                        return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       /* rip, ripng and other protocols share the set metric
-                          command
-                          but only values from 0 to 16 are valid for rip and
-                          ripng
-                          if metric is out of range for rip and ripng, it is
-                          not for
-                          other protocols. Do not return an error */
-                       if (strcmp(command, "metric")) {
-                               vty_out(vty, "%% Argument is malformed.\n");
-                               return CMD_WARNING_CONFIG_FAILED;
-                       }
                }
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               break;
        }
+
        return CMD_SUCCESS;
 }
 
@@ -207,16 +215,19 @@ static int eigrp_route_set_delete(struct vty *vty,
        int ret;
 
        ret = route_map_delete_set(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% Can't find rule.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% Argument is malformed.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% Can't find rule.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% Argument is malformed.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               break;
        }
+
        return CMD_SUCCESS;
 }
 
index 5f74189700611513fa6dcdc83961e6c5fe9305f6..409c9c378076a11d1ee511fe8517682fe5ae9585 100644 (file)
@@ -416,23 +416,25 @@ int generic_match_add(struct vty *vty, struct route_map_index *index,
        int ret;
 
        ret = route_map_add_match(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% [%s] Can't find rule.\n",
-                               frr_protonameinst);
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty,
-                               "%% [%s] Argument form is unsupported or malformed.\n",
-                               frr_protonameinst);
-                       return CMD_WARNING_CONFIG_FAILED;
+       switch (ret) {
+       case RMAP_COMPILE_SUCCESS:
+               if (type != RMAP_EVENT_MATCH_ADDED) {
+                       route_map_upd8_dependency(type, arg, index->map->name);
                }
+               break;
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% [%s] Can't find rule.\n",
+                       frr_protonameinst);
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty,
+                       "%% [%s] Argument form is unsupported or malformed.\n",
+                       frr_protonameinst);
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
        }
 
-       if (type != RMAP_EVENT_MATCH_ADDED) {
-               route_map_upd8_dependency(type, arg, index->map->name);
-       }
        return CMD_SUCCESS;
 }
 
@@ -441,6 +443,7 @@ int generic_match_delete(struct vty *vty, struct route_map_index *index,
                         route_map_event_t type)
 {
        int ret;
+       int retval = CMD_SUCCESS;
        char *dep_name = NULL;
        const char *tmpstr;
        char *rmap_name = NULL;
@@ -459,34 +462,30 @@ int generic_match_delete(struct vty *vty, struct route_map_index *index,
        }
 
        ret = route_map_delete_match(index, command, dep_name);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% [%s] Can't find rule.\n",
-                               frr_protonameinst);
-                       break;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty,
-                               "%% [%s] Argument form is unsupported or malformed.\n",
-                               frr_protonameinst);
-                       break;
-               }
-               if (dep_name)
-                       XFREE(MTYPE_ROUTE_MAP_RULE, dep_name);
-               if (rmap_name)
-                       XFREE(MTYPE_ROUTE_MAP_NAME, rmap_name);
-               return CMD_WARNING_CONFIG_FAILED;
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% [%s] Can't find rule.\n",
+                       frr_protonameinst);
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty,
+                       "%% [%s] Argument form is unsupported or malformed.\n",
+                       frr_protonameinst);
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               if (type != RMAP_EVENT_MATCH_DELETED && dep_name)
+                       route_map_upd8_dependency(type, dep_name, rmap_name);
+               break;
        }
 
-       if (type != RMAP_EVENT_MATCH_DELETED && dep_name)
-               route_map_upd8_dependency(type, dep_name, rmap_name);
-
        if (dep_name)
                XFREE(MTYPE_ROUTE_MAP_RULE, dep_name);
        if (rmap_name)
                XFREE(MTYPE_ROUTE_MAP_NAME, rmap_name);
 
-       return CMD_SUCCESS;
+       return retval;
 }
 
 int generic_set_add(struct vty *vty, struct route_map_index *index,
@@ -495,19 +494,22 @@ int generic_set_add(struct vty *vty, struct route_map_index *index,
        int ret;
 
        ret = route_map_add_set(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% [%s] Can't find rule.\n",
-                               frr_protonameinst);
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty,
-                               "%% [%s] Argument form is unsupported or malformed.\n",
-                               frr_protonameinst);
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% [%s] Can't find rule.\n",
+                       frr_protonameinst);
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty,
+                       "%% [%s] Argument form is unsupported or malformed.\n",
+                       frr_protonameinst);
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               break;
        }
+
        return CMD_SUCCESS;
 }
 
@@ -517,19 +519,22 @@ int generic_set_delete(struct vty *vty, struct route_map_index *index,
        int ret;
 
        ret = route_map_delete_set(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% [%s] Can't find rule.\n",
-                               frr_protonameinst);
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty,
-                               "%% [%s] Argument form is unsupported or malformed.\n",
-                               frr_protonameinst);
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% [%s] Can't find rule.\n",
+                       frr_protonameinst);
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty,
+                       "%% [%s] Argument form is unsupported or malformed.\n",
+                       frr_protonameinst);
+               return CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               break;
        }
+
        return CMD_SUCCESS;
 }
 
@@ -1217,7 +1222,7 @@ int route_map_add_match(struct route_map_index *index, const char *match_name,
                                              RMAP_EVENT_CALL_ADDED);
        }
 
-       return 0;
+       return RMAP_COMPILE_SUCCESS;
 }
 
 /* Delete specified route match rule. */
@@ -1304,7 +1309,7 @@ int route_map_add_set(struct route_map_index *index, const char *set_name,
                route_map_notify_dependencies(index->map->name,
                                              RMAP_EVENT_CALL_ADDED);
        }
-       return 0;
+       return RMAP_COMPILE_SUCCESS;
 }
 
 /* Delete route map set rule. */
index 43af8dbcfe347c07d9685f21c05f06a64790b653..b166de1e0956c327952fc566a4d33c9799fd542b 100644 (file)
@@ -99,8 +99,10 @@ struct route_map_rule_cmd {
 
 /* Route map apply error. */
 enum {
+       RMAP_COMPILE_SUCCESS,
+
        /* Route map rule is missing. */
-       RMAP_RULE_MISSING = 1,
+       RMAP_RULE_MISSING,
 
        /* Route map rule can't compile */
        RMAP_COMPILE_ERROR
index dd3630af160ce32278a95c2a0f82531313c08757..de20fbc3abf514e608a24fa7bb3dc0da616fac30 100644 (file)
@@ -985,21 +985,20 @@ static struct route_map_rule_cmd ospf6_routemap_rule_set_tag_cmd = {
 
 static int route_map_command_status(struct vty *vty, int ret)
 {
-       if (!ret)
-               return CMD_SUCCESS;
-
        switch (ret) {
        case RMAP_RULE_MISSING:
                vty_out(vty, "OSPF6 Can't find rule.\n");
+               return CMD_WARNING_CONFIG_FAILED;
                break;
        case RMAP_COMPILE_ERROR:
                vty_out(vty, "OSPF6 Argument is malformed.\n");
+               return CMD_WARNING_CONFIG_FAILED;
                break;
-       default:
-               vty_out(vty, "OSPF6 route-map add set failed.\n");
+       case RMAP_COMPILE_SUCCESS:
                break;
        }
-       return CMD_WARNING_CONFIG_FAILED;
+
+       return CMD_SUCCESS;
 }
 
 /* add "set metric-type" */
index c738cde0ac540f5b292fbd7b6c2f9b5451818136..0fa616bef9b2ec75193b6b8e1cd9fa0703fb6280 100644 (file)
@@ -62,23 +62,26 @@ static int zebra_route_match_add(struct vty *vty, const char *command,
 {
        VTY_DECLVAR_CONTEXT(route_map_index, index);
        int ret;
+       int retval = CMD_SUCCESS;
 
        ret = route_map_add_match(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% Zebra Can't find rule.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% Zebra Argument is malformed.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% Zebra Can't find rule.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% Zebra Argument is malformed.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               if (type != RMAP_EVENT_MATCH_ADDED) {
+                       route_map_upd8_dependency(type, arg, index->map->name);
                }
+               break;
        }
 
-       if (type != RMAP_EVENT_MATCH_ADDED) {
-               route_map_upd8_dependency(type, arg, index->map->name);
-       }
-       return CMD_SUCCESS;
+       return retval;
 }
 
 /* Delete zebra route map rule. */
@@ -87,6 +90,7 @@ static int zebra_route_match_delete(struct vty *vty, const char *command,
 {
        VTY_DECLVAR_CONTEXT(route_map_index, index);
        int ret;
+       int retval = CMD_SUCCESS;
        char *dep_name = NULL;
        const char *tmpstr;
        char *rmap_name = NULL;
@@ -105,26 +109,27 @@ static int zebra_route_match_delete(struct vty *vty, const char *command,
        }
 
        ret = route_map_delete_match(index, command, arg);
-       if (ret) {
-               switch (ret) {
-               case RMAP_RULE_MISSING:
-                       vty_out(vty, "%% Zebra Can't find rule.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               case RMAP_COMPILE_ERROR:
-                       vty_out(vty, "%% Zebra Argument is malformed.\n");
-                       return CMD_WARNING_CONFIG_FAILED;
-               }
+       switch (ret) {
+       case RMAP_RULE_MISSING:
+               vty_out(vty, "%% Zebra Can't find rule.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_ERROR:
+               vty_out(vty, "%% Zebra Argument is malformed.\n");
+               retval = CMD_WARNING_CONFIG_FAILED;
+               break;
+       case RMAP_COMPILE_SUCCESS:
+               if (type != RMAP_EVENT_MATCH_DELETED && dep_name)
+                       route_map_upd8_dependency(type, dep_name, rmap_name);
+               break;
        }
 
-       if (type != RMAP_EVENT_MATCH_DELETED && dep_name)
-               route_map_upd8_dependency(type, dep_name, rmap_name);
-
        if (dep_name)
                XFREE(MTYPE_ROUTE_MAP_RULE, dep_name);
        if (rmap_name)
                XFREE(MTYPE_ROUTE_MAP_NAME, rmap_name);
 
-       return CMD_SUCCESS;
+       return retval;
 }
 
 /* 'match tag TAG'