switch(attr) {
case NFTNL_CHAIN_NAME:
+ *data_len = strlen(c->name) + 1;
return c->name;
case NFTNL_CHAIN_TABLE:
+ *data_len = strlen(c->table) + 1;
return c->table;
case NFTNL_CHAIN_HOOKNUM:
*data_len = sizeof(uint32_t);
*data_len = sizeof(uint32_t);
return c->type;
case NFTNL_CHAIN_DEV:
+ *data_len = strlen(c->dev) + 1;
return c->dev;
}
return NULL;
switch(type) {
case NFTNL_EXPR_NAME:
+ *data_len = strlen(expr->ops->name) + 1;
ret = expr->ops->name;
break;
default:
*data_len = sizeof(dynset->timeout);
return &dynset->timeout;
case NFTNL_EXPR_DYNSET_SET_NAME:
+ *data_len = strlen(dynset->set_name) + 1;
return dynset->set_name;
case NFTNL_EXPR_DYNSET_SET_ID:
+ *data_len = sizeof(dynset->set_id);
return &dynset->set_id;
case NFTNL_EXPR_DYNSET_EXPR:
+ *data_len = 0;
return dynset->expr;
}
return NULL;
*data_len = sizeof(lookup->dreg);
return &lookup->dreg;
case NFTNL_EXPR_LOOKUP_SET:
+ *data_len = strlen(lookup->set_name) + 1;
return lookup->set_name;
case NFTNL_EXPR_LOOKUP_SET_ID:
+ *data_len = sizeof(lookup->set_id);
return &lookup->set_id;
case NFTNL_EXPR_LOOKUP_FLAGS:
+ *data_len = sizeof(lookup->flags);
return &lookup->flags;
}
return NULL;
switch(attr) {
case NFTNL_GEN_ID:
+ *data_len = sizeof(gen->id);
return &gen->id;
}
return NULL;
*data_len = sizeof(uint32_t);
return &r->family;
case NFTNL_RULE_TABLE:
+ *data_len = strlen(r->table) + 1;
return r->table;
case NFTNL_RULE_CHAIN:
+ *data_len = strlen(r->chain) + 1;
return r->chain;
case NFTNL_RULE_HANDLE:
*data_len = sizeof(uint64_t);
switch(attr) {
case NFTNL_SET_TABLE:
+ *data_len = strlen(s->table) + 1;
return s->table;
case NFTNL_SET_NAME:
+ *data_len = strlen(s->name) + 1;
return s->name;
case NFTNL_SET_FLAGS:
*data_len = sizeof(uint32_t);
switch(attr) {
case NFTNL_SET_ELEM_FLAGS:
+ *data_len = sizeof(s->set_elem_flags);
return &s->set_elem_flags;
case NFTNL_SET_ELEM_KEY: /* NFTA_SET_ELEM_KEY */
*data_len = s->key.len;
return &s->key.val;
case NFTNL_SET_ELEM_VERDICT: /* NFTA_SET_ELEM_DATA */
+ *data_len = sizeof(s->data.verdict);
return &s->data.verdict;
case NFTNL_SET_ELEM_CHAIN: /* NFTA_SET_ELEM_DATA */
+ *data_len = strlen(s->data.chain) + 1;
return s->data.chain;
case NFTNL_SET_ELEM_DATA: /* NFTA_SET_ELEM_DATA */
*data_len = s->data.len;
return &s->data.val;
case NFTNL_SET_ELEM_TIMEOUT: /* NFTA_SET_ELEM_TIMEOUT */
+ *data_len = sizeof(s->timeout);
return &s->timeout;
case NFTNL_SET_ELEM_EXPIRATION: /* NFTA_SET_ELEM_EXPIRATION */
+ *data_len = sizeof(s->expiration);
return &s->expiration;
case NFTNL_SET_ELEM_USERDATA:
*data_len = s->user.len;
return s->user.data;
case NFTNL_SET_ELEM_EXPR:
+ *data_len = 0;
return s->expr;
}
return NULL;
switch(attr) {
case NFTNL_TABLE_NAME:
+ *data_len = strlen(t->name) + 1;
return t->name;
case NFTNL_TABLE_FLAGS:
*data_len = sizeof(uint32_t);
*data_len = sizeof(uint32_t);
return &trace->type;
case NFTNL_TRACE_CHAIN:
- *data_len = strlen(trace->chain);
+ *data_len = strlen(trace->chain) + 1;
return trace->chain;
case NFTNL_TRACE_TABLE:
- *data_len = strlen(trace->table);
+ *data_len = strlen(trace->table) + 1;
return trace->table;
case NFTNL_TRACE_JUMP_TARGET:
- *data_len = strlen(trace->jump_target);
+ *data_len = strlen(trace->jump_target) + 1;
return trace->jump_target;
case NFTNL_TRACE_TRANSPORT_HEADER:
*data_len = trace->th.len;