suricata
runmodes.c File Reference
#include "suricata-common.h"
#include "detect-engine.h"
#include "app-layer-parser.h"
#include "util-debug.h"
#include "util-affinity.h"
#include "conf.h"
#include "log-flush.h"
#include "runmodes.h"
#include "runmode-af-packet.h"
#include "runmode-af-xdp.h"
#include "runmode-dpdk.h"
#include "runmode-erf-dag.h"
#include "runmode-erf-file.h"
#include "runmode-ipfw.h"
#include "runmode-lib.h"
#include "runmode-netmap.h"
#include "runmode-nflog.h"
#include "runmode-nfq.h"
#include "runmode-pcap.h"
#include "runmode-pcap-file.h"
#include "runmode-unix-socket.h"
#include "runmode-windivert.h"
#include "util-unittest.h"
#include "util-misc.h"
#include "util-plugin.h"
#include "output.h"
#include "tmqh-flow.h"
#include "flow-manager.h"
#include "flow-bypass.h"
#include "counters.h"
#include "suricata-plugin.h"
#include "util-device-private.h"
Include dependency graph for runmodes.c:

Go to the source code of this file.

Data Structures

struct  RunMode_
 Holds description for a runmode. More...
 
struct  RunModes_
 
struct  OutputFreeList_
 

Typedefs

typedef struct RunMode_ RunMode
 Holds description for a runmode.
 
typedef struct RunModes_ RunModes
 
typedef struct OutputFreeList_ OutputFreeList
 

Functions

char * RunmodeGetActive (void)
 
bool RunmodeIsWorkers (void)
 
bool RunmodeIsAutofp (void)
 
const char * RunModeGetMainMode (void)
 
void RunModeRegisterRunModes (void)
 Register all runmodes in the engine.
 
void RunModeListRunmodes (void)
 Lists all registered runmodes.
 
int RunModeEngineIsIPS (int capture_mode, const char *runmode, const char *capture_plugin_name)
 
void RunModeDispatch (int runmode, const char *custom_mode, const char *capture_plugin_name, const char *capture_plugin_args)
 
void RunModeEnablesBypassManager (void)
 
int RunModeNeedsBypassManager (void)
 
void RunModeRegisterNewRunMode (enum SCRunModes runmode, const char *name, const char *description, int(*RunModeFunc)(void), int(*RunModeIsIPSEnabled)(void))
 Registers a new runmode.
 
int RunModeOutputFiledataEnabled (void)
 
bool IsRunModeSystem (enum SCRunModes run_mode_to_check)
 
bool IsRunModeOffline (enum SCRunModes run_mode_to_check)
 
void RunModeShutDown (void)
 
void RunModeInitializeOutputs (void)
 
void RunModeInitializeThreadSettings (void)
 

Variables

int debuglog_enabled = 0
 
bool threading_set_cpu_affinity = false
 
uint64_t threading_set_stack_size = 0
 
const char * thread_name_autofp = "RX"
 
const char * thread_name_single = "W"
 
const char * thread_name_workers = "W"
 
const char * thread_name_verdict = "TX"
 
const char * thread_name_flow_mgr = "FM"
 
const char * thread_name_flow_rec = "FR"
 
const char * thread_name_flow_bypass = "FB"
 
const char * thread_name_unix_socket = "US"
 
const char * thread_name_detect_loader = "DL"
 
const char * thread_name_counter_stats = "CS"
 
const char * thread_name_counter_wakeup = "CW"
 
const char * thread_name_heartbeat = "HB"
 
bool g_file_logger_enabled
 
bool g_filedata_logger_enabled
 
float threading_detect_ratio = 1
 

Detailed Description

Author
Victor Julien victo.nosp@m.r@in.nosp@m.linia.nosp@m.c.ne.nosp@m.t

Pre-cooked threading runmodes.

Definition in file runmodes.c.

Typedef Documentation

◆ OutputFreeList

◆ RunMode

typedef struct RunMode_ RunMode

Holds description for a runmode.

◆ RunModes

typedef struct RunModes_ RunModes

Function Documentation

◆ IsRunModeOffline()

bool IsRunModeOffline ( enum SCRunModes  run_mode_to_check)

