filter: Cease out "struct bsc_nat" from the API
This means we need to require a talloc context and
simply operate on the list. I had considered creating
a structure to hold the list head but I didn't find
any other members so omitted it for now.
diff --git a/openbsc/src/libfilter/bsc_msg_acc.c b/openbsc/src/libfilter/bsc_msg_acc.c
index 947a7b2..cc6c444 100644
--- a/openbsc/src/libfilter/bsc_msg_acc.c
+++ b/openbsc/src/libfilter/bsc_msg_acc.c
@@ -52,29 +52,29 @@
return 1;
}
-struct bsc_nat_acc_lst *bsc_nat_acc_lst_find(struct bsc_nat *nat, const char *name)
+struct bsc_nat_acc_lst *bsc_nat_acc_lst_find(struct llist_head *head, const char *name)
{
struct bsc_nat_acc_lst *lst;
if (!name)
return NULL;
- llist_for_each_entry(lst, &nat->access_lists, list)
+ llist_for_each_entry(lst, head, list)
if (strcmp(lst->name, name) == 0)
return lst;
return NULL;
}
-struct bsc_nat_acc_lst *bsc_nat_acc_lst_get(struct bsc_nat *nat, const char *name)
+struct bsc_nat_acc_lst *bsc_nat_acc_lst_get(void *ctx, struct llist_head *head, const char *name)
{
struct bsc_nat_acc_lst *lst;
- lst = bsc_nat_acc_lst_find(nat, name);
+ lst = bsc_nat_acc_lst_find(head, name);
if (lst)
return lst;
- lst = talloc_zero(nat, struct bsc_nat_acc_lst);
+ lst = talloc_zero(ctx, struct bsc_nat_acc_lst);
if (!lst) {
LOGP(DNAT, LOGL_ERROR, "Failed to allocate access list");
return NULL;
@@ -89,7 +89,7 @@
INIT_LLIST_HEAD(&lst->fltr_list);
lst->name = talloc_strdup(lst, name);
- llist_add_tail(&lst->list, &nat->access_lists);
+ llist_add_tail(&lst->list, head);
return lst;
}