static int __init jool_init(void) { int error; log_debug("Inserting %s...", xlat_get_name()); /* Init Jool's submodules. */ error = xlator_init(); if (error) goto xlator_fail; error = logtime_init(); if (error) goto log_time_fail; error = nlhandler_init(); if (error) goto nlhandler_fail; /* This needs to be last! (except for the hook registering.) */ error = add_instance(); if (error) goto instance_fail; /* Hook Jool to Netfilter. */ error = nf_register_hooks(nfho, ARRAY_SIZE(nfho)); if (error) goto nf_register_hooks_fail; /* Yay */ log_info("%s v" JOOL_VERSION_STR " module inserted.", xlat_get_name()); return 0; nf_register_hooks_fail: xlator_rm(); instance_fail: nlhandler_destroy(); nlhandler_fail: logtime_destroy(); log_time_fail: xlator_destroy(); xlator_fail: return error; }
static int __init nat64_init(void) { int error; log_debug("%s", banner); log_debug("Inserting the module..."); /* Init Jool's submodules. */ error = config_init(); if (error) goto config_failure; error = pool6_init(pool6, pool6_size); if (error) goto pool6_failure; error = pool4_init(pool4, pool4_size); if (error) goto pool4_failure; error = pktqueue_init(); if (error) goto pktqueue_failure; error = bibdb_init(); if (error) goto bib_failure; error = sessiondb_init(); if (error) goto session_failure; error = fragdb_init(); if (error) goto fragdb_failure; error = filtering_init(); if (error) goto filtering_failure; error = translate_packet_init(); if (error) goto translate_packet_failure; error = sendpkt_init(); if (error) goto sendpkt_failure; #ifdef BENCHMARK error = logtime_init(); if (error) goto log_time_failure; #endif /* Hook Jool to Netfilter. */ error = nf_register_hooks(nfho, ARRAY_SIZE(nfho)); if (error) goto nf_register_hooks_failure; /* Yay */ log_info(MODULE_NAME " module inserted."); return error; nf_register_hooks_failure: #ifdef BENCHMARK logtime_destroy(); log_time_failure: #endif sendpkt_destroy(); sendpkt_failure: translate_packet_destroy(); translate_packet_failure: filtering_destroy(); filtering_failure: fragdb_destroy(); fragdb_failure: sessiondb_destroy(); session_failure: bibdb_destroy(); bib_failure: pktqueue_destroy(); pktqueue_failure: pool4_destroy(); pool4_failure: pool6_destroy(); pool6_failure: config_destroy(); config_failure: return error; }