MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pf_free_rule

Function pf_free_rule

freebsd/netpfil/pf/pf_ioctl.c:432–478  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

430}
431
432void
433pf_free_rule(struct pf_krule *rule)
434{
435
436 PF_RULES_WASSERT();
437
438 if (rule->tag)
439 tag_unref(&V_pf_tags, rule->tag);
440 if (rule->match_tag)
441 tag_unref(&V_pf_tags, rule->match_tag);
442#ifdef ALTQ
443 if (rule->pqid != rule->qid)
444 pf_qid_unref(rule->pqid);
445 pf_qid_unref(rule->qid);
446#endif
447 switch (rule->src.addr.type) {
448 case PF_ADDR_DYNIFTL:
449 pfi_dynaddr_remove(rule->src.addr.p.dyn);
450 break;
451 case PF_ADDR_TABLE:
452 pfr_detach_table(rule->src.addr.p.tbl);
453 break;
454 }
455 switch (rule->dst.addr.type) {
456 case PF_ADDR_DYNIFTL:
457 pfi_dynaddr_remove(rule->dst.addr.p.dyn);
458 break;
459 case PF_ADDR_TABLE:
460 pfr_detach_table(rule->dst.addr.p.tbl);
461 break;
462 }
463 if (rule->overload_tbl)
464 pfr_detach_table(rule->overload_tbl);
465 if (rule->kif)
466 pfi_kkif_unref(rule->kif);
467 pf_kanchor_remove(rule);
468 pf_empty_kpool(&rule->rpool.list);
469 counter_u64_free(rule->evaluations);
470 for (int i = 0; i < 2; i++) {
471 counter_u64_free(rule->packets[i]);
472 counter_u64_free(rule->bytes[i]);
473 }
474 counter_u64_free(rule->states_cur);
475 counter_u64_free(rule->states_tot);
476 counter_u64_free(rule->src_nodes);
477 free(rule, M_PFRULE);
478}
479
480static void
481pf_init_tagset(struct pf_tagset *ts, unsigned int *tunable_size,

Callers 2

pfioctlFunction · 0.85
pf_purge_unlinked_rulesFunction · 0.85

Calls 9

tag_unrefFunction · 0.85
pf_qid_unrefFunction · 0.85
pfi_dynaddr_removeFunction · 0.85
pfr_detach_tableFunction · 0.85
pfi_kkif_unrefFunction · 0.85
pf_kanchor_removeFunction · 0.85
pf_empty_kpoolFunction · 0.85
counter_u64_freeFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected