diff options
-rw-r--r-- | openbsc/include/openbsc/bsc_nat.h | 1 | ||||
-rw-r--r-- | openbsc/src/nat/bsc_nat_utils.c | 6 | ||||
-rw-r--r-- | openbsc/src/nat/bsc_nat_vty.c | 17 |
3 files changed, 24 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index 5d28e4c9d..3b950e1d2 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -326,5 +326,6 @@ int bsc_write(struct bsc_connection *bsc, struct msgb *msg, int id); void bsc_parse_reg(void *ctx, regex_t *reg, char **imsi, int argc, const char **argv); struct bsc_nat_access_list *bsc_nat_accs_list_find(struct bsc_nat *nat, const char *name); struct bsc_nat_access_list *bsc_nat_accs_list_get(struct bsc_nat *nat, const char *name); +void bsc_nat_accs_list_delete(struct bsc_nat_access_list *lst); #endif diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c index ffb37e8bc..71d572279 100644 --- a/openbsc/src/nat/bsc_nat_utils.c +++ b/openbsc/src/nat/bsc_nat_utils.c @@ -443,4 +443,10 @@ struct bsc_nat_access_list *bsc_nat_accs_list_get(struct bsc_nat *nat, const cha lst->name = talloc_strdup(lst, name); llist_add(&lst->list, &nat->access_lists); return lst; +} + +void bsc_nat_accs_list_delete(struct bsc_nat_access_list *lst) +{ + llist_del(&lst->list); + talloc_free(lst); }
\ No newline at end of file diff --git a/openbsc/src/nat/bsc_nat_vty.c b/openbsc/src/nat/bsc_nat_vty.c index e888dcc6f..3f2d7ac5c 100644 --- a/openbsc/src/nat/bsc_nat_vty.c +++ b/openbsc/src/nat/bsc_nat_vty.c @@ -413,6 +413,22 @@ DEFUN(cfg_lst_imsi_deny, return CMD_SUCCESS; } +/* naming to follow Zebra... */ +DEFUN(cfg_lst_no, + cfg_lst_no_cmd, + "no access-list NAME", + NO_STR "Remove an access-list by name\n" + "The access-list to remove\n") +{ + struct bsc_nat_access_list *acc; + acc = bsc_nat_accs_list_find(_nat, argv[0]); + if (!acc) + return CMD_WARNING; + + bsc_nat_accs_list_delete(acc); + return CMD_SUCCESS; +} + DEFUN(cfg_bsc_acc_lst_name, cfg_bsc_acc_lst_name_cmd, "access-list-name NAME", @@ -507,6 +523,7 @@ int bsc_nat_vty_init(struct bsc_nat *nat) /* access-list */ install_element(NAT_NODE, &cfg_lst_imsi_allow_cmd); install_element(NAT_NODE, &cfg_lst_imsi_deny_cmd); + install_element(NAT_NODE, &cfg_lst_no_cmd); /* BSC subgroups */ install_element(NAT_NODE, &cfg_bsc_cmd); |