| 4748 | } |
| 4749 | |
| 4750 | static void |
| 4751 | pf_unload(void) |
| 4752 | { |
| 4753 | |
| 4754 | sx_xlock(&pf_end_lock); |
| 4755 | pf_end_threads = 1; |
| 4756 | while (pf_end_threads < 2) { |
| 4757 | wakeup_one(pf_purge_thread); |
| 4758 | sx_sleep(pf_purge_proc, &pf_end_lock, 0, "pftmo", 0); |
| 4759 | } |
| 4760 | sx_xunlock(&pf_end_lock); |
| 4761 | |
| 4762 | if (pf_dev != NULL) |
| 4763 | destroy_dev(pf_dev); |
| 4764 | |
| 4765 | pfi_cleanup(); |
| 4766 | |
| 4767 | rm_destroy(&pf_rules_lock); |
| 4768 | sx_destroy(&pf_ioctl_lock); |
| 4769 | sx_destroy(&pf_end_lock); |
| 4770 | } |
| 4771 | |
| 4772 | static void |
| 4773 | vnet_pf_init(void *unused __unused) |
nothing calls this directly
no test coverage detected