get (almost) rid of run_mode variable.

pull/479/head
Eric Leblond 13 years ago
parent 80542816cd
commit c0d5ee77f9

@ -881,7 +881,7 @@ static TmEcode ParseInterfacesList(int run_mode, char *pcap_dev)
}
struct SuriInstance {
int running_mode;
int run_mode;
char pcap_dev[128];
char *sig_file;
@ -907,7 +907,7 @@ struct SuriInstance {
static void SuriInstanceInit(struct SuriInstance *suri)
{
suri->running_mode = 0;
suri->run_mode = RUNMODE_UNKNOWN;
memset(suri->pcap_dev, 0, sizeof(suri->pcap_dev));
suri->sig_file = NULL;
@ -1012,7 +1012,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
if (strcmp((long_opts[option_index]).name , "pfring") == 0 ||
strcmp((long_opts[option_index]).name , "pfring-int") == 0) {
#ifdef HAVE_PFRING
run_mode = RUNMODE_PFRING;
suri->run_mode = RUNMODE_PFRING;
if (optarg != NULL) {
memset(pcap_dev, 0, sizeof(pcap_dev));
strlcpy(pcap_dev, optarg,
@ -1052,8 +1052,8 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
else if (strcmp((long_opts[option_index]).name , "af-packet") == 0){
#ifdef HAVE_AF_PACKET
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_AFP_DEV;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_AFP_DEV;
if (optarg) {
LiveRegisterDevice(optarg);
memset(suri->pcap_dev, 0, sizeof(suri->pcap_dev));
@ -1061,7 +1061,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
((strlen(optarg) < sizeof(suri->pcap_dev)) ?
(strlen(optarg) + 1) : sizeof(suri->pcap_dev)));
}
} else if (run_mode == RUNMODE_AFP_DEV) {
} else if (suri->run_mode == RUNMODE_AFP_DEV) {
SCLogWarning(SC_WARN_PCAP_MULTI_DEV_EXPERIMENTAL, "using "
"multiple devices to get packets is experimental.");
if (optarg) {
@ -1083,8 +1083,8 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
return TM_ECODE_FAILED;
#endif
} else if (strcmp((long_opts[option_index]).name , "pcap") == 0) {
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_PCAP_DEV;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_PCAP_DEV;
if (optarg) {
LiveRegisterDevice(optarg);
memset(suri->pcap_dev, 0, sizeof(suri->pcap_dev));
@ -1092,7 +1092,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
((strlen(optarg) < sizeof(suri->pcap_dev)) ?
(strlen(optarg) + 1) : sizeof(suri->pcap_dev)));
}
} else if (run_mode == RUNMODE_PCAP_DEV) {
} else if (suri->run_mode == RUNMODE_PCAP_DEV) {
#ifdef OS_WIN32
SCLogError(SC_ERR_PCAP_MULTI_DEV_NO_SUPPORT, "pcap multi dev "
"support is not (yet) supported on Windows.");
@ -1115,8 +1115,8 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
#ifdef BUILD_UNIX_SOCKET
} else if (strcmp((long_opts[option_index]).name , "unix-socket") == 0) {
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_UNIX_SOCKET;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_UNIX_SOCKET;
if (optarg) {
if (ConfSet("unix-command.filename", optarg, 0) != 1) {
fprintf(stderr, "ERROR: Failed to set unix-command.filename.\n");
@ -1137,8 +1137,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
else if(strcmp((long_opts[option_index]).name, "list-unittests") == 0) {
#ifdef UNITTESTS
/* Set run_mode to unit tests. */
run_mode = RUNMODE_UNITTEST;
suri->run_mode = RUNMODE_LIST_UNITTEST;
#else
fprintf(stderr, "ERROR: Unit tests not enabled. Make sure to pass --enable-unittests to configure when building.\n");
return TM_ECODE_FAILED;
@ -1150,7 +1149,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
return TM_ECODE_FAILED;
#endif /* UNITTESTS */
} else if (strcmp((long_opts[option_index]).name, "list-runmodes") == 0) {
suri->running_mode = RUNMODE_LIST_RUNMODES;
suri->run_mode = RUNMODE_LIST_RUNMODES;
return TM_ECODE_OK;
} else if (strcmp((long_opts[option_index]).name, "list-keywords") == 0) {
if (optarg) {
@ -1165,15 +1164,15 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
#ifdef OS_WIN32
else if(strcmp((long_opts[option_index]).name, "service-install") == 0) {
suri->running_mode = RUNMODE_INSTALL_SERVICE;
suri->run_mode = RUNMODE_INSTALL_SERVICE;
return TM_ECODE_OK;
}
else if(strcmp((long_opts[option_index]).name, "service-remove") == 0) {
suri->running_mode = RUNMODE_REMOVE_SERVICE;
suri->run_mode = RUNMODE_REMOVE_SERVICE;
return TM_ECODE_OK;
}
else if(strcmp((long_opts[option_index]).name, "service-change-params") == 0) {
suri->running_mode = RUNMODE_CHANGE_SERVICE_PARAMS;
suri->run_mode = RUNMODE_CHANGE_SERVICE_PARAMS;
return TM_ECODE_OK;
}
#endif /* OS_WIN32 */
@ -1212,7 +1211,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
#endif /* HAVE_LIBCAP_NG */
}
else if (strcmp((long_opts[option_index]).name, "erf-in") == 0) {
run_mode = RUNMODE_ERF_FILE;
suri->run_mode = RUNMODE_ERF_FILE;
if (ConfSet("erf-file.file", optarg, 0) != 1) {
fprintf(stderr, "ERROR: Failed to set erf-file.file\n");
return TM_ECODE_FAILED;
@ -1220,10 +1219,10 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
else if (strcmp((long_opts[option_index]).name, "dag") == 0) {
#ifdef HAVE_DAG
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_DAG;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_DAG;
}
else if (run_mode != RUNMODE_DAG) {
else if (suri->run_mode != RUNMODE_DAG) {
SCLogError(SC_ERR_MULTIPLE_RUN_MODE,
"more than one run mode has been specified");
usage(argv[0]);
@ -1238,7 +1237,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
else if (strcmp((long_opts[option_index]).name, "napatech") == 0) {
#ifdef HAVE_NAPATECH
run_mode = RUNMODE_NAPATECH;
suri->run_mode = RUNMODE_NAPATECH;
#else
SCLogError(SC_ERR_NAPATECH_REQUIRED, "libntapi and a Napatech adapter are required"
" to capture packets using --napatech.");
@ -1257,7 +1256,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
#endif /* HAVE_PCAP_SET_BUFF */
}
else if(strcmp((long_opts[option_index]).name, "build-info") == 0) {
suri->running_mode = RUNMODE_PRINT_BUILDINFO;
suri->run_mode = RUNMODE_PRINT_BUILDINFO;
return TM_ECODE_OK;
}
#ifdef HAVE_MPIPE
@ -1297,7 +1296,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
break;
#endif /* OS_WIN32 */
case 'h':
suri->running_mode = RUNMODE_PRINT_USAGE;
suri->run_mode = RUNMODE_PRINT_USAGE;
return TM_ECODE_OK;
case 'i':
memset(suri->pcap_dev, 0, sizeof(suri->pcap_dev));
@ -1318,10 +1317,10 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
return TM_ECODE_FAILED;
}
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_PCAP_DEV;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_PCAP_DEV;
LiveRegisterDevice(suri->pcap_dev);
} else if (run_mode == RUNMODE_PCAP_DEV) {
} else if (suri->run_mode == RUNMODE_PCAP_DEV) {
#ifdef OS_WIN32
SCLogError(SC_ERR_PCAP_MULTI_DEV_NO_SUPPORT, "pcap multi dev "
"support is not (yet) supported on Windows.");
@ -1352,12 +1351,12 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
break;
case 'q':
#ifdef NFQ
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_NFQ;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_NFQ;
SET_ENGINE_MODE_IPS(engine_mode);
if (NFQRegisterQueue(optarg) == -1)
return TM_ECODE_FAILED;
} else if (run_mode == RUNMODE_NFQ) {
} else if (suri->run_mode == RUNMODE_NFQ) {
if (NFQRegisterQueue(optarg) == -1)
return TM_ECODE_FAILED;
} else {
@ -1373,12 +1372,12 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
break;
case 'd':
#ifdef IPFW
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_IPFW;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_IPFW;
SET_ENGINE_MODE_IPS(engine_mode);
if (IPFWRegisterQueue(optarg) == -1)
return TM_ECODE_FAILED;
} else if (run_mode == RUNMODE_IPFW) {
} else if (suri->run_mode == RUNMODE_IPFW) {
if (IPFWRegisterQueue(optarg) == -1)
return TM_ECODE_FAILED;
} else {
@ -1393,8 +1392,8 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
#endif /* IPFW */
break;
case 'r':
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_PCAP_FILE;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_PCAP_FILE;
} else {
SCLogError(SC_ERR_MULTIPLE_RUN_MODE, "more than one run mode "
"has been specified");
@ -1423,9 +1422,8 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
break;
case 'u':
#ifdef UNITTESTS
if (run_mode == RUNMODE_UNKNOWN) {
run_mode = RUNMODE_UNITTEST;
suri->running_mode = RUNMODE_UNITTEST;
if (suri->run_mode == RUNMODE_UNKNOWN) {
suri->run_mode = RUNMODE_UNITTEST;
} else {
SCLogError(SC_ERR_MULTIPLE_RUN_MODE, "more than one run mode has"
" been specified");
@ -1446,7 +1444,7 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
#endif
break;
case 'V':
suri->running_mode = RUNMODE_PRINT_VERSION;
suri->run_mode = RUNMODE_PRINT_VERSION;
return TM_ECODE_OK;
case 'F':
SetBpfStringFromFile(optarg);
@ -1458,17 +1456,17 @@ static TmEcode SuriParseCommandLine(int argc, char** argv, struct SuriInstance *
}
if (list_app_layer_protocols)
suri->running_mode = RUNMODE_LIST_APP_LAYERS;
suri->run_mode = RUNMODE_LIST_APP_LAYERS;
if (list_cuda_cards)
suri->running_mode = RUNMODE_LIST_CUDA_CARDS;
suri->run_mode = RUNMODE_LIST_CUDA_CARDS;
if (list_keywords)
suri->running_mode = RUNMODE_LIST_KEYWORDS;
suri->run_mode = RUNMODE_LIST_KEYWORDS;
if (list_unittests)
suri->running_mode = RUNMODE_LIST_UNITTEST;
suri->run_mode = RUNMODE_LIST_UNITTEST;
if (dump_config)
suri->running_mode = RUNMODE_DUMP_CONFIG;
suri->run_mode = RUNMODE_DUMP_CONFIG;
if (conf_test)
suri->running_mode = RUNMODE_CONF_TEST;
suri->run_mode = RUNMODE_CONF_TEST;
return TM_ECODE_OK;
}
@ -1530,6 +1528,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
/* Treat internal running mode */
switch(suri.running_mode) {
case SC_RUN_LIST_KEYWORDS:
return ListKeywords(suri.keyword_info);
@ -1580,6 +1579,12 @@ int main(int argc, char **argv)
break;
}
/* Set the global run mode */
run_mode = suri.run_mode;
if (suri.run_mode == RUNMODE_UNITTEST)
return SuriRunUnittests(0, suri.regex_arg);
#ifdef REVISION
SCLogInfo("This is %s version %s (rev %s)", PROG_NAME, PROG_VER, xstr(REVISION));
#elif defined RELEASE
@ -1598,7 +1603,7 @@ int main(int argc, char **argv)
CudaBufferInit();
#endif
if (!CheckValidDaemonModes(suri.daemon, run_mode)) {
if (!CheckValidDaemonModes(suri.daemon, suri.run_mode)) {
exit(EXIT_FAILURE);
}
@ -1627,7 +1632,7 @@ int main(int argc, char **argv)
AppLayerDetectProtoThreadInit();
AppLayerParsersInitPostProcess();
if (suri.running_mode == RUNMODE_DUMP_CONFIG) {
if (suri.run_mode == RUNMODE_DUMP_CONFIG) {
ConfDump();
exit(EXIT_SUCCESS);
}
@ -1660,7 +1665,7 @@ int main(int argc, char **argv)
* back on a sane default. */
char *temp_default_packet_size;
if ((ConfGet("default-packet-size", &temp_default_packet_size)) != 1) {
switch (run_mode) {
switch (suri.run_mode) {
case RUNMODE_PCAP_DEV:
case RUNMODE_AFP_DEV:
case RUNMODE_PFRING:
@ -1684,7 +1689,7 @@ int main(int argc, char **argv)
SCLogDebug("Default packet size set to %"PRIu32, default_packet_size);
#ifdef NFQ
if (run_mode == RUNMODE_NFQ)
if (suri.run_mode == RUNMODE_NFQ)
NFQInitConfig(FALSE);
#endif
@ -1699,7 +1704,7 @@ int main(int argc, char **argv)
}
if (run_mode == RUNMODE_UNKNOWN) {
if (!engine_analysis && !(suri.running_mode == RUNMODE_CONF_TEST)) {
if (!engine_analysis && !(suri.run_mode == RUNMODE_CONF_TEST)) {
usage(argv[0]);
exit(EXIT_FAILURE);
}
@ -1940,7 +1945,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
if(suri.running_mode == RUNMODE_CONF_TEST){
if(suri.run_mode == RUNMODE_CONF_TEST){
SCLogInfo("Configuration provided was successfully loaded. Exiting.");
exit(EXIT_SUCCESS);
}

Loading…
Cancel
Save