extern int netlink_get_setelem(struct netlink_ctx *ctx, const struct handle *h,
const struct location *loc, struct set *cache_set,
struct set *set, struct expr *init, bool reset);
-extern int netlink_delinearize_setelem(struct nftnl_set_elem *nlse,
- struct set *set,
- struct nft_cache *cache);
+extern int netlink_delinearize_setelem(struct netlink_ctx *ctx,
+ struct nftnl_set_elem *nlse,
+ struct set *set);
extern int netlink_list_objs(struct netlink_ctx *ctx, const struct handle *h);
extern struct obj *netlink_delinearize_obj(struct netlink_ctx *ctx,
nftnl_set_elems_iter_destroy(nlsei);
goto out;
}
- if (netlink_delinearize_setelem(nlse, dummyset,
- &monh->ctx->nft->cache) < 0) {
+ if (netlink_delinearize_setelem(monh->ctx,
+ nlse, dummyset) < 0) {
set_free(dummyset);
nftnl_set_elems_iter_destroy(nlsei);
goto out;
nlse = nftnl_set_elems_iter_next(nlsei);
while (nlse != NULL) {
- if (netlink_delinearize_setelem(nlse, set,
- &monh->ctx->nft->cache) < 0) {
+ if (netlink_delinearize_setelem(monh->ctx, nlse, set) < 0) {
fprintf(stderr,
"W: Unable to cache set_elem. "
"Delinearize failed.\n");
}
}
-int netlink_delinearize_setelem(struct nftnl_set_elem *nlse,
- struct set *set, struct nft_cache *cache)
+int netlink_delinearize_setelem(struct netlink_ctx *ctx,
+ struct nftnl_set_elem *nlse,
+ struct set *set)
{
struct setelem_parse_ctx setelem_parse_ctx = {
.set = set,
- .cache = cache,
+ .cache = &ctx->nft->cache,
};
struct nft_data_delinearize nld;
struct expr *expr, *key, *data;
struct stmt *stmt;
nle = nftnl_set_elem_get(nlse, NFTNL_SET_ELEM_EXPR, NULL);
- stmt = netlink_parse_set_expr(set, cache, nle);
+ stmt = netlink_parse_set_expr(set, &ctx->nft->cache, nle);
list_add_tail(&stmt->list, &setelem_parse_ctx.stmt_list);
} else if (nftnl_set_elem_is_set(nlse, NFTNL_SET_ELEM_EXPRESSIONS)) {
nftnl_set_elem_expr_foreach(nlse, set_elem_parse_expressions,
static int list_setelem_cb(struct nftnl_set_elem *nlse, void *arg)
{
struct netlink_ctx *ctx = arg;
- return netlink_delinearize_setelem(nlse, ctx->set, &ctx->nft->cache);
+ return netlink_delinearize_setelem(ctx, nlse, ctx->set);
}
static int list_setelem_debug_cb(struct nftnl_set_elem *nlse, void *arg)