uint64_t handle;
uint32_t use;
uint32_t flags;
+ uint32_t owner;
struct {
void *data;
uint32_t len;
case NFTNL_TABLE_FLAGS:
case NFTNL_TABLE_HANDLE:
case NFTNL_TABLE_FAMILY:
- break;
case NFTNL_TABLE_USE:
+ case NFTNL_TABLE_OWNER:
break;
}
t->flags &= ~(1 << attr);
memcpy(t->user.data, data, data_len);
t->user.len = data_len;
break;
+ case NFTNL_TABLE_OWNER:
+ memcpy(&t->owner, data, sizeof(t->owner));
+ break;
}
t->flags |= (1 << attr);
return 0;
case NFTNL_TABLE_USERDATA:
*data_len = t->user.len;
return t->user.data;
+ case NFTNL_TABLE_OWNER:
+ *data_len = sizeof(uint32_t);
+ return &t->owner;
}
return NULL;
}
break;
case NFTA_TABLE_FLAGS:
case NFTA_TABLE_USE:
+ case NFTA_TABLE_OWNER:
if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0)
abi_breakage();
break;
if (ret < 0)
return ret;
}
+ if (tb[NFTA_TABLE_OWNER]) {
+ t->owner = ntohl(mnl_attr_get_u32(tb[NFTA_TABLE_OWNER]));
+ t->flags |= (1 << NFTNL_TABLE_OWNER);
+ }
t->family = nfg->nfgen_family;
t->flags |= (1 << NFTNL_TABLE_FAMILY);