static int __init nft_connlimit_module_init(void) { int err; err = nft_register_obj(&nft_connlimit_obj_type); if (err < 0) return err; err = nft_register_expr(&nft_connlimit_type); if (err < 0) goto err1; return 0; err1: nft_unregister_obj(&nft_connlimit_obj_type); return err; }
static int __init nft_counter_module_init(void) { int cpu, err; for_each_possible_cpu(cpu) seqcount_init(per_cpu_ptr(&nft_counter_seq, cpu)); err = nft_register_obj(&nft_counter_obj_type); if (err < 0) return err; err = nft_register_expr(&nft_counter_type); if (err < 0) goto err1; return 0; err1: nft_unregister_obj(&nft_counter_obj_type); return err; }
static void __exit nft_connlimit_module_exit(void) { nft_unregister_expr(&nft_connlimit_type); nft_unregister_obj(&nft_connlimit_obj_type); }
static void __exit nft_quota_module_exit(void) { nft_unregister_expr(&nft_quota_type); nft_unregister_obj(&nft_quota_obj_type); }
static void __exit nft_counter_module_exit(void) { nft_unregister_expr(&nft_counter_type); nft_unregister_obj(&nft_counter_obj_type); }