PFNV_CHK
PFNV_CHK(pf_nvuint64(nvl, "id", &id));
PFNV_CHK(pf_nvuint64(nvl, "creatorid", &creatorid));
PFNV_CHK(pf_nvbinary(nvl, "addr", &krule->addr, sizeof(krule->addr)));
PFNV_CHK(pf_nvbool(nvl, "neg", &krule->neg));
PFNV_CHK(pf_nvbinary(nvl, "mask", &krule->mask,
PFNV_CHK(pf_nvuint32_opt(nvl, "ridentifier", &krule->ridentifier, 0));
PFNV_CHK(pf_nvuint32(nvl, "nr", &krule->nr));
PFNV_CHK(pf_nvbool(nvl, "quick", &krule->quick));
PFNV_CHK(pf_nvstring(nvl, "ifname", krule->ifname,
PFNV_CHK(pf_nvbool(nvl, "ifnot", &krule->ifnot));
PFNV_CHK(pf_nvuint8(nvl, "direction", &krule->direction));
PFNV_CHK(pf_nvuint16(nvl, "proto", &krule->proto));
PFNV_CHK(pf_nvstring(nvl, "match_tagname", krule->match_tagname,
PFNV_CHK(pf_nvbool(nvl, "match_tag_not", &krule->match_tag_not));
PFNV_CHK(pf_nvstring(nvl, "qname", krule->qname, sizeof(krule->qname)));
PFNV_CHK(pf_nvstring(nvl, "tagname", krule->tagname,
PFNV_CHK(pf_nvuint16_opt(nvl, "dnpipe", &krule->dnpipe, 0));
PFNV_CHK(pf_nvuint32_opt(nvl, "dnflags", &krule->dnflags, 0));
PFNV_CHK(pf_nvstring(nvl, "bridge_to", krule->bridge_to_name,
PFNV_CHK(pf_nvuint8(nvl, "action", &krule->action));
PFNV_CHK(pf_nvuint8(nvl, "offset", &mape->offset));
PFNV_CHK(pf_nvuint8(nvl, "psidlen", &mape->psidlen));
PFNV_CHK(pf_nvuint16(nvl, "psid", &mape->psid));
PFNV_CHK(pf_nvbinary(nvl, "key", &kpool->key, sizeof(kpool->key)));
PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "counter"),
PFNV_CHK(pf_nvint(nvl, "tblidx", &kpool->tblidx));
PFNV_CHK(pf_nvuint16_array(nvl, "proxy_port", kpool->proxy_port, 2,
PFNV_CHK(pf_nvuint8(nvl, "opts", &kpool->opts));
PFNV_CHK(pf_nvmape_to_mape(nvlist_get_nvlist(nvl, "mape"),
PFNV_CHK(pf_nvuint8(nvl, "type", &addr->type));
PFNV_CHK(pf_nvuint8(nvl, "iflags", &addr->iflags));
PFNV_CHK(pf_nvstring(nvl, "ifname", addr->v.ifname,
PFNV_CHK(pf_nvstring(nvl, "tblname", addr->v.tblname,
PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "addr"),
PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "mask"),
PFNV_CHK(pf_nvaddr_wrap_to_addr_wrap(nvlist_get_nvlist(nvl, "addr"),
PFNV_CHK(pf_nvuint16_array(nvl, "port", addr->port, 2, NULL));
PFNV_CHK(pf_nvuint8(nvl, "neg", &addr->neg));
PFNV_CHK(pf_nvuint8(nvl, "port_op", &addr->port_op));
PFNV_CHK(pf_validate_op(addr->port_op));
PFNV_CHK(pf_nvuint32_array(nvl, "uid", uid->uid, 2, NULL));
PFNV_CHK(pf_nvuint8(nvl, "op", &uid->op));
PFNV_CHK(pf_validate_op(uid->op));
PFNV_CHK(pf_nvuint32(nvl, "nr", &rule->nr));
PFNV_CHK(pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "dst"),
PFNV_CHK(pf_nvstring(nvl, "label", rule->label[0],
PFNV_CHK(pf_nvuint32_opt(nvl, "ridentifier", &rule->ridentifier, 0));
PFNV_CHK(pf_nvstring(nvl, "ifname", rule->ifname,
PFNV_CHK(pf_nvstring(nvl, "qname", rule->qname, sizeof(rule->qname)));
PFNV_CHK(pf_nvstring(nvl, "pqname", rule->pqname,
PFNV_CHK(pf_nvstring(nvl, "tagname", rule->tagname,
PFNV_CHK(pf_nvuint16_opt(nvl, "dnpipe", &rule->dnpipe, 0));
PFNV_CHK(pf_nvuint16_opt(nvl, "dnrpipe", &rule->dnrpipe, 0));
PFNV_CHK(pf_nvuint32_opt(nvl, "dnflags", &rule->free_flags, 0));
PFNV_CHK(pf_nvstring(nvl, "match_tagname", rule->match_tagname,
PFNV_CHK(pf_nvstring(nvl, "overload_tblname", rule->overload_tblname,
PFNV_CHK(pf_nvpool_to_pool(nvlist_get_nvlist(nvl, "rpool"),
PFNV_CHK(pf_nvuint32(nvl, "os_fingerprint", &rule->os_fingerprint));
PFNV_CHK(pf_nvint(nvl, "rtableid", &rule->rtableid));
PFNV_CHK(pf_nvuint32_array(nvl, "timeout", rule->timeout, PFTM_MAX, NULL));
PFNV_CHK(pf_nvuint32(nvl, "max_states", &rule->max_states));
PFNV_CHK(pf_nvuint32(nvl, "max_src_nodes", &rule->max_src_nodes));
PFNV_CHK(pf_nvuint32(nvl, "max_src_states", &rule->max_src_states));
PFNV_CHK(pf_nvuint32(nvl, "max_src_conn", &rule->max_src_conn));
PFNV_CHK(pf_nvuint32(nvl, "max_src_conn_rate.limit",
PFNV_CHK(pf_nvuint32(nvl, "max_src_conn_rate.seconds",
PFNV_CHK(pf_nvuint32(nvl, "prob", &rule->prob));
PFNV_CHK(pf_nvuint32(nvl, "cuid", &rule->cuid));
PFNV_CHK(pf_nvuint32(nvl, "cpid", &rule->cpid));
PFNV_CHK(pf_nvuint16(nvl, "return_icmp", &rule->return_icmp));
PFNV_CHK(pf_nvuint16(nvl, "return_icmp6", &rule->return_icmp6));
PFNV_CHK(pf_nvuint16(nvl, "max_mss", &rule->max_mss));
PFNV_CHK(pf_nvuint16(nvl, "scrub_flags", &rule->scrub_flags));
PFNV_CHK(pf_nvrule_uid_to_rule_uid(nvlist_get_nvlist(nvl, "uid"),
PFNV_CHK(pf_nvrule_gid_to_rule_gid(nvlist_get_nvlist(nvl, "gid"),
PFNV_CHK(pf_nvuint32(nvl, "rule_flag", &rule->rule_flag));
PFNV_CHK(pf_nvuint8(nvl, "action", &rule->action));
PFNV_CHK(pf_nvuint8(nvl, "direction", &rule->direction));
PFNV_CHK(pf_nvuint8(nvl, "log", &rule->log));
PFNV_CHK(pf_nvuint8(nvl, "logif", &rule->logif));
PFNV_CHK(pf_nvuint8(nvl, "quick", &rule->quick));
PFNV_CHK(pf_nvuint8(nvl, "ifnot", &rule->ifnot));
PFNV_CHK(pf_nvuint8(nvl, "match_tag_not", &rule->match_tag_not));
PFNV_CHK(pf_nvuint8(nvl, "natpass", &rule->natpass));
PFNV_CHK(pf_nvuint8(nvl, "keep_state", &rule->keep_state));
PFNV_CHK(pf_nvuint8(nvl, "af", &rule->af));
PFNV_CHK(pf_nvuint8(nvl, "proto", &rule->proto));
PFNV_CHK(pf_nvuint8(nvl, "type", &tmp));
PFNV_CHK(pf_nvuint8(nvl, "code", &tmp));
PFNV_CHK(pf_nvuint8(nvl, "flags", &rule->flags));
PFNV_CHK(pf_nvuint8(nvl, "flagset", &rule->flagset));
PFNV_CHK(pf_nvuint8(nvl, "min_ttl", &rule->min_ttl));
PFNV_CHK(pf_nvuint8(nvl, "allow_opts", &rule->allow_opts));
PFNV_CHK(pf_nvuint8(nvl, "rt", &rule->rt));
PFNV_CHK(pf_nvuint8(nvl, "return_ttl", &rule->return_ttl));
PFNV_CHK(pf_nvuint8(nvl, "tos", &rule->tos));
PFNV_CHK(pf_nvuint8(nvl, "set_tos", &rule->set_tos));
PFNV_CHK(pf_nvuint8(nvl, "flush", &rule->flush));
PFNV_CHK(pf_nvuint8(nvl, "prio", &rule->prio));
PFNV_CHK(pf_nvuint8_array(nvl, "set_prio", rule->set_prio, 2, NULL));
PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvldivert, "addr"),
PFNV_CHK(pf_nvuint16(nvldivert, "port", &rule->divert.port));
PFNV_CHK(pf_check_rule_addr(&rule->src));
PFNV_CHK(pf_check_rule_addr(&rule->dst));
PFNV_CHK(pf_nvuint64(nvl, "id", &cmp->id));
PFNV_CHK(pf_nvuint32(nvl, "creatorid", &cmp->creatorid));
PFNV_CHK(pf_nvuint8(nvl, "direction", &cmp->direction));
PFNV_CHK(pf_nvstate_cmp_to_state_cmp(nvlist_get_nvlist(nvl, "cmp"),
PFNV_CHK(pf_nvuint8(nvl, "af", &kill->psk_af));
PFNV_CHK(pf_nvint(nvl, "proto", &kill->psk_proto));
PFNV_CHK(pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "src"),
PFNV_CHK(pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "dst"),
PFNV_CHK(pf_nvrule_addr_to_rule_addr(
PFNV_CHK(pf_nvstring(nvl, "ifname", kill->psk_ifname,
PFNV_CHK(pf_nvstring(nvl, "label", kill->psk_label,
PFNV_CHK(pf_nvbool(nvl, "kill_match", &kill->psk_kill_match));
PFNV_CHK(pf_nvbool(nvl, "nat", &kill->psk_nat));
PFNV_CHK(pf_nvuint32_opt(nvl, "highwater", &hiwat,
PFNV_CHK(pf_nvuint32_opt(nvl, "lowwater", &lowat,