erec_queue(erec, ctx->msgs);
}
+static unsigned int netlink_parse_register(const struct nft_rule_expr *nle,
+ unsigned int attr)
+{
+ return nft_rule_expr_get_u32(nle, attr);
+}
+
static void netlink_set_register(struct netlink_parse_ctx *ctx,
enum nft_registers reg,
struct expr *expr)
nld.value = nft_rule_expr_get(nle, NFT_EXPR_IMM_DATA, &nld.len);
}
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_IMM_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_IMM_DREG);
expr = netlink_alloc_data(loc, &nld, dreg);
if (dreg == NFT_REG_VERDICT) {
struct stmt *stmt;
enum ops op;
- sreg = nft_rule_expr_get_u32(nle, NFT_EXPR_CMP_SREG);
+ sreg = netlink_parse_register(nle, NFT_EXPR_CMP_SREG);
left = netlink_get_register(ctx, loc, sreg);
if (left == NULL)
return netlink_error(ctx, loc,
struct expr *expr, *left, *right;
struct set *set;
- sreg = nft_rule_expr_get_u32(nle, NFT_EXPR_LOOKUP_SREG);
+ sreg = netlink_parse_register(nle, NFT_EXPR_LOOKUP_SREG);
left = netlink_get_register(ctx, loc, sreg);
if (left == NULL)
return netlink_error(ctx, loc,
right = set_ref_expr_alloc(loc, set);
if (nft_rule_expr_is_set(nle, NFT_EXPR_LOOKUP_DREG)) {
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_LOOKUP_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_LOOKUP_DREG);
expr = map_expr_alloc(loc, left, right);
if (dreg != NFT_REG_VERDICT)
return netlink_set_register(ctx, dreg, expr);
struct expr *expr, *left, *mask, *xor, *or;
mpz_t m, x, o;
- sreg = nft_rule_expr_get_u32(nle, NFT_EXPR_BITWISE_SREG);
+ sreg = netlink_parse_register(nle, NFT_EXPR_BITWISE_SREG);
left = netlink_get_register(ctx, loc, sreg);
if (left == NULL)
return netlink_error(ctx, loc,
mpz_clear(x);
mpz_clear(o);
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_BITWISE_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_BITWISE_DREG);
netlink_set_register(ctx, dreg, expr);
}
struct expr *expr, *arg;
enum ops op;
- sreg = nft_rule_expr_get_u32(nle, NFT_EXPR_BYTEORDER_SREG);
+ sreg = netlink_parse_register(nle, NFT_EXPR_BYTEORDER_SREG);
arg = netlink_get_register(ctx, loc, sreg);
if (arg == NULL)
return netlink_error(ctx, loc,
expr = unary_expr_alloc(loc, op, arg);
expr->len = arg->len;
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_BYTEORDER_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_BYTEORDER_DREG);
netlink_set_register(ctx, dreg, expr);
}
expr = payload_expr_alloc(loc, NULL, 0);
payload_init_raw(expr, base, offset, len);
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_PAYLOAD_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_PAYLOAD_DREG);
netlink_set_register(ctx, dreg, expr);
}
expr = exthdr_expr_alloc(loc, NULL, 0);
exthdr_init_raw(expr, type, offset, len);
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_EXTHDR_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_EXTHDR_DREG);
netlink_set_register(ctx, dreg, expr);
}
key = nft_rule_expr_get_u32(nle, NFT_EXPR_META_KEY);
expr = meta_expr_alloc(loc, key);
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_META_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_META_DREG);
netlink_set_register(ctx, dreg, expr);
}
struct stmt *stmt;
struct expr *expr;
- sreg = nft_rule_expr_get_u32(nle, NFT_EXPR_META_SREG);
+ sreg = netlink_parse_register(nle, NFT_EXPR_META_SREG);
expr = netlink_get_register(ctx, loc, sreg);
key = nft_rule_expr_get_u32(nle, NFT_EXPR_META_KEY);
struct stmt *stmt;
struct expr *expr;
- sreg = nft_rule_expr_get_u32(nle, NFT_EXPR_CT_SREG);
+ sreg = netlink_parse_register(nle, NFT_EXPR_CT_SREG);
expr = netlink_get_register(ctx, loc, sreg);
key = nft_rule_expr_get_u32(nle, NFT_EXPR_CT_KEY);
key = nft_rule_expr_get_u32(nle, NFT_EXPR_CT_KEY);
expr = ct_expr_alloc(loc, key);
- dreg = nft_rule_expr_get_u32(nle, NFT_EXPR_CT_DREG);
+ dreg = netlink_parse_register(nle, NFT_EXPR_CT_DREG);
netlink_set_register(ctx, dreg, expr);
}
stmt->nat.flags = nft_rule_expr_get_u32(nle,
NFT_EXPR_NAT_FLAGS);
- reg1 = nft_rule_expr_get_u32(nle, NFT_EXPR_NAT_REG_ADDR_MIN);
+ reg1 = netlink_parse_register(nle, NFT_EXPR_NAT_REG_ADDR_MIN);
if (reg1) {
addr = netlink_get_register(ctx, loc, reg1);
if (addr == NULL)
stmt->nat.addr = addr;
}
- reg2 = nft_rule_expr_get_u32(nle, NFT_EXPR_NAT_REG_ADDR_MAX);
+ reg2 = netlink_parse_register(nle, NFT_EXPR_NAT_REG_ADDR_MAX);
if (reg2 && reg2 != reg1) {
addr = netlink_get_register(ctx, loc, reg2);
if (addr == NULL)
stmt->nat.addr = addr;
}
- reg1 = nft_rule_expr_get_u32(nle, NFT_EXPR_NAT_REG_PROTO_MIN);
+ reg1 = netlink_parse_register(nle, NFT_EXPR_NAT_REG_PROTO_MIN);
if (reg1) {
proto = netlink_get_register(ctx, loc, reg1);
if (proto == NULL)
stmt->nat.proto = proto;
}
- reg2 = nft_rule_expr_get_u32(nle, NFT_EXPR_NAT_REG_PROTO_MAX);
+ reg2 = netlink_parse_register(nle, NFT_EXPR_NAT_REG_PROTO_MAX);
if (reg2 && reg2 != reg1) {
proto = netlink_get_register(ctx, loc, reg2);
if (proto == NULL)
stmt->redir.flags = flags;
}
- reg1 = nft_rule_expr_get_u32(nle, NFT_EXPR_REDIR_REG_PROTO_MIN);
+ reg1 = netlink_parse_register(nle, NFT_EXPR_REDIR_REG_PROTO_MIN);
if (reg1) {
proto = netlink_get_register(ctx, loc, reg1);
if (proto == NULL)
stmt->redir.proto = proto;
}
- reg2 = nft_rule_expr_get_u32(nle, NFT_EXPR_REDIR_REG_PROTO_MAX);
+ reg2 = netlink_parse_register(nle, NFT_EXPR_REDIR_REG_PROTO_MAX);
if (reg2 && reg2 != reg1) {
proto = netlink_get_register(ctx, loc, reg2);
if (proto == NULL)