suricata
main.c
Go to the documentation of this file.
1 /* Copyright (C) 2020 Open Information Security Foundation
2  *
3  * You can copy, redistribute or modify this Program under the terms of
4  * the GNU General Public License version 2 as published by the Free
5  * Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * version 2 along with this program; if not, write to the Free Software
14  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15  * 02110-1301, USA.
16  */
17 
18 #include "suricata.h"
19 
20 int main(int argc, char **argv)
21 {
22  /* Pre-initialization tasks: initialize global context and variables. */
23  SuricataPreInit(argv[0]);
24 
25 #ifdef OS_WIN32
26  /* service initialization */
27  if (WindowsInitService(argc, argv) != 0) {
28  exit(EXIT_FAILURE);
29  }
30 #endif /* OS_WIN32 */
31 
32  if (SCParseCommandLine(argc, argv) != TM_ECODE_OK) {
33  exit(EXIT_FAILURE);
34  }
35 
36  if (SCFinalizeRunMode() != TM_ECODE_OK) {
37  exit(EXIT_FAILURE);
38  }
39 
40  switch (SCStartInternalRunMode(argc, argv)) {
41  case TM_ECODE_DONE:
42  exit(EXIT_SUCCESS);
43  case TM_ECODE_FAILED:
44  exit(EXIT_FAILURE);
45  }
46 
47  /* Load yaml configuration file if provided. */
48  if (SCLoadYamlConfig() != TM_ECODE_OK) {
49  exit(EXIT_FAILURE);
50  }
51 
52  /* Initialization tasks: apply configuration, drop privileges,
53  * etc. */
54  SuricataInit();
55 
56  /* Post-initialization tasks: wait on thread start/running and get ready for the main loop. */
58 
60 
61  /* Shutdown engine. */
64 
65  exit(EXIT_SUCCESS);
66 }
SuricataMainLoop
void SuricataMainLoop(void)
Definition: suricata.c:2832
SuricataInit
void SuricataInit(void)
Definition: suricata.c:2921
TM_ECODE_DONE
@ TM_ECODE_DONE
Definition: tm-threads-common.h:86
SuricataPostInit
void SuricataPostInit(void)
Definition: suricata.c:3015
SCParseCommandLine
TmEcode SCParseCommandLine(int argc, char **argv)
Definition: suricata.c:1324
SuricataShutdown
void SuricataShutdown(void)
Definition: suricata.c:3004
TM_ECODE_FAILED
@ TM_ECODE_FAILED
Definition: tm-threads-common.h:85
TM_ECODE_OK
@ TM_ECODE_OK
Definition: tm-threads-common.h:84
main
int main(int argc, char **argv)
Definition: main.c:20
SCStartInternalRunMode
int SCStartInternalRunMode(int argc, char **argv)
Definition: suricata.c:2324
SCLoadYamlConfig
TmEcode SCLoadYamlConfig(void)
Definition: suricata.c:965
suricata.h
SuricataPreInit
void SuricataPreInit(const char *progname)
Definition: suricata.c:2912
SCFinalizeRunMode
int SCFinalizeRunMode(void)
Definition: suricata.c:2380
GlobalsDestroy
void GlobalsDestroy(void)
Definition: suricata.c:370