Definition at line 561 of file runmodes.c.

References RUNMODE_CONF_TEST, RUNMODE_ENGINE_ANALYSIS, RUNMODE_ERF_FILE, RUNMODE_PCAP_FILE, and RUNMODE_UNIX_SOCKET.

Referenced by ConfUnixSocketIsEnable(), SCConfLogOpenGeneric(), and SCParseCommandLine().

Here is the caller graph for this function:

◆ IsRunModeSystem()

bool IsRunModeSystem ( enum SCRunModes  run_mode_to_check)

Definition at line 548 of file runmodes.c.

References RUNMODE_ENGINE_ANALYSIS, RUNMODE_ERF_FILE, and RUNMODE_PCAP_FILE.

Referenced by SCParseCommandLine().

Here is the caller graph for this function:

◆ RunModeDispatch()

void RunModeDispatch ( int  runmode,
const char *  custom_mode,
const char *  capture_plugin_name,
const char *  capture_plugin_args 
)

◆ RunModeEnablesBypassManager()

void RunModeEnablesBypassManager ( void  )

Definition at line 465 of file runmodes.c.

◆ RunModeEngineIsIPS()

int RunModeEngineIsIPS ( int  capture_mode,
const char *  runmode,
const char *  capture_plugin_name 
)

Definition at line 379 of file runmodes.c.

References g_livedev_mask, LiveGetDeviceCount(), RunMode_::RunModeIsIPSEnabled, and SCLogWarning.

Referenced by PostConfLoadedSetup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RunmodeGetActive()

char * RunmodeGetActive ( void  )

Return the running mode

The returned string must not be freed.

Returns
a string containing the current running mode

Definition at line 199 of file runmodes.c.

Referenced by RunmodeIsAutofp(), and RunmodeIsWorkers().

Here is the caller graph for this function:

◆ RunModeGetMainMode()

const char * RunModeGetMainMode ( void  )

Return the running mode

The returned string must not be freed.

Returns
a string containing the current running mode

Definition at line 221 of file runmodes.c.

References SCRunmodeGet().

Here is the call graph for this function:

◆ RunModeInitializeOutputs()

◆ RunModeInitializeThreadSettings()

void RunModeInitializeThreadSettings ( void  )

Initialize multithreading settings.

Definition at line 954 of file runmodes.c.

References AffinitySetupLoadFromConfig(), FatalError, ParseSizeStringU64(), SCConfGet(), SCConfGetBool(), SCConfGetFloat(), SCConfGetNode(), SCLogDebug, SCLogNotice, threading_detect_ratio, threading_set_cpu_affinity, threading_set_stack_size, and WarnInvalidConfEntry.

Referenced by LLVMFuzzerTestOneInput(), and SuricataInit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RunmodeIsAutofp()

bool RunmodeIsAutofp ( void  )

Definition at line 209 of file runmodes.c.

References RunmodeGetActive().

Referenced by TmThreadSetupOptions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RunmodeIsWorkers()

bool RunmodeIsWorkers ( void  )

Definition at line 204 of file runmodes.c.

References RunmodeGetActive().

Referenced by TmThreadSetupOptions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RunModeListRunmodes()

void RunModeListRunmodes ( void  )

Lists all registered runmodes.

Definition at line 257 of file runmodes.c.

References RunModes_::cnt, RunMode_::description, RunMode_::name, RunMode_::runmode, RUNMODE_UNKNOWN, RUNMODE_USER_MAX, and RunModes_::runmodes.

Referenced by SCStartInternalRunMode().

Here is the caller graph for this function:

◆ RunModeNeedsBypassManager()

int RunModeNeedsBypassManager ( void  )

Definition at line 470 of file runmodes.c.

Referenced by RunModeDispatch().

Here is the caller graph for this function:

◆ RunModeOutputFiledataEnabled()

int RunModeOutputFiledataEnabled ( void  )

Definition at line 543 of file runmodes.c.

◆ RunModeRegisterNewRunMode()

void RunModeRegisterNewRunMode ( enum SCRunModes  runmode,
const char *  name,
const char *  description,
int(*)(void)  RunModeFunc,
int(*)(void)  RunModeIsIPSEnabled 
)

