static int nft_rule_expr_bitwise_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_BITWISE_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_BITWISE_SREG: case NFTA_BITWISE_DREG: case NFTA_BITWISE_LEN: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; case NFTA_BITWISE_MASK: case NFTA_BITWISE_XOR: if (mnl_attr_validate(attr, MNL_TYPE_BINARY) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nftnl_expr_target_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_TARGET_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_TARGET_NAME: if (mnl_attr_validate(attr, MNL_TYPE_NUL_STRING) < 0) abi_breakage(); break; case NFTA_TARGET_REV: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; case NFTA_TARGET_INFO: if (mnl_attr_validate(attr, MNL_TYPE_BINARY) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nft_rule_expr_log_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_LOG_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_LOG_PREFIX: if (mnl_attr_validate(attr, MNL_TYPE_STRING) < 0) abi_breakage(); break; case NFTA_LOG_GROUP: case NFTA_LOG_QTHRESHOLD: if (mnl_attr_validate(attr, MNL_TYPE_U16) < 0) abi_breakage(); break; case NFTA_LOG_SNAPLEN: case NFTA_LOG_LEVEL: case NFTA_LOG_FLAGS: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nftnl_expr_lookup_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_LOOKUP_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_LOOKUP_SREG: case NFTA_LOOKUP_DREG: case NFTA_LOOKUP_SET_ID: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; case NFTA_LOOKUP_SET: if (mnl_attr_validate(attr, MNL_TYPE_STRING) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nft_rule_expr_ct_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_CT_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_CT_KEY: case NFTA_CT_DREG: case NFTA_CT_SREG: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; case NFTA_CT_DIRECTION: if (mnl_attr_validate(attr, MNL_TYPE_U8) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nftnl_gen_parse_attr_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_GEN_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_GEN_ID: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nftnl_expr_queue_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_QUEUE_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_QUEUE_NUM: case NFTA_QUEUE_TOTAL: case NFTA_QUEUE_FLAGS: if (mnl_attr_validate(attr, MNL_TYPE_U16) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nftnl_expr_payload_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_PAYLOAD_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_PAYLOAD_DREG: case NFTA_PAYLOAD_BASE: case NFTA_PAYLOAD_OFFSET: case NFTA_PAYLOAD_LEN: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nft_rule_expr_byteorder_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_BYTEORDER_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_BYTEORDER_SREG: case NFTA_BYTEORDER_DREG: case NFTA_BYTEORDER_OP: case NFTA_BYTEORDER_LEN: case NFTA_BYTEORDER_SIZE: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }
static int nft_rule_expr_nat_cb(const struct nlattr *attr, void *data) { const struct nlattr **tb = data; int type = mnl_attr_get_type(attr); if (mnl_attr_type_valid(attr, NFTA_NAT_MAX) < 0) return MNL_CB_OK; switch(type) { case NFTA_NAT_TYPE: case NFTA_NAT_FAMILY: case NFTA_NAT_REG_ADDR_MIN: case NFTA_NAT_REG_ADDR_MAX: case NFTA_NAT_REG_PROTO_MIN: case NFTA_NAT_REG_PROTO_MAX: case NFTA_NAT_FLAGS: if (mnl_attr_validate(attr, MNL_TYPE_U32) < 0) abi_breakage(); break; } tb[type] = attr; return MNL_CB_OK; }