exit(EXIT_FAILURE);
}
+ /* Handle internal runmodes. Typically you wouldn't do this as a
+ * library user, however this example is showing how to replicate
+ * the Suricata application with the library. */
+ switch (SCStartInternalRunMode(argc, argv)) {
+ case TM_ECODE_DONE:
+ exit(EXIT_SUCCESS);
+ case TM_ECODE_FAILED:
+ exit(EXIT_FAILURE);
+ }
+
SuricataInit();
SuricataPostInit();
int main(int argc, char **argv)
{
- return SuricataMain(argc, argv);
+ /* Pre-initialization tasks: initialize global context and variables. */
+ SuricataPreInit(argv[0]);
+
+#ifdef OS_WIN32
+ /* service initialization */
+ if (WindowsInitService(argc, argv) != 0) {
+ exit(EXIT_FAILURE);
+ }
+#endif /* OS_WIN32 */
+
+ if (SCParseCommandLine(argc, argv) != TM_ECODE_OK) {
+ exit(EXIT_FAILURE);
+ }
+
+ if (SCFinalizeRunMode() != TM_ECODE_OK) {
+ exit(EXIT_FAILURE);
+ }
+
+ switch (SCStartInternalRunMode(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();
+
+ SuricataMainLoop();
+
+ /* Shutdown engine. */
+ SuricataShutdown();
+ GlobalsDestroy();
+
+ exit(EXIT_SUCCESS);
}
}
#ifdef OS_WIN32
-static int WindowsInitService(int argc, char **argv)
+int WindowsInitService(int argc, char **argv)
{
if (SCRunningAsService()) {
char path[MAX_PATH];
#endif
}
-
-static int StartInternalRunMode(SCInstance *suri, int argc, char **argv)
+int SCStartInternalRunMode(int argc, char **argv)
{
+ SCInstance *suri = &suricata;
/* Treat internal running mode */
- switch(suri->run_mode) {
+ switch (suri->run_mode) {
case RUNMODE_LIST_KEYWORDS:
return ListKeywords(suri->keyword_info);
case RUNMODE_LIST_APP_LAYERS:
}
SCPledge();
}
-
-int SuricataMain(int argc, char **argv)
-{
- /* Pre-initialization tasks: initialize global context and variables. */
- SuricataPreInit(argv[0]);
-
-#ifdef OS_WIN32
- /* service initialization */
- if (WindowsInitService(argc, argv) != 0) {
- exit(EXIT_FAILURE);
- }
-#endif /* OS_WIN32 */
-
- 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();
-
- SuricataMainLoop();
-
- /* Shutdown engine. */
- SuricataShutdown();
- GlobalsDestroy();
-
- exit(EXIT_SUCCESS);
-}
void SuricataPreInit(const char *progname);
void SuricataInit(void);
void SuricataPostInit(void);
-int SuricataMain(int argc, char **argv);
void SuricataMainLoop(void);
void SuricataShutdown(void);
int InitGlobal(void);
void PostConfLoadedDetectSetup(SCInstance *suri);
int SCFinalizeRunMode(void);
TmEcode SCParseCommandLine(int argc, char **argv);
+int SCStartInternalRunMode(int argc, char **argv);
void PreRunInit(const int runmode);
void PreRunPostPrivsDropInit(const int runmode);
void PostRunDeinit(const int runmode, struct timeval *start_time);
void RegisterAllModules(void);
+#ifdef OS_WIN32
+int WindowsInitService(int argc, char **argv);
+#endif
+
const char *GetProgramVersion(void);
#endif /* SURICATA_SURICATA_H */