Registers a new runmode.

Parameters
runmodeRunmode type.
nameCustom mode for this specific runmode type. Within each runmode type, each custom name is a primary key.
descriptionDescription for this runmode.
RunModeFuncThe function to be run for this runmode.

Definition at line 486 of file runmodes.c.

References RunModes_::cnt, cnt, RunMode_::description, FatalError, RunMode_::name, name, RunMode_::runmode, RunMode_::RunModeFunc, RunMode_::RunModeIsIPSEnabled, RunModes_::runmodes, SCFree, SCRealloc, SCStrdup, and unlikely.

Referenced by CiCaptureIdsRegister(), RunModeDpdkRegister(), RunModeErfDagRegister(), RunModeErfFileRegister(), RunModeFilePcapRegister(), RunModeIdsAFPRegister(), RunModeIdsAFXDPRegister(), RunModeIdsNetmapRegister(), RunModeIdsNflogRegister(), RunModeIdsPcapRegister(), RunModeIpsIPFWRegister(), RunModeIpsNFQRegister(), RunModeIpsWinDivertRegister(), RunModeUnixSocketRegister(), SCRunModeLibIdsRegister(), and UtRunModeRegister().

Here is the caller graph for this function:

◆ RunModeRegisterRunModes()

◆ RunModeShutDown()

void RunModeShutDown ( void  )

Cleanup the run mode.

Definition at line 579 of file runmodes.c.

References OutputClearActiveLoggers(), OutputFiledataShutdown(), OutputFileShutdown(), OutputFlowShutdown(), OutputPacketShutdown(), OutputStatsShutdown(), OutputStreamingShutdown(), and OutputTxShutdown().

Referenced by PostRunDeinit().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ debuglog_enabled

int debuglog_enabled = 0

Definition at line 61 of file runmodes.c.

◆ g_file_logger_enabled

bool g_file_logger_enabled
extern

Definition at line 39 of file output-file.c.

Referenced by RunModeInitializeOutputs(), and SCOutputRegisterFileLogger().

◆ g_filedata_logger_enabled

bool g_filedata_logger_enabled
extern

Definition at line 37 of file output-filedata.c.

Referenced by RunModeInitializeOutputs(), and SCOutputRegisterFiledataLogger().

◆ thread_name_autofp

◆ thread_name_counter_stats

const char* thread_name_counter_stats = "CS"

Definition at line 75 of file runmodes.c.

Referenced by StatsSpawnThreads().

◆ thread_name_counter_wakeup

const char* thread_name_counter_wakeup = "CW"

Definition at line 76 of file runmodes.c.

Referenced by StatsSpawnThreads().

◆ thread_name_detect_loader

const char* thread_name_detect_loader = "DL"

Definition at line 74 of file runmodes.c.

Referenced by DetectLoaderThreadSpawn().

◆ thread_name_flow_bypass

const char* thread_name_flow_bypass = "FB"

Definition at line 72 of file runmodes.c.

Referenced by BypassedFlowManagerThreadSpawn().

◆ thread_name_flow_mgr

const char* thread_name_flow_mgr = "FM"

◆ thread_name_flow_rec

const char* thread_name_flow_rec = "FR"

◆ thread_name_heartbeat

const char* thread_name_heartbeat = "HB"

Definition at line 77 of file runmodes.c.

Referenced by LogFlushThreads().

◆ thread_name_single

const char* thread_name_single = "W"

◆ thread_name_unix_socket

const char* thread_name_unix_socket = "US"

Definition at line 73 of file runmodes.c.

◆ thread_name_verdict

const char* thread_name_verdict = "TX"

Definition at line 69 of file runmodes.c.

Referenced by RunModeSetIPSAutoFp(), and TmThreadWaitOnThreadRunning().

◆ thread_name_workers

◆ threading_detect_ratio

float threading_detect_ratio = 1

◆ threading_set_cpu_affinity

bool threading_set_cpu_affinity = false

◆ threading_set_stack_size

uint64_t threading_set_stack_size = 0

Definition at line 63 of file runmodes.c.

Referenced by RunModeInitializeThreadSettings(), and TmThreadSpawn().