int main(int argc, char **argv)
{
SuricataPreInit(argv[0]);
- SuricataInit(argc, argv);
+
+ /* Parse command line options. This is optional, you could
+ * directly configure Suricata through the Conf API. */
+ SCParseCommandLine(argc, argv);
+
+ /* Validate/finalize the runmode. */
+ if (SCFinalizeRunMode() != TM_ECODE_OK) {
+ exit(EXIT_FAILURE);
+ }
+
+ SuricataInit();
SuricataPostInit();
/* Suricata is now running, but we enter a loop to keep it running
extern int g_skip_prefilter;
-static TmEcode ParseCommandLine(int argc, char **argv)
+TmEcode SCParseCommandLine(int argc, char **argv)
{
SCInstance *suri = &suricata;
int opt;
return TM_ECODE_OK;
}
-static int FinalizeRunMode(SCInstance *suri)
+int SCFinalizeRunMode(void)
{
+ SCInstance *suri = &suricata;
switch (suri->run_mode) {
case RUNMODE_UNKNOWN:
PrintUsage(suri->progname);
}
}
-void SuricataInit(int argc, char **argv)
+void SuricataInit(void)
{
- if (ParseCommandLine(argc, argv) != TM_ECODE_OK) {
- exit(EXIT_FAILURE);
- }
-
- if (FinalizeRunMode(&suricata) != TM_ECODE_OK) {
- exit(EXIT_FAILURE);
- }
-
- switch (StartInternalRunMode(&suricata, argc, argv)) {
- case TM_ECODE_DONE:
- exit(EXIT_SUCCESS);
- case TM_ECODE_FAILED:
- exit(EXIT_FAILURE);
- }
-
/* Initializations for global vars, queues, etc (memsets, mutex init..) */
GlobalsInitPreConfig();
}
#endif /* OS_WIN32 */
- /* Initialization tasks: parse command line options, load yaml, start runmode... */
- SuricataInit(argc, argv);
+ if (SCParseCommandLine(argc, argv) != TM_ECODE_OK) {
+ exit(EXIT_FAILURE);
+ }
+
+ if (SCFinalizeRunMode() != TM_ECODE_OK) {
+ exit(EXIT_FAILURE);
+ }
+
+ switch (StartInternalRunMode(&suricata, argc, argv)) {
+ case TM_ECODE_DONE:
+ exit(EXIT_SUCCESS);
+ case TM_ECODE_FAILED:
+ exit(EXIT_FAILURE);
+ }
+
+ /* Initialization tasks: Loading config, setup logging */
+ SuricataInit();
/* Post-initialization tasks: wait on thread start/running and get ready for the main loop. */
SuricataPostInit();
extern int run_mode;
void SuricataPreInit(const char *progname);
-void SuricataInit(int argc, char **argv);
+void SuricataInit(void);
void SuricataPostInit(void);
int SuricataMain(int argc, char **argv);
void SuricataMainLoop(void);
void GlobalsDestroy(void);
int PostConfLoadedSetup(SCInstance *suri);
void PostConfLoadedDetectSetup(SCInstance *suri);
+int SCFinalizeRunMode(void);
+TmEcode SCParseCommandLine(int argc, char **argv);
void PreRunInit(const int runmode);
void PreRunPostPrivsDropInit(const int runmode);