__nftnl_assert_attr_exists(_attr, _attr_max, __FILE__, __LINE__); \
})
-#define SNPRINTF_BUFFER_SIZE(ret, size, len, offset) \
+#define SNPRINTF_BUFFER_SIZE(ret, remain, offset) \
if (ret < 0) \
ret = 0; \
offset += ret; \
- if (ret > len) \
- ret = len; \
- size += ret; \
- len -= ret;
+ if (ret > remain) \
+ ret = remain; \
+ remain -= ret; \
const char *nftnl_family2str(uint32_t family);
int nftnl_str2family(const char *family);
static int nftnl_chain_snprintf_default(char *buf, size_t size,
const struct nftnl_chain *c)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = snprintf(buf, len, "%s %s %s use %u",
+ ret = snprintf(buf, remain, "%s %s %s use %u",
nftnl_family2str(c->family), c->table, c->name, c->use);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (c->flags & (1 << NFTNL_CHAIN_HOOKNUM)) {
- ret = snprintf(buf + offset, len, " type %s hook %s prio %d",
+ ret = snprintf(buf + offset, remain, " type %s hook %s prio %d",
c->type, nftnl_hooknum2str(c->family, c->hooknum),
c->prio);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (c->flags & (1 << NFTNL_CHAIN_POLICY)) {
- ret = snprintf(buf + offset, len, " policy %s",
+ ret = snprintf(buf + offset, remain, " policy %s",
nftnl_verdict2str(c->policy));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
" packets %"PRIu64" bytes %"PRIu64"",
c->packets, c->bytes);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (c->flags & (1 << NFTNL_CHAIN_DEV)) {
- ret = snprintf(buf + offset, len, " dev %s ", c->dev);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " dev %s ",
+ c->dev);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
const struct nftnl_chain *c, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_chain_snprintf_default(buf+offset, len, c);
+ ret = nftnl_chain_snprintf_default(buf + offset, remain, c);
break;
case NFTNL_OUTPUT_XML:
case NFTNL_OUTPUT_JSON:
- ret = nftnl_chain_export(buf+offset, len, c, type);
+ ret = nftnl_chain_export(buf + offset, remain, c, type);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
uint32_t type, uint32_t flags)
{
int ret;
- unsigned int offset = 0, len = size;
+ unsigned int offset = 0, remain = size;
if (!expr->ops->snprintf)
return 0;
- ret = expr->ops->snprintf(buf+offset, len, type, flags, expr);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = expr->ops->snprintf(buf + offset, remain, type, flags, expr);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_expr *e)
{
struct nftnl_expr_bitwise *bitwise = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "reg %u = (reg=%u & ",
+ ret = snprintf(buf, remain, "reg %u = (reg=%u & ",
bitwise->dreg, bitwise->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf+offset, len, &bitwise->mask,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &bitwise->mask,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, ") ^ ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ") ^ ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf+offset, len, &bitwise->xor,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &bitwise->xor,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_expr *e)
{
struct nftnl_expr_byteorder *byteorder = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "reg %u = %s(reg %u, %u, %u) ",
+ ret = snprintf(buf, remain, "reg %u = %s(reg %u, %u, %u) ",
byteorder->dreg, bo2str(byteorder->op),
byteorder->sreg, byteorder->size, byteorder->len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_expr *e)
{
struct nftnl_expr_cmp *cmp = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "%s reg %u ",
+ ret = snprintf(buf, remain, "%s reg %u ",
cmp2str(cmp->op), cmp->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf+offset, len, &cmp->data,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &cmp->data,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
nftnl_expr_ct_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
struct nftnl_expr_ct *ct = nftnl_expr_data(e);
if (e->flags & (1 << NFTNL_EXPR_CT_SREG)) {
ret = snprintf(buf, size, "set %s with reg %u ",
ctkey2str(ct->key), ct->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_CT_DREG)) {
- ret = snprintf(buf, len, "load %s => reg %u ",
+ ret = snprintf(buf, remain, "load %s => reg %u ",
ctkey2str(ct->key), ct->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (nftnl_expr_is_set(e, NFTNL_EXPR_CT_DIR)) {
- ret = snprintf(buf+offset, len, ", dir %s ",
+ ret = snprintf(buf + offset, remain, ", dir %s ",
ctdir2str(ct->dir));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret, i, j;
+ int remain = size, offset = 0, ret, i, j;
uint32_t utemp;
uint8_t *tmp;
- ret = snprintf(buf, len, "\"reg\":{\"type\":\"value\",");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "\"reg\":{\"type\":\"value\",");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "\"len\":%u,", reg->len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\"len\":%u,", reg->len);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "\"data%d\":\"0x", i);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\"data%d\":\"0x", i);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
utemp = htonl(reg->val[i]);
tmp = (uint8_t *)&utemp;
for (j = 0; j<sizeof(uint32_t); j++) {
- ret = snprintf(buf+offset, len, "%.02x", tmp[j]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%.02x", tmp[j]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "\",");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\",");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
offset--;
- ret = snprintf(buf+offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret, i;
+ int remain = size, offset = 0, ret, i;
for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "0x%.8x ", reg->val[i]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "0x%.8x ", reg->val[i]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret = 0;
+ int remain = size, offset = 0, ret = 0;
ret = snprintf(buf, size, "%s ", nftnl_verdict2str(reg->verdict));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (reg->chain != NULL) {
- ret = snprintf(buf+offset, len, "-> %s ", reg->chain);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "-> %s ", reg->chain);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret = 0;
+ int remain = size, offset = 0, ret = 0;
ret = snprintf(buf, size, "\"reg\":{\"type\":\"verdict\","
"\"verdict\":\"%s\"", nftnl_verdict2str(reg->verdict));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (reg->chain != NULL) {
- ret = snprintf(buf+offset, len, ",\"chain\":\"%s\"",
+ ret = snprintf(buf + offset, remain, ",\"chain\":\"%s\"",
reg->chain);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_expr *e,
uint32_t flags)
{
- int size = len, offset = 0, ret;
+ int remain = len, offset = 0, ret;
struct nftnl_expr_dup *dup = nftnl_expr_data(e);
if (e->flags & (1 << NFTNL_EXPR_DUP_SREG_ADDR)) {
ret = snprintf(buf + offset, len, "sreg_addr %u ", dup->sreg_addr);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_DUP_SREG_DEV)) {
ret = snprintf(buf + offset, len, "sreg_dev %u ", dup->sreg_dev);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
{
struct nftnl_expr_dynset *dynset = nftnl_expr_data(e);
struct nftnl_expr *expr;
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "%s reg_key %u set %s ",
+ ret = snprintf(buf, remain, "%s reg_key %u set %s ",
op2str(dynset->op), dynset->sreg_key, dynset->set_name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_DYNSET_SREG_DATA)) {
- ret = snprintf(buf+offset, len, "sreg_data %u ", dynset->sreg_data);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "sreg_data %u ",
+ dynset->sreg_data);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_DYNSET_TIMEOUT)) {
- ret = snprintf(buf+offset, len, "timeout %"PRIu64"ms ",
+ ret = snprintf(buf + offset, remain, "timeout %"PRIu64"ms ",
dynset->timeout);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_DYNSET_EXPR)) {
expr = dynset->expr;
- ret = snprintf(buf+offset, len, "expr [ %s ",
+ ret = snprintf(buf + offset, remain, "expr [ %s ",
expr->ops->name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_expr_snprintf(buf+offset, len, expr,
+ ret = nftnl_expr_snprintf(buf + offset, remain, expr,
NFTNL_OUTPUT_DEFAULT,
NFTNL_OF_EVENT_ANY);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "] ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "] ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_fib *fib = nftnl_expr_data(e);
- int len = size, offset = 0, ret, i;
+ int remain = size, offset = 0, ret, i;
uint32_t flags = fib->flags & ~NFTA_FIB_F_PRESENT;
uint32_t present_flag = fib->flags & NFTA_FIB_F_PRESENT;
static const struct {
for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++) {
if (flags & tab[i].bit) {
- ret = snprintf(buf + offset, len, "%s ", tab[i].name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s ",
+ tab[i].name);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
flags &= ~tab[i].bit;
if (flags) {
- ret = snprintf(buf + offset, len, ". ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ". ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
}
if (flags) {
- ret = snprintf(buf + offset, len, "unknown 0x%" PRIx32, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "unknown 0x%" PRIx32,
+ flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf + offset, len, "%s%s => reg %d ",
+ ret = snprintf(buf + offset, remain, "%s%s => reg %d ",
fib_type_str(fib->result),
present_flag ? " present" : "",
fib->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_expr *e,
uint32_t flags)
{
- int size = len, offset = 0, ret;
+ int remain = len, offset = 0, ret;
struct nftnl_expr_fwd *fwd = nftnl_expr_data(e);
if (e->flags & (1 << NFTNL_EXPR_FWD_SREG_DEV)) {
- ret = snprintf(buf + offset, len, "sreg_dev %u ", fwd->sreg_dev);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "sreg_dev %u ",
+ fwd->sreg_dev);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_hash *hash = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
switch (hash->type) {
case NFT_HASH_SYM:
ret =
- snprintf(buf, len, "reg %u = symhash() %% mod %u ", hash->dreg,
+ snprintf(buf, remain, "reg %u = symhash() %% mod %u ",
+ hash->dreg,
hash->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
case NFT_HASH_JENKINS:
default:
ret =
- snprintf(buf, len,
+ snprintf(buf, remain,
"reg %u = jhash(reg %u, %u, 0x%x) %% mod %u ",
hash->dreg, hash->sreg, hash->len, hash->seed,
hash->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
}
if (hash->offset) {
- ret = snprintf(buf + offset, len, "offset %u ", hash->offset);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "offset %u ",
+ hash->offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e,
uint32_t flags)
{
- int size = len, offset = 0, ret;
+ int remain = len, offset = 0, ret;
struct nftnl_expr_immediate *imm = nftnl_expr_data(e);
- ret = snprintf(buf, len, "reg %u ", imm->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "reg %u ", imm->dreg);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_IMM_DATA)) {
- ret = nftnl_data_reg_snprintf(buf+offset, len, &imm->data,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &imm->data,
NFTNL_OUTPUT_DEFAULT, flags, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
} else if (e->flags & (1 << NFTNL_EXPR_IMM_VERDICT)) {
- ret = nftnl_data_reg_snprintf(buf+offset, len, &imm->data,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &imm->data,
NFTNL_OUTPUT_DEFAULT, flags, DATA_VERDICT);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
} else if (e->flags & (1 << NFTNL_EXPR_IMM_CHAIN)) {
- ret = nftnl_data_reg_snprintf(buf+offset, len, &imm->data,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &imm->data,
NFTNL_OUTPUT_DEFAULT, flags, DATA_CHAIN);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_log *log = nftnl_expr_data(e);
- int ret, offset = 0, len = size;
+ int ret, offset = 0, remain = size;
if (e->flags & (1 << NFTNL_EXPR_LOG_PREFIX)) {
- ret = snprintf(buf, len, "prefix %s ", log->prefix);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "prefix %s ", log->prefix);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_LOG_GROUP)) {
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
"group %u snaplen %u qthreshold %u ",
log->group, log->snaplen, log->qthreshold);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
} else {
if (e->flags & (1 << NFTNL_EXPR_LOG_LEVEL)) {
- ret = snprintf(buf + offset, len, "level %u ",
+ ret = snprintf(buf + offset, remain, "level %u ",
log->level);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_LOG_FLAGS)) {
if (log->flags & NF_LOG_TCPSEQ) {
- ret = snprintf(buf + offset, len, "tcpseq ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "tcpseq ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_TCPOPT) {
- ret = snprintf(buf + offset, len, "tcpopt ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "tcpopt ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_IPOPT) {
- ret = snprintf(buf + offset, len, "ipopt ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "ipopt ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_UID) {
- ret = snprintf(buf + offset, len, "uid ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "uid ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_MACDECODE) {
- ret = snprintf(buf + offset, len, "macdecode ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain,
+ "macdecode ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
}
nftnl_expr_lookup_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
struct nftnl_expr_lookup *l = nftnl_expr_data(e);
- ret = snprintf(buf, len, "reg %u set %s ", l->sreg, l->set_name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "reg %u set %s ", l->sreg, l->set_name);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_LOOKUP_DREG)) {
- ret = snprintf(buf+offset, len, "dreg %u ", l->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "dreg %u ", l->dreg);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_LOOKUP_FLAGS)) {
- ret = snprintf(buf + offset, len, "0x%x ", l->flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "0x%x ", l->flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_nat *nat = nftnl_expr_data(e);
- int len = size, offset = 0, ret = 0;
+ int remain = size, offset = 0, ret = 0;
- ret = snprintf(buf, len, "%s ", nat2str(nat->type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "%s ", nat2str(nat->type));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "%s ", nftnl_family2str(nat->family));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s ",
+ nftnl_family2str(nat->family));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_NAT_REG_ADDR_MIN)) {
- ret = snprintf(buf+offset, len,
+ ret = snprintf(buf + offset, remain,
"addr_min reg %u addr_max reg %u ",
nat->sreg_addr_min, nat->sreg_addr_max);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_NAT_REG_PROTO_MIN)) {
- ret = snprintf(buf+offset, len,
+ ret = snprintf(buf + offset, remain,
"proto_min reg %u proto_max reg %u ",
nat->sreg_proto_min, nat->sreg_proto_max);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_NAT_FLAGS)) {
- ret = snprintf(buf+offset, len, "flags %u", nat->flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "flags %u", nat->flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_ng *ng = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
switch (ng->type) {
case NFT_NG_INCREMENTAL:
- ret = snprintf(buf, len, "reg %u = inc mod %u ",
+ ret = snprintf(buf, remain, "reg %u = inc mod %u ",
ng->dreg, ng->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
case NFT_NG_RANDOM:
- ret = snprintf(buf, len, "reg %u = random mod %u ",
+ ret = snprintf(buf, remain, "reg %u = random mod %u ",
ng->dreg, ng->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
default:
return 0;
}
if (ng->offset) {
- ret = snprintf(buf + offset, len, "offset %u ", ng->offset);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "offset %u ", ng->offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_queue *queue = nftnl_expr_data(e);
- int ret, size = len, offset = 0;
+ int ret, remain = len, offset = 0;
uint16_t total_queues;
if (e->flags & (1 << NFTNL_EXPR_QUEUE_NUM)) {
total_queues = queue->queuenum + queue->queues_total - 1;
ret = snprintf(buf + offset, len, "num %u", queue->queuenum);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (queue->queues_total && total_queues != queue->queuenum) {
ret = snprintf(buf + offset, len, "-%u", total_queues);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
ret = snprintf(buf + offset, len, " ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_QUEUE_SREG_QNUM)) {
ret = snprintf(buf + offset, len, "sreg_qnum %u ",
queue->sreg_qnum);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_QUEUE_FLAGS)) {
if (queue->flags & (NFT_QUEUE_FLAG_BYPASS)) {
ret = snprintf(buf + offset, len, "bypass ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (queue->flags & (NFT_QUEUE_FLAG_CPU_FANOUT)) {
ret = snprintf(buf + offset, len, "fanout ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
return offset;
const struct nftnl_expr *e)
{
struct nftnl_expr_range *range = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "%s reg %u ",
+ ret = snprintf(buf, remain, "%s reg %u ",
expr_range_str[range->op], range->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &range->data_from,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &range->data_from,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &range->data_to,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &range->data_to,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
static int nftnl_expr_redir_snprintf_default(char *buf, size_t len,
const struct nftnl_expr *e)
{
- int ret, size = len, offset = 0;
+ int ret, remain = len, offset = 0;
struct nftnl_expr_redir *redir = nftnl_expr_data(e);
if (nftnl_expr_is_set(e, NFTNL_EXPR_REDIR_REG_PROTO_MIN)) {
ret = snprintf(buf + offset, len, "proto_min reg %u ",
redir->sreg_proto_min);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (nftnl_expr_is_set(e, NFTNL_EXPR_REDIR_REG_PROTO_MAX)) {
ret = snprintf(buf + offset, len, "proto_max reg %u ",
redir->sreg_proto_max);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (nftnl_expr_is_set(e, NFTNL_EXPR_REDIR_FLAGS)) {
- ret = snprintf(buf + offset , len, "flags 0x%x ",
+ ret = snprintf(buf + offset, len, "flags 0x%x ",
redir->flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_gen *gen, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_gen_snprintf_default(buf + offset, len, gen);
+ ret = nftnl_gen_snprintf_default(buf + offset, remain, gen);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
uint32_t type, uint32_t flags)
{
const char *name = obj->ops ? obj->ops->name : "(unknown)";
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ret = snprintf(buf, size, "table %s name %s use %u [ %s ",
obj->table, obj->name, obj->use, name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (obj->ops) {
- ret = obj->ops->snprintf(buf + offset, offset, type, flags, obj);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = obj->ops->snprintf(buf + offset, offset, type, flags,
+ obj);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
ret = snprintf(buf + offset, offset, "]");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_obj *obj, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_obj_snprintf_dflt(buf + offset, len, obj, type,
+ ret = nftnl_obj_snprintf_dflt(buf + offset, remain, obj, type,
flags);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_obj_export(buf + offset, len, obj, type, flags);
+ ret = nftnl_obj_export(buf + offset, remain, obj, type, flags);
break;
case NFTNL_OUTPUT_XML:
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
uint32_t type, uint32_t flags)
{
struct nftnl_expr *expr;
- int ret, len = size, offset = 0, i;
+ int ret, remain = size, offset = 0, i;
if (r->flags & (1 << NFTNL_RULE_FAMILY)) {
- ret = snprintf(buf+offset, len, "%s ",
+ ret = snprintf(buf + offset, remain, "%s ",
nftnl_family2str(r->family));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_TABLE)) {
- ret = snprintf(buf+offset, len, "%s ",
+ ret = snprintf(buf + offset, remain, "%s ",
r->table);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_CHAIN)) {
- ret = snprintf(buf+offset, len, "%s ",
+ ret = snprintf(buf + offset, remain, "%s ",
r->chain);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_HANDLE)) {
- ret = snprintf(buf+offset, len, "%llu ",
+ ret = snprintf(buf + offset, remain, "%llu ",
(unsigned long long)r->handle);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_POSITION)) {
- ret = snprintf(buf+offset, len, "%llu ",
+ ret = snprintf(buf + offset, remain, "%llu ",
(unsigned long long)r->position);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_ID)) {
- ret = snprintf(buf + offset, len, "%u ", r->id);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%u ", r->id);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
list_for_each_entry(expr, &r->expr_list, head) {
- ret = snprintf(buf+offset, len, " [ %s ", expr->ops->name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " [ %s ", expr->ops->name);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_expr_snprintf(buf+offset, len, expr,
+ ret = nftnl_expr_snprintf(buf + offset, remain, expr,
type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "]\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "]\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->user.len) {
- ret = snprintf(buf+offset, len, " userdata = { ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " userdata = { ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < r->user.len; i++) {
char *c = r->user.data;
- ret = snprintf(buf+offset, len, "%c",
+ ret = snprintf(buf + offset, remain, "%c",
isalnum(c[i]) ? c[i] : 0);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, " }\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " }\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
const struct nftnl_rule *r, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
uint32_t inner_flags = flags;
inner_flags &= ~NFTNL_OF_EVENT_ANY;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_rule_snprintf_default(buf+offset, len, r, type,
+ ret = nftnl_rule_snprintf_default(buf + offset, remain, r, type,
inner_flags);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_rule_export(buf+offset, len, r, type,
+ ret = nftnl_rule_export(buf + offset, remain, r, type,
inner_flags);
break;
case NFTNL_OUTPUT_XML:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
{
struct nftnl_table *t;
struct nftnl_table_list_iter *ti;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ti = nftnl_table_list_iter_create(rs->table_list);
if (ti == NULL)
t = nftnl_table_list_iter_next(ti);
while (t != NULL) {
- ret = nftnl_table_snprintf(buf+offset, len, t, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_table_snprintf(buf + offset, remain, t, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
t = nftnl_table_list_iter_next(ti);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(t, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_table_list_iter_destroy(ti);
{
struct nftnl_chain *c;
struct nftnl_chain_list_iter *ci;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ci = nftnl_chain_list_iter_create(rs->chain_list);
if (ci == NULL)
c = nftnl_chain_list_iter_next(ci);
while (c != NULL) {
- ret = nftnl_chain_snprintf(buf+offset, len, c, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_chain_snprintf(buf + offset, remain, c, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
c = nftnl_chain_list_iter_next(ci);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(c, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_chain_list_iter_destroy(ci);
{
struct nftnl_set *s;
struct nftnl_set_list_iter *si;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
si = nftnl_set_list_iter_create(rs->set_list);
if (si == NULL)
s = nftnl_set_list_iter_next(si);
while (s != NULL) {
- ret = nftnl_set_snprintf(buf+offset, len, s, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_set_snprintf(buf + offset, remain, s, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
s = nftnl_set_list_iter_next(si);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(s, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_set_list_iter_destroy(si);
{
struct nftnl_rule *r;
struct nftnl_rule_list_iter *ri;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ri = nftnl_rule_list_iter_create(rs->rule_list);
if (ri == NULL)
r = nftnl_rule_list_iter_next(ri);
while (r != NULL) {
- ret = nftnl_rule_snprintf(buf+offset, len, r, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_rule_snprintf(buf + offset, remain, r, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
r = nftnl_rule_list_iter_next(ri);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(r, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_rule_list_iter_destroy(ri);
nftnl_ruleset_do_snprintf(char *buf, size_t size, const struct nftnl_ruleset *rs,
uint32_t cmd, uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
void *prev = NULL;
uint32_t inner_flags = flags;
/* dont pass events flags to child calls of _snprintf() */
inner_flags &= ~NFTNL_OF_EVENT_ANY;
- ret = snprintf(buf + offset, len, "%s", nftnl_ruleset_o_opentag(type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s",
+ nftnl_ruleset_o_opentag(type));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_TABLELIST) &&
(!nftnl_table_list_is_empty(rs->table_list))) {
- ret = nftnl_ruleset_snprintf_table(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_table(buf + offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (ret > 0)
prev = rs->table_list;
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_CHAINLIST) &&
(!nftnl_chain_list_is_empty(rs->chain_list))) {
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(prev, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_ruleset_snprintf_chain(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_chain(buf + offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (ret > 0)
prev = rs->chain_list;
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_SETLIST) &&
(!nftnl_set_list_is_empty(rs->set_list))) {
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(prev, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_ruleset_snprintf_set(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_set(buf + offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (ret > 0)
prev = rs->set_list;
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_RULELIST) &&
(!nftnl_rule_list_is_empty(rs->rule_list))) {
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf + offset, remain, "%s",
nftnl_ruleset_o_separator(prev, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_ruleset_snprintf_rule(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_rule(buf + offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "%s", nftnl_ruleset_o_closetag(type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s",
+ nftnl_ruleset_o_closetag(type));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_set *s,
uint32_t type, uint32_t flags)
{
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
struct nftnl_set_elem *elem;
- ret = snprintf(buf, len, "{\"set\":{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "{\"set\":{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (s->flags & (1 << NFTNL_SET_NAME)) {
- ret = snprintf(buf + offset, len, "\"name\":\"%s\"",
+ ret = snprintf(buf + offset, remain, "\"name\":\"%s\"",
s->name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_TABLE)) {
- ret = snprintf(buf + offset, len, ",\"table\":\"%s\"",
+ ret = snprintf(buf + offset, remain, ",\"table\":\"%s\"",
s->table);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_FLAGS)) {
- ret = snprintf(buf + offset, len, ",\"flags\":%u",
+ ret = snprintf(buf + offset, remain, ",\"flags\":%u",
s->set_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_FAMILY)) {
- ret = snprintf(buf + offset, len, ",\"family\":\"%s\"",
+ ret = snprintf(buf + offset, remain, ",\"family\":\"%s\"",
nftnl_family2str(s->family));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_KEY_TYPE)) {
- ret = snprintf(buf + offset, len, ",\"key_type\":%u",
+ ret = snprintf(buf + offset, remain, ",\"key_type\":%u",
s->key_type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_KEY_LEN)) {
- ret = snprintf(buf + offset, len, ",\"key_len\":%u",
+ ret = snprintf(buf + offset, remain, ",\"key_len\":%u",
s->key_len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if(s->flags & (1 << NFTNL_SET_DATA_TYPE)) {
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
",\"data_type\":%u", s->data_type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if(s->flags & (1 << NFTNL_SET_DATA_LEN)) {
- ret = snprintf(buf + offset, len, ",\"data_len\":%u", s->data_len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ",\"data_len\":%u",
+ s->data_len);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_OBJ_TYPE)) {
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
",\"obj_type\":%u", s->obj_type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_POLICY)) {
- ret = snprintf(buf + offset, len, ",\"policy\":%u",
+ ret = snprintf(buf + offset, remain, ",\"policy\":%u",
s->policy);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_DESC_SIZE)) {
- ret = snprintf(buf + offset, len, ",\"desc_size\":%u",
+ ret = snprintf(buf + offset, remain, ",\"desc_size\":%u",
s->desc.size);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
/* Empty set? Skip printinf of elements */
if (list_empty(&s->element_list)){
- ret = snprintf(buf + offset, len, "}}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
- ret = snprintf(buf + offset, len, ",\"set_elem\":[");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ",\"set_elem\":[");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
list_for_each_entry(elem, &s->element_list, head) {
- ret = snprintf(buf + offset, len, "{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_set_elem_snprintf(buf + offset, len, elem, type,
+ ret = nftnl_set_elem_snprintf(buf + offset, remain, elem, type,
flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "},");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "},");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
/* Overwrite trailing ", " from last set element */
offset --;
- ret = snprintf(buf + offset, len, "]}}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "]}}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
uint32_t type, uint32_t flags)
{
int ret;
- int len = size, offset = 0;
+ int remain = size, offset = 0;
struct nftnl_set_elem *elem;
- ret = snprintf(buf, len, "%s %s %x",
+ ret = snprintf(buf, remain, "%s %s %x",
s->name, s->table, s->set_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (s->flags & (1 << NFTNL_SET_TIMEOUT)) {
- ret = snprintf(buf + offset, len, " timeout %"PRIu64"ms",
+ ret = snprintf(buf + offset, remain, " timeout %"PRIu64"ms",
s->timeout);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_GC_INTERVAL)) {
- ret = snprintf(buf + offset, len, " gc_interval %ums",
+ ret = snprintf(buf + offset, remain, " gc_interval %ums",
s->gc_interval);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_POLICY)) {
- ret = snprintf(buf + offset, len, " policy %u", s->policy);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " policy %u", s->policy);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_DESC_SIZE)) {
- ret = snprintf(buf + offset, len, " size %u", s->desc.size);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " size %u", s->desc.size);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
/* Empty set? Skip printinf of elements */
if (list_empty(&s->element_list))
return offset;
- ret = snprintf(buf+offset, len, "\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
list_for_each_entry(elem, &s->element_list, head) {
- ret = snprintf(buf+offset, len, "\t");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\t");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_set_elem_snprintf(buf+offset, len, elem, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_set_elem_snprintf(buf + offset, remain, elem, type,
+ flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
const struct nftnl_set *s, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
uint32_t inner_flags = flags;
if (type == NFTNL_OUTPUT_XML)
/* prevent set_elems to print as events */
inner_flags &= ~NFTNL_OF_EVENT_ANY;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_set_snprintf_default(buf+offset, len, s, type,
+ ret = nftnl_set_snprintf_default(buf + offset, remain, s, type,
inner_flags);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_set_snprintf_json(buf+offset, len, s, type,
+ ret = nftnl_set_snprintf_json(buf + offset, remain, s, type,
inner_flags);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_set_elem *e,
uint32_t flags)
{
- int ret, len = size, offset = 0, type = -1;
+ int ret, remain = size, offset = 0, type = -1;
if (e->flags & (1 << NFTNL_SET_ELEM_FLAGS)) {
- ret = snprintf(buf, len, "\"flags\":%u,", e->set_elem_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "\"flags\":%u,", e->set_elem_flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf + offset, len, "\"key\":{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\"key\":{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &e->key,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &e->key,
NFTNL_OUTPUT_JSON, flags, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_SET_ELEM_DATA))
type = DATA_VALUE;
type = DATA_VERDICT;
if (type != -1) {
- ret = snprintf(buf + offset, len, ",\"data\":{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ",\"data\":{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &e->data,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &e->data,
NFTNL_OUTPUT_JSON, flags, type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
static int nftnl_set_elem_snprintf_default(char *buf, size_t size,
const struct nftnl_set_elem *e)
{
- int ret, len = size, offset = 0, i;
+ int ret, remain = size, offset = 0, i;
- ret = snprintf(buf, len, "element ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "element ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < div_round_up(e->key.len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "%.8x ", e->key.val[i]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%.8x ", e->key.val[i]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, " : ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " : ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < div_round_up(e->data.len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "%.8x ", e->data.val[i]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%.8x ", e->data.val[i]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "%u [end]", e->set_elem_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%u [end]", e->set_elem_flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->user.len) {
- ret = snprintf(buf+offset, len, " userdata = {");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " userdata = {");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < e->user.len; i++) {
char *c = e->user.data;
- ret = snprintf(buf+offset, len, "%c",
+ ret = snprintf(buf + offset, remain, "%c",
isalnum(c[i]) ? c[i] : 0);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, " }\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " }\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
uint32_t cmd, uint32_t type,
uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
if (type == NFTNL_OUTPUT_XML)
return 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_set_elem_snprintf_default(buf+offset, len, e);
+ ret = nftnl_set_elem_snprintf_default(buf + offset, remain, e);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_set_elem_snprintf_json(buf+offset, len, e, flags);
+ ret = nftnl_set_elem_snprintf_json(buf + offset, remain, e,
+ flags);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
const struct nftnl_table *t, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_table_snprintf_default(buf+offset, len, t);
+ ret = nftnl_table_snprintf_default(buf + offset, remain, t);
break;
case NFTNL_OUTPUT_XML:
case NFTNL_OUTPUT_JSON:
- ret = nftnl_table_export(buf+offset, len, t, type);
+ ret = nftnl_table_export(buf + offset, remain, t, type);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}