[wtp] use goto error exit instead of deep nested if conditions
Convert WTP main() function to linux kernel style goto error exits.
This commit is contained in:
parent
3b7c0adda7
commit
ea87da11ba
@ -1396,7 +1396,10 @@ int main(int argc, char** argv) {
|
||||
if (geteuid() != 0) {
|
||||
capwap_logging_fatal("Request root privileges");
|
||||
result = CAPWAP_REQUEST_ROOT;
|
||||
} else {
|
||||
|
||||
goto out_close_log;
|
||||
}
|
||||
|
||||
/* Init random generator */
|
||||
capwap_init_rand();
|
||||
|
||||
@ -1404,18 +1407,29 @@ int main(int argc, char** argv) {
|
||||
if (capwap_crypt_init()) {
|
||||
result = CAPWAP_CRYPT_ERROR;
|
||||
capwap_logging_fatal("Error to init crypt engine");
|
||||
} else {
|
||||
|
||||
goto out_check_memory;
|
||||
}
|
||||
|
||||
/* Init WTP */
|
||||
if (!wtp_init()) {
|
||||
result = WTP_ERROR_SYSTEM_FAILER;
|
||||
capwap_logging_fatal("Error to init WTP engine");
|
||||
} else {
|
||||
|
||||
goto out_release_crypto;
|
||||
}
|
||||
|
||||
/* Read configuration file */
|
||||
value = wtp_load_configuration(argc, argv);
|
||||
if (value < 0) {
|
||||
result = WTP_ERROR_LOAD_CONFIGURATION;
|
||||
capwap_logging_fatal("Error to load configuration");
|
||||
} else if (value > 0) {
|
||||
|
||||
goto out_destroy_wtp;
|
||||
} else if (value == 0)
|
||||
/* error already reported in config parser */
|
||||
goto out_destroy_wtp;
|
||||
|
||||
if (!g_wtp.standalone) {
|
||||
capwap_daemon();
|
||||
|
||||
@ -1429,7 +1443,11 @@ int main(int argc, char** argv) {
|
||||
wtp_wait_radio_ready();
|
||||
|
||||
/* Connect WTP with kernel module */
|
||||
if (!wtp_kmod_init()) {
|
||||
if (wtp_kmod_init()) {
|
||||
capwap_logging_fatal("Unable to connect with kernel module");
|
||||
goto out_close_radio;
|
||||
}
|
||||
|
||||
capwap_logging_info("SmartCAPWAP kernel module connected");
|
||||
|
||||
/* */
|
||||
@ -1450,10 +1468,8 @@ int main(int argc, char** argv) {
|
||||
|
||||
/* */
|
||||
capwap_logging_info("Terminate WTP");
|
||||
} else {
|
||||
capwap_logging_fatal("Unable to connect with kernel module");
|
||||
}
|
||||
|
||||
out_close_radio:
|
||||
/* Close radio */
|
||||
wtp_radio_close();
|
||||
|
||||
@ -1462,24 +1478,23 @@ int main(int argc, char** argv) {
|
||||
capwap_logging_info("Free wifi binding engine");
|
||||
wifi_driver_free();
|
||||
}
|
||||
}
|
||||
|
||||
out_destroy_wtp:
|
||||
/* Free memory */
|
||||
wtp_destroy();
|
||||
}
|
||||
|
||||
out_release_crypto:
|
||||
/* Free crypt */
|
||||
capwap_crypt_free();
|
||||
}
|
||||
|
||||
out_check_memory:
|
||||
/* Check memory leak */
|
||||
if (capwap_check_memory_leak(1)) {
|
||||
if (result == CAPWAP_SUCCESSFUL) {
|
||||
if (result == CAPWAP_SUCCESSFUL)
|
||||
result = WTP_ERROR_MEMORY_LEAK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out_close_log:
|
||||
/* Close logging */
|
||||
capwap_logging_close();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user