case NFTNL_SET_KEY_LEN:
case NFTNL_SET_DATA_TYPE:
case NFTNL_SET_DATA_LEN:
+ case NFTNL_SET_OBJ_TYPE:
case NFTNL_SET_FAMILY:
case NFTNL_SET_ID:
case NFTNL_SET_POLICY:
[NFTNL_SET_KEY_LEN] = sizeof(uint32_t),
[NFTNL_SET_DATA_TYPE] = sizeof(uint32_t),
[NFTNL_SET_DATA_LEN] = sizeof(uint32_t),
+ [NFTNL_SET_OBJ_TYPE] = sizeof(uint32_t),
[NFTNL_SET_FAMILY] = sizeof(uint32_t),
[NFTNL_SET_POLICY] = sizeof(uint32_t),
[NFTNL_SET_DESC_SIZE] = sizeof(uint32_t),
case NFTNL_SET_DATA_LEN:
s->data_len = *((uint32_t *)data);
break;
+ case NFTNL_SET_OBJ_TYPE:
+ s->obj_type = *((uint32_t *)data);
+ break;
case NFTNL_SET_FAMILY:
s->family = *((uint32_t *)data);
break;
case NFTNL_SET_DATA_LEN:
*data_len = sizeof(uint32_t);
return &s->data_len;
+ case NFTNL_SET_OBJ_TYPE:
+ *data_len = sizeof(uint32_t);
+ return &s->obj_type;
case NFTNL_SET_FAMILY:
*data_len = sizeof(uint32_t);
return &s->family;
mnl_attr_put_u32(nlh, NFTA_SET_DATA_TYPE, htonl(s->data_type));
if (s->flags & (1 << NFTNL_SET_DATA_LEN))
mnl_attr_put_u32(nlh, NFTA_SET_DATA_LEN, htonl(s->data_len));
+ if (s->flags & (1 << NFTNL_SET_OBJ_TYPE))
+ mnl_attr_put_u32(nlh, NFTA_SET_OBJ_TYPE, htonl(s->obj_type));
if (s->flags & (1 << NFTNL_SET_ID))
mnl_attr_put_u32(nlh, NFTA_SET_ID, htonl(s->id));
if (s->flags & (1 << NFTNL_SET_POLICY))
s->data_len = ntohl(mnl_attr_get_u32(tb[NFTA_SET_DATA_LEN]));
s->flags |= (1 << NFTNL_SET_DATA_LEN);
}
+ if (tb[NFTA_SET_OBJ_TYPE]) {
+ s->obj_type = ntohl(mnl_attr_get_u32(tb[NFTA_SET_OBJ_TYPE]));
+ s->flags |= (1 << NFTNL_SET_OBJ_TYPE);
+ }
if (tb[NFTA_SET_ID]) {
s->id = ntohl(mnl_attr_get_u32(tb[NFTA_SET_ID]));
s->flags |= (1 << NFTNL_SET_ID);
nftnl_set_set_u32(s, NFTNL_SET_DATA_LEN, data_len);
}
+ if (nftnl_jansson_node_exist(root, "obj_type")) {
+ if (nftnl_jansson_parse_val(root, "obj_type", NFTNL_TYPE_U32,
+ &data_type, err) < 0)
+ return -1;
+
+ nftnl_set_set_u32(s, NFTNL_SET_OBJ_TYPE, data_type);
+ }
+
if (nftnl_jansson_node_exist(root, "policy")) {
if (nftnl_jansson_parse_val(root, "policy", NFTNL_TYPE_U32,
&policy, err) < 0)
ret = snprintf(buf + offset, len, ",\"data_len\":%u", s->data_len);
SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
}
+ if (s->flags & (1 << NFTNL_SET_OBJ_TYPE)) {
+ ret = snprintf(buf + offset, len,
+ ",\"obj_type\":%u", s->obj_type);
+ SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ }
if (s->flags & (1 << NFTNL_SET_POLICY)) {
ret = snprintf(buf + offset, len, ",\"policy\":%u",