Lines Matching defs:ncf
173 _npf_rules_process(nl_config_t *ncf, nvlist_t *dict, const char *key)
184 size_t len = (ncf->ncf_rule_count + 1) * sizeof(nvlist_t *);
185 void *p = realloc(ncf->ncf_rule_list, len);
192 ncf->ncf_rule_list = p;
193 ncf->ncf_rule_list[ncf->ncf_rule_count] = rule_dict;
194 ncf->ncf_rule_count++;
199 _npf_rules_process(ncf, rule_dict, "subrules");
200 idx = ncf->ncf_rule_count; // post-recursion index
341 nl_config_t *ncf;
343 ncf = calloc(1, sizeof(nl_config_t));
344 if (!ncf) {
347 ncf->ncf_dict = nvlist_create(0);
348 nvlist_add_number(ncf->ncf_dict, "version", NPF_VERSION);
349 return ncf;
353 npf_config_submit(nl_config_t *ncf, int fd, npf_error_t *errinfo)
359 (void)npf_config_build(ncf);
361 error = _npf_xfer_fd(fd, IOC_NPF_LOAD, ncf->ncf_dict, &resp);
373 nl_config_t *ncf;
377 ncf = calloc(1, sizeof(nl_config_t));
378 if (!ncf) {
388 free(ncf);
391 ncf->ncf_dict = resp;
392 return ncf;
396 npf_config_export(nl_config_t *ncf, size_t *length)
399 (void)npf_config_build(ncf);
400 return nvlist_pack(ncf->ncf_dict, length);
406 nl_config_t *ncf;
408 ncf = calloc(1, sizeof(nl_config_t));
409 if (!ncf) {
412 ncf->ncf_dict = nvlist_unpack(blob, len, 0);
413 if (!ncf->ncf_dict) {
414 free(ncf);
417 return ncf;
423 nl_config_t *ncf;
427 ncf = npf_config_create();
428 if (!ncf) {
431 nvlist_add_bool(ncf->ncf_dict, "flush", true);
432 error = npf_config_submit(ncf, fd, &errinfo);
433 npf_config_destroy(ncf);
438 npf_config_active_p(nl_config_t *ncf)
440 return dnvlist_get_bool(ncf->ncf_dict, "active", false);
444 npf_config_loaded_p(nl_config_t *ncf)
446 return nvlist_exists_nvlist_array(ncf->ncf_dict, "rules");
450 npf_config_build(nl_config_t *ncf)
452 _npf_rules_process(ncf, ncf->ncf_dict, "__rules");
453 if (ncf->ncf_rule_list) {
455 nvlist_move_nvlist_array(ncf->ncf_dict, "rules",
456 ncf->ncf_rule_list, ncf->ncf_rule_count);
459 ncf->ncf_rule_list = NULL;
460 ncf->ncf_rule_count = 0;
462 assert(nvlist_error(ncf->ncf_dict) == 0);
463 return (void *)ncf->ncf_dict;
467 npf_config_destroy(nl_config_t *ncf)
469 nvlist_destroy(ncf->ncf_dict);
470 free(ncf);
478 npf_param_get(nl_config_t *ncf, const char *name, int *valp)
482 params = dnvlist_get_nvlist(ncf->ncf_dict, "params", NULL);
491 npf_param_set(nl_config_t *ncf, const char *name, int val)
496 if (nvlist_exists(ncf->ncf_dict, "params")) {
497 params = nvlist_take_nvlist(ncf->ncf_dict, "params");
510 nvlist_add_nvlist(ncf->ncf_dict, "params", params);
515 npf_param_iterate(nl_config_t *ncf, nl_iter_t *iter, int *val, int *defval)
524 params = dnvlist_get_nvlist(ncf->ncf_dict, "params", NULL);
537 dparams = dnvlist_get_nvlist(ncf->ncf_dict,
754 npf_rule_exists_p(nl_config_t *ncf, const char *name)
756 const char *key = nvlist_exists_nvlist_array(ncf->ncf_dict,
758 return _npf_dataset_lookup(ncf->ncf_dict, key, "name", name);
762 npf_rule_insert(nl_config_t *ncf, nl_rule_t *parent, nl_rule_t *rl)
774 target = ncf->ncf_dict;
784 _npf_rule_iterate1(nl_config_t *ncf, const char *key,
793 ncf->ncf_nlevel = 0;
794 ncf->ncf_reduce[0] = 0;
797 rule_dict = _npf_dataset_getelement(ncf->ncf_dict, key, i);
803 *level = ncf->ncf_nlevel;
807 ncf->ncf_nlevel++;
808 ncf->ncf_reduce[ncf->ncf_nlevel] = skipto;
810 if (ncf->ncf_reduce[ncf->ncf_nlevel] == (i + 1)) {
811 assert(ncf->ncf_nlevel > 0);
812 ncf->ncf_nlevel--;
815 ncf->ncf_cur_rule.rule_dict = __UNCONST(rule_dict); // XXX
816 return &ncf->ncf_cur_rule;
820 npf_rule_iterate(nl_config_t *ncf, nl_iter_t *iter, unsigned *level)
822 return _npf_rule_iterate1(ncf, "rules", iter, level);
885 _npf_ruleset_list(int fd, const char *rname, nl_config_t *ncf)
907 nvlist_move_nvlist_array(ncf->ncf_dict, "rules", rules, n);
954 npf_rproc_exists_p(nl_config_t *ncf, const char *name)
956 return _npf_dataset_lookup(ncf->ncf_dict, "rprocs", "name", name);
960 npf_rproc_insert(nl_config_t *ncf, nl_rproc_t *rp)
968 if (npf_rproc_exists_p(ncf, name)) {
971 nvlist_append_nvlist_array(ncf->ncf_dict, "rprocs", rp->rproc_dict);
978 npf_rproc_iterate(nl_config_t *ncf, nl_iter_t *iter)
983 rproc_dict = _npf_dataset_getelement(ncf->ncf_dict, "rprocs", i);
989 ncf->ncf_cur_rproc.rproc_dict = __UNCONST(rproc_dict); // XXX
990 return &ncf->ncf_cur_rproc;
1028 npf_nat_insert(nl_config_t *ncf, nl_nat_t *nt)
1030 nvlist_append_nvlist_array(ncf->ncf_dict, "nat", nt->rule_dict);
1037 npf_nat_iterate(nl_config_t *ncf, nl_iter_t *iter)
1040 return _npf_rule_iterate1(ncf, "nat", iter, &level);
1271 npf_table_insert(nl_config_t *ncf, nl_table_t *tl)
1280 if (_npf_dataset_lookup(ncf->ncf_dict, "tables", "name", name)) {
1286 nvlist_append_nvlist_array(ncf->ncf_dict, "tables", tl->table_dict);
1313 npf_table_iterate(nl_config_t *ncf, nl_iter_t *iter)
1318 table_dict = _npf_dataset_getelement(ncf->ncf_dict, "tables", i);
1324 ncf->ncf_cur_table.table_dict = __UNCONST(table_dict); // XXX
1325 return &ncf->ncf_cur_table;
1358 npf_alg_load(nl_config_t *ncf, const char *name)
1362 if (_npf_dataset_lookup(ncf->ncf_dict, "algs", "name", name)) {
1367 nvlist_append_nvlist_array(ncf->ncf_dict, "algs", alg_dict);
1515 nl_config_t *ncf;
1519 ncf = npf_config_retrieve(fd);
1520 if (!ncf) {
1523 if (!nvlist_exists_nvlist_array(ncf->ncf_dict, "conn-list")) {
1526 conns = nvlist_get_nvlist_array(ncf->ncf_dict, "conn-list", &nitems);
1531 npf_config_destroy(ncf);
1540 _npf_debug_addif(nl_config_t *ncf, const char *ifname)
1547 debug = dnvlist_take_nvlist(ncf->ncf_dict, "debug", NULL);
1558 nvlist_move_nvlist(ncf->ncf_dict, "debug", debug);
1562 _npf_config_dump(nl_config_t *ncf, int fd)
1564 (void)npf_config_build(ncf);
1565 nvlist_dump(ncf->ncf_dict, fd);