Lines Matching refs:nvl

42 	pf_nv ## fnname ## _opt(const nvlist_t *nvl, const char *name,		\
46 if (! nvlist_exists_number(nvl, name)) { \
50 raw = nvlist_get_number(nvl, name); \
57 pf_nv ## fnname(const nvlist_t *nvl, const char *name, type *val) \
60 if (! nvlist_exists_number(nvl, name)) \
62 raw = nvlist_get_number(nvl, name); \
69 pf_nv ## fnname ## _array(const nvlist_t *nvl, const char *name, \
75 if (! nvlist_exists_number_array(nvl, name)) \
77 n = nvlist_get_number_array(nvl, name, &nitems); \
90 pf_ ## fnname ## _array_nv(nvlist_t *nvl, const char *name, \
96 nvlist_append_number_array(nvl, name, tmp); \
101 pf_nvbool(const nvlist_t *nvl, const char *name, bool *val)
103 if (! nvlist_exists_bool(nvl, name))
106 *val = nvlist_get_bool(nvl, name);
112 pf_nvbinary(const nvlist_t *nvl, const char *name, void *data,
120 if (! nvlist_exists_binary(nvl, name))
123 nvdata = (const uint8_t *)nvlist_get_binary(nvl, name, &len);
138 pf_nvint(const nvlist_t *nvl, const char *name, int *val)
142 if (! nvlist_exists_number(nvl, name))
145 raw = nvlist_get_number(nvl, name);
155 pf_nvstring(const nvlist_t *nvl, const char *name, char *str, size_t maxlen)
159 if (! nvlist_exists_string(nvl, name))
162 ret = strlcpy(str, nvlist_get_string(nvl, name), maxlen);
170 pf_nvaddr_to_addr(const nvlist_t *nvl, struct pf_addr *paddr)
172 return (pf_nvbinary(nvl, "addr", paddr, sizeof(*paddr)));
178 nvlist_t *nvl;
180 nvl = nvlist_create(0);
181 if (nvl == NULL)
184 nvlist_add_binary(nvl, "addr", paddr, sizeof(*paddr));
186 return (nvl);
190 pf_nvmape_to_mape(const nvlist_t *nvl, struct pf_mape_portset *mape)
195 PFNV_CHK(pf_nvuint8(nvl, "offset", &mape->offset));
196 PFNV_CHK(pf_nvuint8(nvl, "psidlen", &mape->psidlen));
197 PFNV_CHK(pf_nvuint16(nvl, "psid", &mape->psid));
206 nvlist_t *nvl;
208 nvl = nvlist_create(0);
209 if (nvl == NULL)
212 nvlist_add_number(nvl, "offset", mape->offset);
213 nvlist_add_number(nvl, "psidlen", mape->psidlen);
214 nvlist_add_number(nvl, "psid", mape->psid);
216 return (nvl);
220 pf_nvpool_to_pool(const nvlist_t *nvl, struct pf_kpool *kpool)
224 PFNV_CHK(pf_nvbinary(nvl, "key", &kpool->key, sizeof(kpool->key)));
226 if (nvlist_exists_nvlist(nvl, "counter")) {
227 PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "counter"),
231 PFNV_CHK(pf_nvint(nvl, "tblidx", &kpool->tblidx));
232 PFNV_CHK(pf_nvuint16_array(nvl, "proxy_port", kpool->proxy_port, 2,
234 PFNV_CHK(pf_nvuint8(nvl, "opts", &kpool->opts));
236 if (nvlist_exists_nvlist(nvl, "mape")) {
237 PFNV_CHK(pf_nvmape_to_mape(nvlist_get_nvlist(nvl, "mape"),
248 nvlist_t *nvl;
251 nvl = nvlist_create(0);
252 if (nvl == NULL)
255 nvlist_add_binary(nvl, "key", &pool->key, sizeof(pool->key));
259 nvlist_add_nvlist(nvl, "counter", tmp);
262 nvlist_add_number(nvl, "tblidx", pool->tblidx);
263 pf_uint16_array_nv(nvl, "proxy_port", pool->proxy_port, 2);
264 nvlist_add_number(nvl, "opts", pool->opts);
269 nvlist_add_nvlist(nvl, "mape", tmp);
272 return (nvl);
275 nvlist_destroy(nvl);
280 pf_nvaddr_wrap_to_addr_wrap(const nvlist_t *nvl, struct pf_addr_wrap *addr)
286 PFNV_CHK(pf_nvuint8(nvl, "type", &addr->type));
287 PFNV_CHK(pf_nvuint8(nvl, "iflags", &addr->iflags));
289 PFNV_CHK(pf_nvstring(nvl, "ifname", addr->v.ifname,
292 PFNV_CHK(pf_nvstring(nvl, "tblname", addr->v.tblname,
295 if (! nvlist_exists_nvlist(nvl, "addr"))
297 PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "addr"),
300 if (! nvlist_exists_nvlist(nvl, "mask"))
302 PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "mask"),
324 nvlist_t *nvl;
329 nvl = nvlist_create(0);
330 if (nvl == NULL)
333 nvlist_add_number(nvl, "type", addr->type);
334 nvlist_add_number(nvl, "iflags", addr->iflags);
336 nvlist_add_string(nvl, "ifname", addr->v.ifname);
341 nvlist_add_number(nvl, "dyncnt", num);
344 nvlist_add_string(nvl, "tblname", addr->v.tblname);
352 nvlist_add_number(nvl, "tblcnt", num);
358 nvlist_add_nvlist(nvl, "addr", tmp);
363 nvlist_add_nvlist(nvl, "mask", tmp);
366 return (nvl);
369 nvlist_destroy(nvl);
396 pf_nvrule_addr_to_rule_addr(const nvlist_t *nvl, struct pf_rule_addr *addr)
400 if (! nvlist_exists_nvlist(nvl, "addr"))
403 PFNV_CHK(pf_nvaddr_wrap_to_addr_wrap(nvlist_get_nvlist(nvl, "addr"),
405 PFNV_CHK(pf_nvuint16_array(nvl, "port", addr->port, 2, NULL));
406 PFNV_CHK(pf_nvuint8(nvl, "neg", &addr->neg));
407 PFNV_CHK(pf_nvuint8(nvl, "port_op", &addr->port_op));
418 nvlist_t *nvl;
421 nvl = nvlist_create(0);
422 if (nvl == NULL)
428 nvlist_add_nvlist(nvl, "addr", tmp);
430 pf_uint16_array_nv(nvl, "port", addr->port, 2);
431 nvlist_add_number(nvl, "neg", addr->neg);
432 nvlist_add_number(nvl, "port_op", addr->port_op);
434 return (nvl);
437 nvlist_destroy(nvl);
442 pf_nvrule_uid_to_rule_uid(const nvlist_t *nvl, struct pf_rule_uid *uid)
448 PFNV_CHK(pf_nvuint32_array(nvl, "uid", uid->uid, 2, NULL));
449 PFNV_CHK(pf_nvuint8(nvl, "op", &uid->op));
460 nvlist_t *nvl;
462 nvl = nvlist_create(0);
463 if (nvl == NULL)
466 pf_uint32_array_nv(nvl, "uid", uid->uid, 2);
467 nvlist_add_number(nvl, "op", uid->op);
469 return (nvl);
473 pf_nvrule_gid_to_rule_gid(const nvlist_t *nvl, struct pf_rule_gid *gid)
477 return (pf_nvrule_uid_to_rule_uid(nvl, (struct pf_rule_uid *)gid));
505 pf_nvrule_to_krule(const nvlist_t *nvl, struct pf_krule *rule)
511 PFNV_CHK(pf_nvuint32(nvl, "nr", &rule->nr));
513 if (! nvlist_exists_nvlist(nvl, "src"))
516 error = pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "src"),
521 if (! nvlist_exists_nvlist(nvl, "dst"))
524 PFNV_CHK(pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "dst"),
527 if (nvlist_exists_string(nvl, "label")) {
528 PFNV_CHK(pf_nvstring(nvl, "label", rule->label[0],
530 } else if (nvlist_exists_string_array(nvl, "labels")) {
535 strs = nvlist_get_string_array(nvl, "labels", &items);
547 PFNV_CHK(pf_nvuint32_opt(nvl, "ridentifier", &rule->ridentifier, 0));
548 PFNV_CHK(pf_nvstring(nvl, "ifname", rule->ifname,
550 PFNV_CHK(pf_nvstring(nvl, "qname", rule->qname, sizeof(rule->qname)));
551 PFNV_CHK(pf_nvstring(nvl, "pqname", rule->pqname,
553 PFNV_CHK(pf_nvstring(nvl, "tagname", rule->tagname,
555 PFNV_CHK(pf_nvuint16_opt(nvl, "dnpipe", &rule->dnpipe, 0));
556 PFNV_CHK(pf_nvuint16_opt(nvl, "dnrpipe", &rule->dnrpipe, 0));
557 PFNV_CHK(pf_nvuint32_opt(nvl, "dnflags", &rule->free_flags, 0));
558 PFNV_CHK(pf_nvstring(nvl, "match_tagname", rule->match_tagname,
560 PFNV_CHK(pf_nvstring(nvl, "overload_tblname", rule->overload_tblname,
563 if (! nvlist_exists_nvlist(nvl, "rpool"))
565 PFNV_CHK(pf_nvpool_to_pool(nvlist_get_nvlist(nvl, "rpool"),
568 PFNV_CHK(pf_nvuint32(nvl, "os_fingerprint", &rule->os_fingerprint));
570 PFNV_CHK(pf_nvint(nvl, "rtableid", &rule->rtableid));
571 PFNV_CHK(pf_nvuint32_array(nvl, "timeout", rule->timeout, PFTM_MAX, NULL));
572 PFNV_CHK(pf_nvuint32(nvl, "max_states", &rule->max_states));
573 PFNV_CHK(pf_nvuint32(nvl, "max_src_nodes", &rule->max_src_nodes));
574 PFNV_CHK(pf_nvuint32(nvl, "max_src_states", &rule->max_src_states));
575 PFNV_CHK(pf_nvuint32(nvl, "max_src_conn", &rule->max_src_conn));
576 PFNV_CHK(pf_nvuint32(nvl, "max_src_conn_rate.limit",
578 PFNV_CHK(pf_nvuint32(nvl, "max_src_conn_rate.seconds",
580 PFNV_CHK(pf_nvuint32(nvl, "prob", &rule->prob));
581 PFNV_CHK(pf_nvuint32(nvl, "cuid", &rule->cuid));
582 PFNV_CHK(pf_nvuint32(nvl, "cpid", &rule->cpid));
584 PFNV_CHK(pf_nvuint16(nvl, "return_icmp", &rule->return_icmp));
585 PFNV_CHK(pf_nvuint16(nvl, "return_icmp6", &rule->return_icmp6));
587 PFNV_CHK(pf_nvuint16(nvl, "max_mss", &rule->max_mss));
588 PFNV_CHK(pf_nvuint16(nvl, "scrub_flags", &rule->scrub_flags));
590 if (! nvlist_exists_nvlist(nvl, "uid"))
592 PFNV_CHK(pf_nvrule_uid_to_rule_uid(nvlist_get_nvlist(nvl, "uid"),
595 if (! nvlist_exists_nvlist(nvl, "gid"))
597 PFNV_CHK(pf_nvrule_gid_to_rule_gid(nvlist_get_nvlist(nvl, "gid"),
600 PFNV_CHK(pf_nvuint32(nvl, "rule_flag", &rule->rule_flag));
601 PFNV_CHK(pf_nvuint8(nvl, "action", &rule->action));
602 PFNV_CHK(pf_nvuint8(nvl, "direction", &rule->direction));
603 PFNV_CHK(pf_nvuint8(nvl, "log", &rule->log));
604 PFNV_CHK(pf_nvuint8(nvl, "logif", &rule->logif));
605 PFNV_CHK(pf_nvuint8(nvl, "quick", &rule->quick));
606 PFNV_CHK(pf_nvuint8(nvl, "ifnot", &rule->ifnot));
607 PFNV_CHK(pf_nvuint8(nvl, "match_tag_not", &rule->match_tag_not));
608 PFNV_CHK(pf_nvuint8(nvl, "natpass", &rule->natpass));
610 PFNV_CHK(pf_nvuint8(nvl, "keep_state", &rule->keep_state));
611 PFNV_CHK(pf_nvuint8(nvl, "af", &rule->af));
612 PFNV_CHK(pf_nvuint8(nvl, "proto", &rule->proto));
613 PFNV_CHK(pf_nvuint8(nvl, "type", &rule->type));
614 PFNV_CHK(pf_nvuint8(nvl, "code", &rule->code));
615 PFNV_CHK(pf_nvuint8(nvl, "flags", &rule->flags));
616 PFNV_CHK(pf_nvuint8(nvl, "flagset", &rule->flagset));
617 PFNV_CHK(pf_nvuint8(nvl, "min_ttl", &rule->min_ttl));
618 PFNV_CHK(pf_nvuint8(nvl, "allow_opts", &rule->allow_opts));
619 PFNV_CHK(pf_nvuint8(nvl, "rt", &rule->rt));
620 PFNV_CHK(pf_nvuint8(nvl, "return_ttl", &rule->return_ttl));
621 PFNV_CHK(pf_nvuint8(nvl, "tos", &rule->tos));
622 PFNV_CHK(pf_nvuint8(nvl, "set_tos", &rule->set_tos));
624 PFNV_CHK(pf_nvuint8(nvl, "flush", &rule->flush));
625 PFNV_CHK(pf_nvuint8(nvl, "prio", &rule->prio));
627 PFNV_CHK(pf_nvuint8_array(nvl, "set_prio", rule->set_prio, 2, NULL));
629 if (nvlist_exists_nvlist(nvl, "divert")) {
630 const nvlist_t *nvldivert = nvlist_get_nvlist(nvl, "divert");
662 nvlist_t *nvl;
665 nvl = nvlist_create(0);
666 if (nvl == NULL)
672 nvlist_add_nvlist(nvl, "addr", tmp);
674 nvlist_add_number(nvl, "port", rule->divert.port);
676 return (nvl);
679 nvlist_destroy(nvl);
686 nvlist_t *nvl, *tmp;
688 nvl = nvlist_create(0);
689 if (nvl == NULL)
690 return (nvl);
692 nvlist_add_number(nvl, "nr", rule->nr);
696 nvlist_add_nvlist(nvl, "src", tmp);
701 nvlist_add_nvlist(nvl, "dst", tmp);
705 nvlist_append_number_array(nvl, "skip",
710 nvlist_append_string_array(nvl, "labels", rule->label[i]);
712 nvlist_add_string(nvl, "label", rule->label[0]);
713 nvlist_add_number(nvl, "ridentifier", rule->ridentifier);
714 nvlist_add_string(nvl, "ifname", rule->ifname);
715 nvlist_add_string(nvl, "qname", rule->qname);
716 nvlist_add_string(nvl, "pqname", rule->pqname);
717 nvlist_add_number(nvl, "dnpipe", rule->dnpipe);
718 nvlist_add_number(nvl, "dnrpipe", rule->dnrpipe);
719 nvlist_add_number(nvl, "dnflags", rule->free_flags);
720 nvlist_add_string(nvl, "tagname", rule->tagname);
721 nvlist_add_string(nvl, "match_tagname", rule->match_tagname);
722 nvlist_add_string(nvl, "overload_tblname", rule->overload_tblname);
727 nvlist_add_nvlist(nvl, "rpool", tmp);
730 nvlist_add_number(nvl, "evaluations",
733 nvlist_append_number_array(nvl, "packets",
735 nvlist_append_number_array(nvl, "bytes",
738 nvlist_add_number(nvl, "timestamp", pf_get_timestamp(rule));
740 nvlist_add_number(nvl, "os_fingerprint", rule->os_fingerprint);
742 nvlist_add_number(nvl, "rtableid", rule->rtableid);
743 pf_uint32_array_nv(nvl, "timeout", rule->timeout, PFTM_MAX);
744 nvlist_add_number(nvl, "max_states", rule->max_states);
745 nvlist_add_number(nvl, "max_src_nodes", rule->max_src_nodes);
746 nvlist_add_number(nvl, "max_src_states", rule->max_src_states);
747 nvlist_add_number(nvl, "max_src_conn", rule->max_src_conn);
748 nvlist_add_number(nvl, "max_src_conn_rate.limit",
750 nvlist_add_number(nvl, "max_src_conn_rate.seconds",
752 nvlist_add_number(nvl, "qid", rule->qid);
753 nvlist_add_number(nvl, "pqid", rule->pqid);
754 nvlist_add_number(nvl, "prob", rule->prob);
755 nvlist_add_number(nvl, "cuid", rule->cuid);
756 nvlist_add_number(nvl, "cpid", rule->cpid);
758 nvlist_add_number(nvl, "states_cur",
760 nvlist_add_number(nvl, "states_tot",
762 nvlist_add_number(nvl, "src_nodes",
765 nvlist_add_number(nvl, "return_icmp", rule->return_icmp);
766 nvlist_add_number(nvl, "return_icmp6", rule->return_icmp6);
768 nvlist_add_number(nvl, "max_mss", rule->max_mss);
769 nvlist_add_number(nvl, "scrub_flags", rule->scrub_flags);
774 nvlist_add_nvlist(nvl, "uid", tmp);
779 nvlist_add_nvlist(nvl, "gid", tmp);
782 nvlist_add_number(nvl, "rule_flag", rule->rule_flag);
783 nvlist_add_number(nvl, "action", rule->action);
784 nvlist_add_number(nvl, "direction", rule->direction);
785 nvlist_add_number(nvl, "log", rule->log);
786 nvlist_add_number(nvl, "logif", rule->logif);
787 nvlist_add_number(nvl, "quick", rule->quick);
788 nvlist_add_number(nvl, "ifnot", rule->ifnot);
789 nvlist_add_number(nvl, "match_tag_not", rule->match_tag_not);
790 nvlist_add_number(nvl, "natpass", rule->natpass);
792 nvlist_add_number(nvl, "keep_state", rule->keep_state);
793 nvlist_add_number(nvl, "af", rule->af);
794 nvlist_add_number(nvl, "proto", rule->proto);
795 nvlist_add_number(nvl, "type", rule->type);
796 nvlist_add_number(nvl, "code", rule->code);
797 nvlist_add_number(nvl, "flags", rule->flags);
798 nvlist_add_number(nvl, "flagset", rule->flagset);
799 nvlist_add_number(nvl, "min_ttl", rule->min_ttl);
800 nvlist_add_number(nvl, "allow_opts", rule->allow_opts);
801 nvlist_add_number(nvl, "rt", rule->rt);
802 nvlist_add_number(nvl, "return_ttl", rule->return_ttl);
803 nvlist_add_number(nvl, "tos", rule->tos);
804 nvlist_add_number(nvl, "set_tos", rule->set_tos);
805 nvlist_add_number(nvl, "anchor_relative", rule->anchor_relative);
806 nvlist_add_number(nvl, "anchor_wildcard", rule->anchor_wildcard);
808 nvlist_add_number(nvl, "flush", rule->flush);
809 nvlist_add_number(nvl, "prio", rule->prio);
811 pf_uint8_array_nv(nvl, "set_prio", rule->set_prio, 2);
816 nvlist_add_nvlist(nvl, "divert", tmp);
819 return (nvl);
822 nvlist_destroy(nvl);
827 pf_nvstate_cmp_to_state_cmp(const nvlist_t *nvl, struct pf_state_cmp *cmp)
833 PFNV_CHK(pf_nvuint64(nvl, "id", &cmp->id));
834 PFNV_CHK(pf_nvuint32(nvl, "creatorid", &cmp->creatorid));
835 PFNV_CHK(pf_nvuint8(nvl, "direction", &cmp->direction));
842 pf_nvstate_kill_to_kstate_kill(const nvlist_t *nvl,
849 if (! nvlist_exists_nvlist(nvl, "cmp"))
852 PFNV_CHK(pf_nvstate_cmp_to_state_cmp(nvlist_get_nvlist(nvl, "cmp"),
854 PFNV_CHK(pf_nvuint8(nvl, "af", &kill->psk_af));
855 PFNV_CHK(pf_nvint(nvl, "proto", &kill->psk_proto));
857 if (! nvlist_exists_nvlist(nvl, "src"))
859 PFNV_CHK(pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "src"),
861 if (! nvlist_exists_nvlist(nvl, "dst"))
863 PFNV_CHK(pf_nvrule_addr_to_rule_addr(nvlist_get_nvlist(nvl, "dst"),
865 if (nvlist_exists_nvlist(nvl, "rt_addr")) {
867 nvlist_get_nvlist(nvl, "rt_addr"), &kill->psk_rt_addr));
870 PFNV_CHK(pf_nvstring(nvl, "ifname", kill->psk_ifname,
872 PFNV_CHK(pf_nvstring(nvl, "label", kill->psk_label,
874 PFNV_CHK(pf_nvbool(nvl, "kill_match", &kill->psk_kill_match));
876 if (nvlist_exists_bool(nvl, "nat"))
877 PFNV_CHK(pf_nvbool(nvl, "nat", &kill->psk_nat));
886 nvlist_t *nvl, *tmp;
888 nvl = nvlist_create(0);
889 if (nvl == NULL)
896 nvlist_append_nvlist_array(nvl, "addr", tmp);
898 nvlist_append_number_array(nvl, "port", key->port[i]);
900 nvlist_add_number(nvl, "af", key->af);
901 nvlist_add_number(nvl, "proto", key->proto);
903 return (nvl);
906 nvlist_destroy(nvl);
913 nvlist_t *nvl;
915 nvl = nvlist_create(0);
916 if (nvl == NULL)
919 nvlist_add_number(nvl, "seqlo", peer->seqlo);
920 nvlist_add_number(nvl, "seqhi", peer->seqhi);
921 nvlist_add_number(nvl, "seqdiff", peer->seqdiff);
922 nvlist_add_number(nvl, "state", peer->state);
923 nvlist_add_number(nvl, "wscale", peer->wscale);
925 return (nvl);
931 nvlist_t *nvl, *tmp;
934 nvl = nvlist_create(0);
935 if (nvl == NULL)
938 nvlist_add_number(nvl, "id", s->id);
939 nvlist_add_string(nvl, "ifname", s->kif->pfik_name);
940 nvlist_add_string(nvl, "orig_ifname", s->orig_kif->pfik_name);
945 nvlist_add_nvlist(nvl, "stack_key", tmp);
951 nvlist_add_nvlist(nvl, "wire_key", tmp);
957 nvlist_add_nvlist(nvl, "src", tmp);
963 nvlist_add_nvlist(nvl, "dst", tmp);
969 nvlist_add_nvlist(nvl, "rt_addr", tmp);
972 nvlist_add_number(nvl, "rule", s->rule.ptr ? s->rule.ptr->nr : -1);
973 nvlist_add_number(nvl, "anchor",
975 nvlist_add_number(nvl, "nat_rule",
977 nvlist_add_number(nvl, "creation", s->creation / 1000);
984 nvlist_add_number(nvl, "expire", expire);
987 nvlist_append_number_array(nvl, "packets",
989 nvlist_append_number_array(nvl, "bytes",
993 nvlist_add_number(nvl, "creatorid", s->creatorid);
994 nvlist_add_number(nvl, "direction", s->direction);
995 nvlist_add_number(nvl, "state_flags", s->state_flags);
1000 nvlist_add_number(nvl, "sync_flags", flags);
1002 return (nvl);
1005 nvlist_destroy(nvl);
1010 pf_nveth_rule_addr_to_keth_rule_addr(const nvlist_t *nvl,
1016 PFNV_CHK(pf_nvbinary(nvl, "addr", &krule->addr, sizeof(krule->addr)));
1017 PFNV_CHK(pf_nvbool(nvl, "neg", &krule->neg));
1018 if (nvlist_exists_binary(nvl, "mask"))
1019 PFNV_CHK(pf_nvbinary(nvl, "mask", &krule->mask,
1033 nvlist_t *nvl;
1035 nvl = nvlist_create(0);
1036 if (nvl == NULL)
1039 nvlist_add_binary(nvl, "addr", &krule->addr, sizeof(krule->addr));
1040 nvlist_add_binary(nvl, "mask", &krule->mask, sizeof(krule->mask));
1041 nvlist_add_bool(nvl, "neg", krule->neg);
1043 return (nvl);
1049 nvlist_t *nvl, *addr;
1051 nvl = nvlist_create(0);
1052 if (nvl == NULL)
1056 nvlist_append_string_array(nvl, "labels", krule->label[i]);
1058 nvlist_add_number(nvl, "ridentifier", krule->ridentifier);
1060 nvlist_add_number(nvl, "nr", krule->nr);
1061 nvlist_add_bool(nvl, "quick", krule->quick);
1062 nvlist_add_string(nvl, "ifname", krule->ifname);
1063 nvlist_add_bool(nvl, "ifnot", krule->ifnot);
1064 nvlist_add_number(nvl, "direction", krule->direction);
1065 nvlist_add_number(nvl, "proto", krule->proto);
1066 nvlist_add_string(nvl, "match_tagname", krule->match_tagname);
1067 nvlist_add_number(nvl, "match_tag", krule->match_tag);
1068 nvlist_add_bool(nvl, "match_tag_not", krule->match_tag_not);
1072 nvlist_destroy(nvl);
1075 nvlist_add_nvlist(nvl, "src", addr);
1080 nvlist_destroy(nvl);
1083 nvlist_add_nvlist(nvl, "dst", addr);
1088 nvlist_destroy(nvl);
1091 nvlist_add_nvlist(nvl, "ipsrc", addr);
1096 nvlist_destroy(nvl);
1099 nvlist_add_nvlist(nvl, "ipdst", addr);
1102 nvlist_add_number(nvl, "evaluations",
1104 nvlist_add_number(nvl, "packets-in",
1106 nvlist_add_number(nvl, "packets-out",
1108 nvlist_add_number(nvl, "bytes-in",
1110 nvlist_add_number(nvl, "bytes-out",
1113 nvlist_add_number(nvl, "timestamp", pf_get_timestamp(krule));
1114 nvlist_add_string(nvl, "qname", krule->qname);
1115 nvlist_add_string(nvl, "tagname", krule->tagname);
1117 nvlist_add_number(nvl, "dnpipe", krule->dnpipe);
1118 nvlist_add_number(nvl, "dnflags", krule->dnflags);
1120 nvlist_add_number(nvl, "anchor_relative", krule->anchor_relative);
1121 nvlist_add_number(nvl, "anchor_wildcard", krule->anchor_wildcard);
1123 nvlist_add_string(nvl, "bridge_to", krule->bridge_to_name);
1124 nvlist_add_number(nvl, "action", krule->action);
1126 return (nvl);
1130 pf_nveth_rule_to_keth_rule(const nvlist_t *nvl,
1139 if (nvlist_exists_string_array(nvl, "labels")) {
1144 strs = nvlist_get_string_array(nvl, "labels", &items);
1156 PFNV_CHK(pf_nvuint32_opt(nvl, "ridentifier", &krule->ridentifier, 0));
1158 PFNV_CHK(pf_nvuint32(nvl, "nr", &krule->nr));
1159 PFNV_CHK(pf_nvbool(nvl, "quick", &krule->quick));
1160 PFNV_CHK(pf_nvstring(nvl, "ifname", krule->ifname,
1162 PFNV_CHK(pf_nvbool(nvl, "ifnot", &krule->ifnot));
1163 PFNV_CHK(pf_nvuint8(nvl, "direction", &krule->direction));
1164 PFNV_CHK(pf_nvuint16(nvl, "proto", &krule->proto));
1166 if (nvlist_exists_nvlist(nvl, "src")) {
1168 nvlist_get_nvlist(nvl, "src"), &krule->src);
1172 if (nvlist_exists_nvlist(nvl, "dst")) {
1174 nvlist_get_nvlist(nvl, "dst"), &krule->dst);
1179 if (nvlist_exists_nvlist(nvl, "ipsrc")) {
1181 nvlist_get_nvlist(nvl, "ipsrc"), &krule->ipsrc);
1190 if (nvlist_exists_nvlist(nvl, "ipdst")) {
1192 nvlist_get_nvlist(nvl, "ipdst"), &krule->ipdst);
1201 if (nvlist_exists_string(nvl, "match_tagname")) {
1202 PFNV_CHK(pf_nvstring(nvl, "match_tagname", krule->match_tagname,
1204 PFNV_CHK(pf_nvbool(nvl, "match_tag_not", &krule->match_tag_not));
1207 PFNV_CHK(pf_nvstring(nvl, "qname", krule->qname, sizeof(krule->qname)));
1208 PFNV_CHK(pf_nvstring(nvl, "tagname", krule->tagname,
1211 PFNV_CHK(pf_nvuint16_opt(nvl, "dnpipe", &krule->dnpipe, 0));
1212 PFNV_CHK(pf_nvuint32_opt(nvl, "dnflags", &krule->dnflags, 0));
1213 PFNV_CHK(pf_nvstring(nvl, "bridge_to", krule->bridge_to_name,
1216 PFNV_CHK(pf_nvuint8(nvl, "action", &krule->action));