static int nft_rule_expr_match_json_parse(struct nft_rule_expr *e, json_t *root, struct nft_parse_err *err) { #ifdef JSON_PARSING const char *name; name = nft_jansson_parse_str(root, "name", err); if (name != NULL) nft_rule_expr_set_str(e, NFT_EXPR_MT_NAME, name); return 0; #else errno = EOPNOTSUPP; return -1; #endif }
static int nft_rule_expr_log_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree, struct nft_parse_err *err) { #ifdef XML_PARSING const char *prefix; uint32_t snaplen, level, flags; uint16_t group, qthreshold; prefix = nft_mxml_str_parse(tree, "prefix", MXML_DESCEND_FIRST, NFT_XML_MAND, err); if (prefix != NULL) nft_rule_expr_set_str(e, NFT_EXPR_LOG_PREFIX, prefix); if (nft_mxml_num_parse(tree, "group", MXML_DESCEND_FIRST, BASE_DEC, &group, NFT_TYPE_U16, NFT_XML_MAND, err) == 0) nft_rule_expr_set_u16(e, NFT_EXPR_LOG_GROUP, group); if (nft_mxml_num_parse(tree, "snaplen", MXML_DESCEND_FIRST, BASE_DEC, &snaplen, NFT_TYPE_U32, NFT_XML_MAND, err) == 0) nft_rule_expr_set_u32(e, NFT_EXPR_LOG_SNAPLEN, snaplen); if (nft_mxml_num_parse(tree, "qthreshold", MXML_DESCEND_FIRST, BASE_DEC, &qthreshold, NFT_TYPE_U16, NFT_XML_MAND, err) == 0) nft_rule_expr_set_u16(e, NFT_EXPR_LOG_QTHRESHOLD, qthreshold); if (nft_mxml_num_parse(tree, "level", MXML_DESCEND_FIRST, BASE_DEC, &level, NFT_TYPE_U16, NFT_XML_MAND, err) == 0) nft_rule_expr_set_u32(e, NFT_EXPR_LOG_LEVEL, level); if (nft_mxml_num_parse(tree, "flags", MXML_DESCEND_FIRST, BASE_DEC, &flags, NFT_TYPE_U16, NFT_XML_MAND, err) == 0) nft_rule_expr_set_u32(e, NFT_EXPR_LOG_FLAGS, flags); return 0; #else errno = EOPNOTSUPP; return -1; #endif }
static int nft_rule_expr_match_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree, struct nft_parse_err *err) { #ifdef XML_PARSING const char *name; name = nft_mxml_str_parse(tree, "name", MXML_DESCEND_FIRST, NFT_XML_MAND, err); if (name != NULL) nft_rule_expr_set_str(e, NFT_EXPR_MT_NAME, name); /* mt->info is ignored until other solution is reached */ return 0; #else errno = EOPNOTSUPP; return -1; #endif }
static int nft_rule_expr_log_json_parse(struct nft_rule_expr *e, json_t *root, struct nft_parse_err *err) { #ifdef JSON_PARSING const char *prefix; uint32_t snaplen, level, flags; uint16_t group, qthreshold; prefix = nft_jansson_parse_str(root, "prefix", err); if (prefix != NULL) nft_rule_expr_set_str(e, NFT_EXPR_LOG_PREFIX, prefix); if (nft_jansson_parse_val(root, "group", NFT_TYPE_U16, &group, err) == 0) nft_rule_expr_set_u16(e, NFT_EXPR_LOG_GROUP, group); if (nft_jansson_parse_val(root, "snaplen", NFT_TYPE_U32, &snaplen, err) == 0) nft_rule_expr_set_u32(e, NFT_EXPR_LOG_SNAPLEN, snaplen); if (nft_jansson_parse_val(root, "qthreshold", NFT_TYPE_U16, &qthreshold, err) == 0) nft_rule_expr_set_u16(e, NFT_EXPR_LOG_QTHRESHOLD, qthreshold); if (nft_jansson_parse_val(root, "level", NFT_TYPE_U32, &level, err) == 0) nft_rule_expr_set_u32(e, NFT_EXPR_LOG_LEVEL, level); if (nft_jansson_parse_val(root, "flags", NFT_TYPE_U32, &flags, err) == 0) nft_rule_expr_set_u32(e, NFT_EXPR_LOG_FLAGS, flags); return 0; #else errno = EOPNOTSUPP; return -1; #endif }