}
#endif /* OS_WIN32 */
+
+int SuriStartInternalRunMode(struct SuriInstance *suri, int argc, char **argv)
+{
+ /* Treat internal running mode */
+ switch(suri->run_mode) {
+ case RUNMODE_LIST_KEYWORDS:
+ ListKeywords(suri->keyword_info);
+ return TM_ECODE_DONE;
+ case RUNMODE_LIST_APP_LAYERS:
+ ListAppLayerProtocols();
+ return TM_ECODE_DONE;
+ case RUNMODE_PRINT_VERSION:
+ SuriPrintVersion();
+ return TM_ECODE_DONE;
+ case RUNMODE_PRINT_BUILDINFO:
+ SCPrintBuildInfo();
+ return TM_ECODE_DONE;
+ case RUNMODE_PRINT_USAGE:
+ usage(argv[0]);
+ return TM_ECODE_DONE;
+#ifdef __SC_CUDA_SUPPORT__
+ case RUNMODE_LIST_CUDA_CARDS:
+ return ListCudaCards();
+#endif
+ case RUNMODE_LIST_RUNMODES:
+ RunModeListRunmodes();
+ return TM_ECODE_DONE;
+ case RUNMODE_LIST_UNITTEST:
+ {
+ int ret = RunUnittests(1, suri->regex_arg);
+ if (ret == TM_ECODE_OK)
+ return TM_ECODE_DONE;
+ else
+ return ret;
+ }
+#ifdef OS_WIN32
+ case RUNMODE_INSTALL_SERVICE:
+ if (SCServiceInstall(argc, argv)) {
+ return TM_ECODE_FAILED;
+ }
+ SCLogInfo("Suricata service has been successfuly installed.");
+ return TM_ECODE_DONE;
+ case RUNMODE_REMOVE_SERVICE:
+ if (SCServiceRemove(argc, argv)) {
+ return TM_ECODE_FAILED;
+ }
+ SCLogInfo("Suricata service has been successfuly removed.");
+ return TM_ECODE_DONE;
+ case RUNMODE_CHANGE_SERVICE_PARAMS:
+ if (SCServiceChangeParams(argc, argv)) {
+ return TM_ECODE_FAILED;
+ }
+ SCLogInfo("Suricata service startup parameters has been successfuly changed.");
+ return TM_ECODE_DONE;
+#endif /* OS_WIN32 */
+ default:
+ /* simply continue for other running mode */
+ break;
+ }
+ return TM_ECODE_OK;
+}
+
int main(int argc, char **argv)
{
struct SuriInstance suri;
exit(EXIT_FAILURE);
}
- /* Treat internal running mode */
- switch(suri.running_mode) {
- case SC_RUN_LIST_KEYWORDS:
- return ListKeywords(suri.keyword_info);
- case SC_RUN_LIST_APP_LAYERS:
- return ListAppLayerProtocols();
- case SC_RUN_PRINT_VERSION:
- return SuriPrintVersion();
- case RUNMODE_PRINT_BUILDINFO:
- SCPrintBuildInfo();
- return TM_ECODE_OK;
- case RUNMODE_PRINT_USAGE:
- usage(argv[0]);
- return TM_ECODE_OK;
-#ifdef __SC_CUDA_SUPPORT__
- case SC_RUN_LIST_CUDA_CARDS:
- return ListCudaCards();
-#endif
- case RUNMODE_LIST_RUNMODES:
- RunModeListRunmodes();
- return TM_ECODE_OK;
- /* FIXME not sexy here */
- case SC_RUN_LIST_UNITTEST:
- return RunUnittests(1, suri.regex_arg);
- case SC_RUN_UNITTEST:
- return RunUnittests(0, suri.regex_arg);
-#ifdef OS_WIN32
- case RUNMODE_INSTALL_SERVICE:
- if (SCServiceInstall(argc, argv)) {
- return TM_ECODE_FAILED;
- }
- SCLogInfo("Suricata service has been successfuly installed.");
- exit(EXIT_SUCCESS);
- case RUNMODE_REMOVE_SERVICE:
- if (SCServiceRemove(argc, argv)) {
- return TM_ECODE_FAILED;
- }
- SCLogInfo("Suricata service has been successfuly removed.");
- exit(EXIT_SUCCESS);
- case RUNMODE_CHANGE_SERVICE_PARAMS:
- if (SCServiceChangeParams(argc, argv)) {
- return TM_ECODE_FAILED;
- }
- SCLogInfo("Suricata service startup parameters has been successfuly changed.");
+ switch (SuriStartInternalRunMode(&suri, argc, argv)) {
+ case TM_ECODE_DONE:
exit(EXIT_SUCCESS);
-#endif /* OS_WIN32 */
- default:
- /* simply continue for other running mode */
- break;
+ case TM_ECODE_FAILED:
+ exit(EXIT_FAILURE);
}
/* Set the global run mode */
}
if (suri.run_mode == RUNMODE_UNITTEST)
- return SuriRunUnittests(0, suri.regex_arg);
+ return RunUnittests(0, suri.regex_arg);
#ifdef REVISION
SCLogInfo("This is %s version %s (rev %s)", PROG_NAME, PROG_VER, xstr(REVISION));