diff options
Diffstat (limited to 'src/expr')
| -rw-r--r-- | src/expr/bitwise.c | 9 | ||||
| -rw-r--r-- | src/expr/cmp.c | 3 | ||||
| -rw-r--r-- | src/expr/data_reg.c | 6 | ||||
| -rw-r--r-- | src/expr/immediate.c | 3 | ||||
| -rw-r--r-- | src/expr/range.c | 4 |
5 files changed, 17 insertions, 8 deletions
diff --git a/src/expr/bitwise.c b/src/expr/bitwise.c index a775285..a838e6c 100644 --- a/src/expr/bitwise.c +++ b/src/expr/bitwise.c @@ -51,11 +51,14 @@ nftnl_expr_bitwise_set(struct nftnl_expr *e, uint16_t type, memcpy(&bitwise->len, data, data_len); break; case NFTNL_EXPR_BITWISE_MASK: - return nftnl_data_cpy(&bitwise->mask, data, data_len, byteorder); + return nftnl_data_cpy(&bitwise->mask, data, + data_len, byteorder, NULL); case NFTNL_EXPR_BITWISE_XOR: - return nftnl_data_cpy(&bitwise->xor, data, data_len, byteorder); + return nftnl_data_cpy(&bitwise->xor, data, + data_len, byteorder, NULL); case NFTNL_EXPR_BITWISE_DATA: - return nftnl_data_cpy(&bitwise->data, data, data_len, byteorder); + return nftnl_data_cpy(&bitwise->data, data, + data_len, byteorder, NULL); } return 0; } diff --git a/src/expr/cmp.c b/src/expr/cmp.c index c88e06a..ec5dd62 100644 --- a/src/expr/cmp.c +++ b/src/expr/cmp.c @@ -38,7 +38,8 @@ nftnl_expr_cmp_set(struct nftnl_expr *e, uint16_t type, memcpy(&cmp->op, data, data_len); break; case NFTNL_EXPR_CMP_DATA: - return nftnl_data_cpy(&cmp->data, data, data_len, byteorder); + return nftnl_data_cpy(&cmp->data, data, + data_len, byteorder, NULL); } return 0; } diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c index 45f2d94..d1aadcc 100644 --- a/src/expr/data_reg.c +++ b/src/expr/data_reg.c @@ -202,7 +202,7 @@ int nftnl_parse_data(union nftnl_data_reg *data, struct nlattr *attr, int *type) } int nftnl_data_cpy(union nftnl_data_reg *dreg, const void *src, - uint32_t len, uint32_t byteorder) + uint32_t len, uint32_t byteorder, uint8_t *sizes) { int ret = 0; @@ -214,5 +214,9 @@ int nftnl_data_cpy(union nftnl_data_reg *dreg, const void *src, memcpy(dreg->val, src, len); dreg->len = len; dreg->byteorder = byteorder; + if (sizes) + memcpy(dreg->sizes, sizes, sizeof(dreg->sizes)); + else + memset(dreg->sizes, 0, sizeof(dreg->sizes)); return ret; } diff --git a/src/expr/immediate.c b/src/expr/immediate.c index f27b6e6..9453198 100644 --- a/src/expr/immediate.c +++ b/src/expr/immediate.c @@ -32,7 +32,8 @@ nftnl_expr_immediate_set(struct nftnl_expr *e, uint16_t type, memcpy(&imm->dreg, data, data_len); break; case NFTNL_EXPR_IMM_DATA: - return nftnl_data_cpy(&imm->data, data, data_len, byteorder); + return nftnl_data_cpy(&imm->data, data, + data_len, byteorder, NULL); case NFTNL_EXPR_IMM_VERDICT: memcpy(&imm->data.verdict, data, data_len); break; diff --git a/src/expr/range.c b/src/expr/range.c index 4b3101e..12c91e9 100644 --- a/src/expr/range.c +++ b/src/expr/range.c @@ -38,10 +38,10 @@ nftnl_expr_range_set(struct nftnl_expr *e, uint16_t type, break; case NFTNL_EXPR_RANGE_FROM_DATA: return nftnl_data_cpy(&range->data_from, data, - data_len, byteorder); + data_len, byteorder, NULL); case NFTNL_EXPR_RANGE_TO_DATA: return nftnl_data_cpy(&range->data_to, data, - data_len, byteorder); + data_len, byteorder, NULL); } return 0; } |
