summaryrefslogtreecommitdiffstats
path: root/src/expr
diff options
context:
space:
mode:
Diffstat (limited to 'src/expr')
-rw-r--r--src/expr/bitwise.c10
-rw-r--r--src/expr/byteorder.c8
-rw-r--r--src/expr/cmp.c6
-rw-r--r--src/expr/counter.c4
-rw-r--r--src/expr/ct.c7
-rw-r--r--src/expr/data_reg.c11
-rw-r--r--src/expr/data_reg.h1
-rw-r--r--src/expr/exthdr.c7
-rw-r--r--src/expr/immediate.c5
-rw-r--r--src/expr/limit.c4
-rw-r--r--src/expr/log.c10
-rw-r--r--src/expr/lookup.c3
-rw-r--r--src/expr/match.c3
-rw-r--r--src/expr/meta.c3
-rw-r--r--src/expr/nat.c6
-rw-r--r--src/expr/payload.c8
-rw-r--r--src/expr/target.c3
17 files changed, 58 insertions, 41 deletions
diff --git a/src/expr/bitwise.c b/src/expr/bitwise.c
index 11738a7..9d521b1 100644
--- a/src/expr/bitwise.c
+++ b/src/expr/bitwise.c
@@ -246,18 +246,20 @@ nft_rule_expr_bitwise_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
e->flags |= (1 << NFT_EXPR_BITWISE_DREG);
if (nft_mxml_num_parse(tree, "len", MXML_DESCEND_FIRST,
- BASE_DEC, &bitwise->len, NFT_TYPE_U8) != 0)
+ BASE_DEC, &bitwise->len, NFT_TYPE_U8,
+ NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_BITWISE_LEN);
- if (nft_mxml_data_reg_parse(tree, "mask",
- &bitwise->mask) != DATA_VALUE)
+ if (nft_mxml_data_reg_parse(tree, "mask", &bitwise->mask,
+ NFT_XML_MAND) != DATA_VALUE)
return -1;
e->flags |= (1 << NFT_EXPR_BITWISE_MASK);
- if (nft_mxml_data_reg_parse(tree, "xor", &bitwise->xor) != DATA_VALUE)
+ if (nft_mxml_data_reg_parse(tree, "xor", &bitwise->xor,
+ NFT_XML_MAND) != DATA_VALUE)
return -1;
e->flags |= (1 << NFT_EXPR_BITWISE_XOR);
diff --git a/src/expr/byteorder.c b/src/expr/byteorder.c
index 0277812..1034a31 100644
--- a/src/expr/byteorder.c
+++ b/src/expr/byteorder.c
@@ -260,7 +260,7 @@ nft_rule_expr_byteorder_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
byteorder->dreg = reg;
e->flags |= (1 << NFT_EXPR_BYTEORDER_DREG);
- op = nft_mxml_str_parse(tree, "op", MXML_DESCEND_FIRST);
+ op = nft_mxml_str_parse(tree, "op", MXML_DESCEND_FIRST, NFT_XML_MAND);
if (op == NULL)
return -1;
@@ -272,13 +272,15 @@ nft_rule_expr_byteorder_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
e->flags |= (1 << NFT_EXPR_BYTEORDER_OP);
if (nft_mxml_num_parse(tree, "len", MXML_DESCEND_FIRST, BASE_DEC,
- &byteorder->len, NFT_TYPE_U8) != 0)
+ &byteorder->len, NFT_TYPE_U8,
+ NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_BYTEORDER_LEN);
if (nft_mxml_num_parse(tree, "size", MXML_DESCEND_FIRST, BASE_DEC,
- &byteorder->size, NFT_TYPE_U8) != 0)
+ &byteorder->size, NFT_TYPE_U8,
+ NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_BYTEORDER_SIZE);
diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index 543f774..b9f0f6a 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -224,7 +224,7 @@ static int nft_rule_expr_cmp_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
cmp->sreg = reg;
e->flags |= (1 << NFT_EXPR_CMP_SREG);
- op = nft_mxml_str_parse(tree, "op", MXML_DESCEND_FIRST);
+ op = nft_mxml_str_parse(tree, "op", MXML_DESCEND_FIRST, NFT_XML_MAND);
if (op == NULL)
return -1;
@@ -236,9 +236,9 @@ static int nft_rule_expr_cmp_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
e->flags |= (1 << NFT_EXPR_CMP_OP);
if (nft_mxml_data_reg_parse(tree, "cmpdata",
- &cmp->data) != DATA_VALUE) {
+ &cmp->data, NFT_XML_MAND) != DATA_VALUE)
return -1;
- }
+
e->flags |= (1 << NFT_EXPR_CMP_DATA);
return 0;
diff --git a/src/expr/counter.c b/src/expr/counter.c
index 53dc526..971b5b1 100644
--- a/src/expr/counter.c
+++ b/src/expr/counter.c
@@ -148,13 +148,13 @@ nft_rule_expr_counter_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
struct nft_expr_counter *ctr = nft_expr_data(e);
if (nft_mxml_num_parse(tree, "pkts", MXML_DESCEND_FIRST, BASE_DEC,
- &ctr->pkts, NFT_TYPE_U64) != 0)
+ &ctr->pkts, NFT_TYPE_U64, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_CTR_PACKETS);
if (nft_mxml_num_parse(tree, "bytes", MXML_DESCEND_FIRST, BASE_DEC,
- &ctr->bytes, NFT_TYPE_U64) != 0)
+ &ctr->bytes, NFT_TYPE_U64, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_CTR_BYTES);
diff --git a/src/expr/ct.c b/src/expr/ct.c
index 4655a96..2fc6629 100644
--- a/src/expr/ct.c
+++ b/src/expr/ct.c
@@ -241,7 +241,8 @@ static int nft_rule_expr_ct_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree
ct->dreg = reg;
e->flags |= (1 << NFT_EXPR_CT_DREG);
- key_str = nft_mxml_str_parse(tree, "key", MXML_DESCEND_FIRST);
+ key_str = nft_mxml_str_parse(tree, "key", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (key_str == NULL)
return -1;
@@ -252,8 +253,8 @@ static int nft_rule_expr_ct_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree
ct->key = key;
e->flags |= (1 << NFT_EXPR_CT_KEY);
- if (nft_mxml_num_parse(tree, "dir", MXML_DESCEND_FIRST, BASE_DEC, &dir,
- NFT_TYPE_U8) != 0)
+ if (nft_mxml_num_parse(tree, "dir", MXML_DESCEND_FIRST, BASE_DEC,
+ &dir, NFT_TYPE_U8, NFT_XML_MAND) != 0)
return -1;
if (dir != IP_CT_DIR_ORIGINAL && dir != IP_CT_DIR_REPLY)
diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c
index 34537a7..fd1dd2e 100644
--- a/src/expr/data_reg.c
+++ b/src/expr/data_reg.c
@@ -133,7 +133,8 @@ static int nft_data_reg_verdict_xml_parse(union nft_data_reg *reg, char *xml)
}
/* Get and set <verdict> */
- verdict_str = nft_mxml_str_parse(tree, "verdict", MXML_DESCEND);
+ verdict_str = nft_mxml_str_parse(tree, "verdict", MXML_DESCEND,
+ NFT_XML_MAND);
if (verdict_str == NULL) {
mxmlDelete(tree);
return -1;
@@ -183,7 +184,8 @@ static int nft_data_reg_chain_xml_parse(union nft_data_reg *reg, char *xml)
if (reg->chain)
xfree(reg->chain);
- reg->chain = nft_mxml_str_parse(tree, "chain", MXML_DESCEND);
+ reg->chain = nft_mxml_str_parse(tree, "chain", MXML_DESCEND,
+ NFT_XML_MAND);
if (reg->chain == NULL) {
mxmlDelete(tree);
return -1;
@@ -234,7 +236,7 @@ static int nft_data_reg_value_xml_parse(union nft_data_reg *reg, char *xml)
}
if (nft_mxml_num_parse(tree, "len", MXML_DESCEND, BASE_DEC, &reg->len,
- NFT_TYPE_U8) != 0) {
+ NFT_TYPE_U8, NFT_XML_MAND) != 0) {
mxmlDelete(tree);
return -1;
}
@@ -244,7 +246,8 @@ static int nft_data_reg_value_xml_parse(union nft_data_reg *reg, char *xml)
sprintf(node_name, "data%d", i);
if (nft_mxml_num_parse(tree, node_name, MXML_DESCEND, BASE_HEX,
- &reg->val[i], NFT_TYPE_U32) != 0) {
+ &reg->val[i], NFT_TYPE_U32,
+ NFT_XML_MAND) != 0) {
mxmlDelete(tree);
return -1;
}
diff --git a/src/expr/data_reg.h b/src/expr/data_reg.h
index 7819919..3e0217d 100644
--- a/src/expr/data_reg.h
+++ b/src/expr/data_reg.h
@@ -2,6 +2,7 @@
#define _DATA_H_
enum {
+ DATA_NONE,
DATA_VALUE,
DATA_VERDICT,
DATA_CHAIN,
diff --git a/src/expr/exthdr.c b/src/expr/exthdr.c
index af9d6bf..9ca66e5 100644
--- a/src/expr/exthdr.c
+++ b/src/expr/exthdr.c
@@ -249,7 +249,7 @@ nft_rule_expr_exthdr_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
e->flags |= (1 << NFT_EXPR_EXTHDR_DREG);
exthdr_type = nft_mxml_str_parse(tree, "exthdr_type",
- MXML_DESCEND_FIRST);
+ MXML_DESCEND_FIRST, NFT_XML_MAND);
if (exthdr_type == NULL)
return -1;
@@ -262,14 +262,15 @@ nft_rule_expr_exthdr_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
/* Get and set <offset> */
if (nft_mxml_num_parse(tree, "offset", MXML_DESCEND_FIRST, BASE_DEC,
- &exthdr->offset, NFT_TYPE_U32) != 0)
+ &exthdr->offset, NFT_TYPE_U32,
+ NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_EXTHDR_OFFSET);
/* Get and set <len> */
if (nft_mxml_num_parse(tree, "len", MXML_DESCEND_FIRST, BASE_DEC,
- &exthdr->len, NFT_TYPE_U32) != 0)
+ &exthdr->len, NFT_TYPE_U32, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_EXTHDR_LEN);
diff --git a/src/expr/immediate.c b/src/expr/immediate.c
index 0556999..facb8f5 100644
--- a/src/expr/immediate.c
+++ b/src/expr/immediate.c
@@ -232,10 +232,7 @@ nft_rule_expr_immediate_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
e->flags |= (1 << NFT_EXPR_IMM_DREG);
datareg_type = nft_mxml_data_reg_parse(tree, "immediatedata",
- &imm->data);
- if (datareg_type < 0)
- return -1;
-
+ &imm->data, NFT_XML_MAND);
switch (datareg_type) {
case DATA_VALUE:
e->flags |= (1 << NFT_EXPR_IMM_DATA);
diff --git a/src/expr/limit.c b/src/expr/limit.c
index bd92cd1..6c06ce5 100644
--- a/src/expr/limit.c
+++ b/src/expr/limit.c
@@ -146,13 +146,13 @@ static int nft_rule_expr_limit_xml_parse(struct nft_rule_expr *e, mxml_node_t *t
struct nft_expr_limit *limit = nft_expr_data(e);
if (nft_mxml_num_parse(tree, "rate", MXML_DESCEND_FIRST, BASE_DEC,
- &limit->rate, NFT_TYPE_U64) != 0)
+ &limit->rate, NFT_TYPE_U64, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_LIMIT_RATE);
if (nft_mxml_num_parse(tree, "depth", MXML_DESCEND_FIRST, BASE_DEC,
- &limit->depth, NFT_TYPE_U64) != 0)
+ &limit->depth, NFT_TYPE_U64, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_LIMIT_DEPTH);
diff --git a/src/expr/log.c b/src/expr/log.c
index 90fb32e..feb4184 100644
--- a/src/expr/log.c
+++ b/src/expr/log.c
@@ -202,7 +202,8 @@ static int nft_rule_expr_log_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
struct nft_expr_log *log = nft_expr_data(e);
const char *prefix;
- prefix = nft_mxml_str_parse(tree, "prefix", MXML_DESCEND_FIRST);
+ prefix = nft_mxml_str_parse(tree, "prefix", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (prefix == NULL)
return -1;
@@ -210,19 +211,20 @@ static int nft_rule_expr_log_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
e->flags |= (1 << NFT_EXPR_LOG_PREFIX);
if (nft_mxml_num_parse(tree, "group", MXML_DESCEND_FIRST, BASE_DEC,
- &log->group, NFT_TYPE_U16) != 0)
+ &log->group, NFT_TYPE_U16, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_LOG_GROUP);
if (nft_mxml_num_parse(tree, "snaplen", MXML_DESCEND_FIRST, BASE_DEC,
- &log->snaplen, NFT_TYPE_U32) != 0)
+ &log->snaplen, NFT_TYPE_U32, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_LOG_SNAPLEN);
if (nft_mxml_num_parse(tree, "qthreshold", MXML_DESCEND_FIRST,
- BASE_DEC, &log->qthreshold, NFT_TYPE_U16) != 0)
+ BASE_DEC, &log->qthreshold,
+ NFT_TYPE_U16, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_LOG_QTHRESHOLD);
diff --git a/src/expr/lookup.c b/src/expr/lookup.c
index 56ab253..b9b0229 100644
--- a/src/expr/lookup.c
+++ b/src/expr/lookup.c
@@ -180,7 +180,8 @@ nft_rule_expr_lookup_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
const char *set_name;
int32_t reg;
- set_name = nft_mxml_str_parse(tree, "set", MXML_DESCEND_FIRST);
+ set_name = nft_mxml_str_parse(tree, "set", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (set_name == NULL)
return -1;
diff --git a/src/expr/match.c b/src/expr/match.c
index b18d594..9f98462 100644
--- a/src/expr/match.c
+++ b/src/expr/match.c
@@ -195,7 +195,8 @@ static int nft_rule_expr_match_xml_parse(struct nft_rule_expr *e, mxml_node_t *t
struct nft_expr_match *mt = nft_expr_data(e);
const char *name;
- name = nft_mxml_str_parse(tree, "name", MXML_DESCEND_FIRST);
+ name = nft_mxml_str_parse(tree, "name", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (name == NULL)
return -1;
diff --git a/src/expr/meta.c b/src/expr/meta.c
index d914569..91a689e 100644
--- a/src/expr/meta.c
+++ b/src/expr/meta.c
@@ -205,7 +205,8 @@ static int nft_rule_expr_meta_xml_parse(struct nft_rule_expr *e, mxml_node_t *tr
meta->dreg = reg;
e->flags |= (1 << NFT_EXPR_META_DREG);
- key_str = nft_mxml_str_parse(tree, "key", MXML_DESCEND_FIRST);
+ key_str = nft_mxml_str_parse(tree, "key", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (key_str == NULL)
return -1;
diff --git a/src/expr/nat.c b/src/expr/nat.c
index 1ebecda..da28ede 100644
--- a/src/expr/nat.c
+++ b/src/expr/nat.c
@@ -262,7 +262,8 @@ static int nft_rule_expr_nat_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
int32_t reg;
int family, nat_type_value;
- nat_type = nft_mxml_str_parse(tree, "type", MXML_DESCEND_FIRST);
+ nat_type = nft_mxml_str_parse(tree, "type", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (nat_type == NULL)
return -1;
@@ -273,7 +274,8 @@ static int nft_rule_expr_nat_xml_parse(struct nft_rule_expr *e, mxml_node_t *tre
nat->type = nat_type_value;
e->flags |= (1 << NFT_EXPR_NAT_TYPE);
- family = nft_mxml_family_parse(tree, "family", MXML_DESCEND_FIRST);
+ family = nft_mxml_family_parse(tree, "family", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (family < 0) {
mxmlDelete(tree);
return -1;
diff --git a/src/expr/payload.c b/src/expr/payload.c
index 38362c4..2b9f5e0 100644
--- a/src/expr/payload.c
+++ b/src/expr/payload.c
@@ -248,7 +248,8 @@ nft_rule_expr_payload_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
payload->dreg = reg;
e->flags |= (1 << NFT_EXPR_PAYLOAD_DREG);
- base_str = nft_mxml_str_parse(tree, "base", MXML_DESCEND_FIRST);
+ base_str = nft_mxml_str_parse(tree, "base", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (base_str == NULL)
return -1;
@@ -260,13 +261,14 @@ nft_rule_expr_payload_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
e->flags |= (1 << NFT_EXPR_PAYLOAD_BASE);
if (nft_mxml_num_parse(tree, "offset", MXML_DESCEND_FIRST, BASE_DEC,
- &payload->offset, NFT_TYPE_U8) != 0)
+ &payload->offset, NFT_TYPE_U8,
+ NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_PAYLOAD_OFFSET);
if (nft_mxml_num_parse(tree, "len", MXML_DESCEND_FIRST, BASE_DEC,
- &payload->len, NFT_TYPE_U8) != 0)
+ &payload->len, NFT_TYPE_U8, NFT_XML_MAND) != 0)
return -1;
e->flags |= (1 << NFT_EXPR_PAYLOAD_LEN);
diff --git a/src/expr/target.c b/src/expr/target.c
index a6645ff..8dc752a 100644
--- a/src/expr/target.c
+++ b/src/expr/target.c
@@ -196,7 +196,8 @@ nft_rule_expr_target_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree)
struct nft_expr_target *tg = nft_expr_data(e);
const char *name;
- name = nft_mxml_str_parse(tree, "name", MXML_DESCEND_FIRST);
+ name = nft_mxml_str_parse(tree, "name", MXML_DESCEND_FIRST,
+ NFT_XML_MAND);
if (name == NULL)
return -1;