ret = route_map_add_match(index, command, arg, type);
switch (ret) {
case RMAP_RULE_MISSING:
- vty_out(vty, "%% [%s] Can't find rule.\n", frr_protonameinst);
+ if (vty)
+ vty_out(vty, "%% [%s] Can't find rule.\n",
+ frr_protonameinst);
+ else
+ zlog_warn("Can't find rule: %s", command);
return CMD_WARNING_CONFIG_FAILED;
- break;
case RMAP_COMPILE_ERROR:
- vty_out(vty,
- "%% [%s] Argument form is unsupported or malformed.\n",
- frr_protonameinst);
+ if (vty)
+ vty_out(vty,
+ "%% [%s] Argument form is unsupported or malformed.\n",
+ frr_protonameinst);
+ else
+ zlog_warn("Argument form is unsupported or malformed: "
+ "%s %s", command, arg);
return CMD_WARNING_CONFIG_FAILED;
- break;
case RMAP_COMPILE_SUCCESS:
/*
* Nothing to do here move along
ret = route_map_delete_match(index, command, dep_name, type);
switch (ret) {
case RMAP_RULE_MISSING:
- vty_out(vty, "%% [%s] Can't find rule.\n", frr_protonameinst);
+ if (vty)
+ vty_out(vty, "%% [%s] Can't find rule.\n",
+ frr_protonameinst);
+ else
+ zlog_warn("Can't find rule: %s", command);
retval = CMD_WARNING_CONFIG_FAILED;
break;
case RMAP_COMPILE_ERROR:
- vty_out(vty,
- "%% [%s] Argument form is unsupported or malformed.\n",
- frr_protonameinst);
+ if (vty)
+ vty_out(vty,
+ "%% [%s] Argument form is unsupported or malformed.\n",
+ frr_protonameinst);
+ else
+ zlog_warn("Argument form is unsupported or malformed: "
+ "%s %s", command, arg);
retval = CMD_WARNING_CONFIG_FAILED;
break;
case RMAP_COMPILE_SUCCESS:
ret = route_map_add_set(index, command, arg);
switch (ret) {
case RMAP_RULE_MISSING:
- vty_out(vty, "%% [%s] Can't find rule.\n", frr_protonameinst);
+ if (vty)
+ vty_out(vty, "%% [%s] Can't find rule.\n", frr_protonameinst);
+ else
+ zlog_warn("Can't find rule: %s", command);
return CMD_WARNING_CONFIG_FAILED;
- break;
case RMAP_COMPILE_ERROR:
- vty_out(vty,
- "%% [%s] Argument form is unsupported or malformed.\n",
- frr_protonameinst);
+ if (vty)
+ vty_out(vty,
+ "%% [%s] Argument form is unsupported or malformed.\n",
+ frr_protonameinst);
+ else
+ zlog_warn("Argument form is unsupported or malformed: "
+ "%s %s", command, arg);
return CMD_WARNING_CONFIG_FAILED;
- break;
case RMAP_COMPILE_SUCCESS:
break;
}
ret = route_map_delete_set(index, command, arg);
switch (ret) {
case RMAP_RULE_MISSING:
- vty_out(vty, "%% [%s] Can't find rule.\n", frr_protonameinst);
+ if (vty)
+ vty_out(vty, "%% [%s] Can't find rule.\n", frr_protonameinst);
+ else
+ zlog_warn("Can't find rule: %s", command);
return CMD_WARNING_CONFIG_FAILED;
- break;
case RMAP_COMPILE_ERROR:
- vty_out(vty,
- "%% [%s] Argument form is unsupported or malformed.\n",
- frr_protonameinst);
+ if (vty)
+ vty_out(vty,
+ "%% [%s] Argument form is unsupported or malformed.\n",
+ frr_protonameinst);
+ else
+ zlog_warn("Argument form is unsupported or malformed: "
+ "%s %s", command, arg);
return CMD_WARNING_CONFIG_FAILED;
- break;
case RMAP_COMPILE_SUCCESS:
break;
}
new = XCALLOC(MTYPE_ROUTE_MAP_INDEX, sizeof(struct route_map_index));
new->exitpolicy = RMAP_EXIT; /* Default to Cisco-style */
+ TAILQ_INIT(&new->rhclist);
QOBJ_REG(new, route_map_index);
return new;
}
zlog_debug("Deleting route-map %s sequence %d",
index->map->name, index->pref);
+ /* Free route map northbound hook contexts. */
+ while (!TAILQ_EMPTY(&index->rhclist))
+ routemap_hook_context_free(TAILQ_FIRST(&index->rhclist));
+
/* Free route match. */
while ((rule = index->match_list.head) != NULL)
route_map_rule_delete(&index->match_list, rule);
if (rule->cmd == cmd && rule->rule_str != NULL)
return (rule->rule_str);
- return (NULL);
+ return NULL;
}
static route_map_event_t get_route_map_delete_event(route_map_event_t type)
hash_free(dep->dep_rmap_hash);
XFREE(MTYPE_ROUTE_MAP_NAME, dep->dep_name);
XFREE(MTYPE_ROUTE_MAP_DEP, dep);
- dep = NULL;
}
break;
case RMAP_EVENT_SET_ADDED: