suricata: expose FinalizeRunMode and ParseCommandLine

Expose the functions FinalizeRunMode and ParseCommandLine to library
users, renaming with the `SC` prefix in the process.

This involves moving "application" level details from SuricataInit
into SuricataMain, as parsing command line options should be opt-in
for a library user.
pull/10720/head
Jason Ish 1 year ago committed by Victor Julien
parent e18779c1b4
commit c476fcc85b

@ -20,7 +20,17 @@
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

@ -1312,7 +1312,7 @@ static bool IsLogDirectoryWritable(const char* str)
extern int g_skip_prefilter;
static TmEcode ParseCommandLine(int argc, char **argv)
TmEcode SCParseCommandLine(int argc, char **argv)
{
SCInstance *suri = &suricata;
int opt;
@ -2368,8 +2368,9 @@ static int StartInternalRunMode(SCInstance *suri, int argc, char **argv)
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);
@ -2898,23 +2899,8 @@ void SuricataPreInit(const char *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();
@ -3087,8 +3073,23 @@ int SuricataMain(int argc, char **argv)
}
#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();

@ -192,7 +192,7 @@ int SuriHasSigFile(void);
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);
@ -201,6 +201,8 @@ int InitGlobal(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);

Loading…
Cancel
Save