static void __exit nf_nat_sip_fini(void) { RCU_INIT_POINTER(nf_nat_sip_hook, NULL); RCU_INIT_POINTER(nf_nat_sip_seq_adjust_hook, NULL); RCU_INIT_POINTER(nf_nat_sip_expect_hook, NULL); RCU_INIT_POINTER(nf_nat_sdp_addr_hook, NULL); RCU_INIT_POINTER(nf_nat_sdp_port_hook, NULL); RCU_INIT_POINTER(nf_nat_sdp_session_hook, NULL); RCU_INIT_POINTER(nf_nat_sdp_media_hook, NULL); nf_ct_helper_expectfn_unregister(&sip_nat); synchronize_rcu(); }
static void __exit nf_nat_cleanup(void) { unsigned int i; unregister_pernet_subsys(&nf_nat_net_ops); nf_ct_extend_unregister(&nat_extend); nf_ct_helper_expectfn_unregister(&follow_master_nat); RCU_INIT_POINTER(nfnetlink_parse_nat_setup_hook, NULL); #ifdef CONFIG_XFRM RCU_INIT_POINTER(nf_nat_decode_session_hook, NULL); #endif for (i = 0; i < NFPROTO_NUMPROTO; i++) kfree(nf_nat_l4protos[i]); rhashtable_destroy(&nf_nat_bysource_table); }