summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_routemap.c61
-rw-r--r--eigrpd/eigrp_routemap.c97
-rw-r--r--lib/routemap.c127
-rw-r--r--lib/routemap.h4
-rw-r--r--ospf6d/ospf6_asbr.c11
-rw-r--r--zebra/zebra_routemap.c55
6 files changed, 188 insertions, 167 deletions
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index 307880f9d1..602bacde28 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -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;
}
/*
diff --git a/eigrpd/eigrp_routemap.c b/eigrpd/eigrp_routemap.c
index b645ed1987..360e28adf7 100644
--- a/eigrpd/eigrp_routemap.c
+++ b/eigrpd/eigrp_routemap.c
@@ -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;
}
diff --git a/lib/routemap.c b/lib/routemap.c
index 5f74189700..409c9c3780 100644
--- a/lib/routemap.c
+++ b/lib/routemap.c
@@ -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. */
diff --git a/lib/routemap.h b/lib/routemap.h
index 43af8dbcfe..b166de1e09 100644
--- a/lib/routemap.h
+++ b/lib/routemap.h
@@ -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
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index dd3630af16..de20fbc3ab 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -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" */
diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c
index c738cde0ac..0fa616bef9 100644
--- a/zebra/zebra_routemap.c
+++ b/zebra/zebra_routemap.c
@@ -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'