extern struct rule *rule_lookup(const struct chain *chain, uint64_t handle);
extern struct rule *rule_lookup_by_index(const struct chain *chain,
uint64_t index);
+void rule_stmt_append(struct rule *rule, struct stmt *stmt);
void rule_stmt_insert_at(struct rule *rule, struct stmt *nstmt,
struct stmt *stmt);
payload_init_raw(expr, base, offset, len);
stmt = payload_stmt_alloc(loc, expr, val);
-
- list_add_tail(&stmt->list, &ctx->rule->stmts);
+ rule_stmt_append(ctx->rule, stmt);
}
static void netlink_parse_payload(struct netlink_parse_ctx *ctx,
expr_set_type(val, expr->dtype, expr->byteorder);
stmt = exthdr_stmt_alloc(loc, expr, val);
- list_add_tail(&stmt->list, &ctx->rule->stmts);
+ rule_stmt_append(ctx->rule, stmt);
}
}
if (err < 0)
return err;
if (ctx->stmt != NULL) {
- list_add_tail(&ctx->stmt->list, &ctx->rule->stmts);
+ rule_stmt_append(ctx->rule, ctx->stmt);
ctx->stmt = NULL;
}
return 0;
return NULL;
}
- rule->num_stmts++;
- list_add_tail(&stmt->list, &rule->stmts);
+ rule_stmt_append(rule, stmt);
}
if (op == CMD_ADD)
return NULL;
}
- rule->num_stmts++;
- list_add_tail(&stmt->list, &rule->stmts);
+ rule_stmt_append(rule, stmt);
}
if (op == CMD_REPLACE)
return NULL;
}
+void rule_stmt_append(struct rule *rule, struct stmt *stmt)
+{
+ list_add_tail(&stmt->list, &rule->stmts);
+ rule->num_stmts++;
+}
+
void rule_stmt_insert_at(struct rule *rule, struct stmt *nstmt,
struct stmt *stmt)
{
stmt->xt.name = strdup(name);
stmt->xt.type = NFT_XT_MATCH;
#endif
- list_add_tail(&stmt->list, &ctx->rule->stmts);
+ rule_stmt_append(ctx->rule, stmt);
}
void netlink_parse_target(struct netlink_parse_ctx *ctx,
stmt->xt.name = strdup(name);
stmt->xt.type = NFT_XT_TARGET;
#endif
- list_add_tail(&stmt->list, &ctx->rule->stmts);
+ rule_stmt_append(ctx->rule, stmt);
}
#ifdef HAVE_LIBXTABLES