suricata
|
#include "queue.h"
Go to the source code of this file.
Data Structures | |
struct | SCConfNode_ |
Macros | |
#define | DEFAULT_LOG_DIR "/var/log/suricata" |
#define | DEFAULT_DATA_DIR DATA_DIR |
Typedefs | |
typedef struct SCConfNode_ | SCConfNode |
Functions | |
void | SCConfInit (void) |
Initialize the configuration system. More... | |
void | SCConfDeInit (void) |
De-initializes the configuration system. More... | |
SCConfNode * | SCConfGetRootNode (void) |
Get the root configuration node. More... | |
int | SCConfGet (const char *name, const char **vptr) |
Retrieve the value of a configuration node. More... | |
int | SCConfGetInt (const char *name, intmax_t *val) |
Retrieve a configuration value as an integer. More... | |
int | SCConfGetBool (const char *name, int *val) |
Retrieve a configuration value as a boolean. More... | |
int | SCConfGetDouble (const char *name, double *val) |
Retrieve a configuration value as a double. More... | |
int | SCConfGetFloat (const char *name, float *val) |
Retrieve a configuration value as a float. More... | |
int | SCConfSet (const char *name, const char *val) |
Set a configuration value. More... | |
int | SCConfSetFromString (const char *input, int final) |
Set a configuration parameter from a string. More... | |
int | SCConfSetFinal (const char *name, const char *val) |
Set a final configuration value. More... | |
void | SCConfDump (void) |
Dump configuration to stdout. More... | |
void | SCConfNodeDump (const SCConfNode *node, const char *prefix) |
Dump a configuration node and all its children. More... | |
SCConfNode * | SCConfNodeNew (void) |
Allocate a new configuration node. More... | |
void | SCConfNodeFree (SCConfNode *) |
Free a SCConfNode and all of its children. More... | |
SCConfNode * | SCConfGetNode (const char *key) |
Get a SCConfNode by name. More... | |
void | SCConfCreateContextBackup (void) |
Creates a backup of the conf_hash hash_table used by the conf API. More... | |
void | SCConfRestoreContextBackup (void) |
Restores the backup of the hash_table present in backup_conf_hash back to conf_hash. More... | |
SCConfNode * | SCConfNodeLookupChild (const SCConfNode *node, const char *key) |
Lookup a child configuration node by name. More... | |
const char * | SCConfNodeLookupChildValue (const SCConfNode *node, const char *key) |
Lookup the value of a child configuration node by name. More... | |
void | SCConfNodeRemove (SCConfNode *) |
Remove (and SCFree) the provided configuration node. More... | |
void | SCConfRegisterTests (void) |
int | SCConfNodeChildValueIsTrue (const SCConfNode *node, const char *key) |
Test if a configuration node has a true value. More... | |
int | SCConfValIsTrue (const char *val) |
Check if a value is true. More... | |
int | SCConfValIsFalse (const char *val) |
Check if a value is false. More... | |
void | SCConfNodePrune (SCConfNode *node) |
Create the path for an include entry. More... | |
int | SCConfRemove (const char *name) |
Remove a configuration parameter from the configuration db. More... | |
bool | SCConfNodeHasChildren (const SCConfNode *node) |
Check if a node has any children. More... | |
SCConfNode * | SCConfGetChildWithDefault (const SCConfNode *base, const SCConfNode *dflt, const char *name) |
SCConfNode * | SCConfNodeLookupKeyValue (const SCConfNode *base, const char *key, const char *value) |
Lookup for a key value under a specific node. More... | |
int | SCConfGetChildValue (const SCConfNode *base, const char *name, const char **vptr) |
int | SCConfGetChildValueInt (const SCConfNode *base, const char *name, intmax_t *val) |
int | SCConfGetChildValueBool (const SCConfNode *base, const char *name, int *val) |
int | SCConfGetChildValueWithDefault (const SCConfNode *base, const SCConfNode *dflt, const char *name, const char **vptr) |
int | SCConfGetChildValueIntWithDefault (const SCConfNode *base, const SCConfNode *dflt, const char *name, intmax_t *val) |
int | SCConfGetChildValueBoolWithDefault (const SCConfNode *base, const SCConfNode *dflt, const char *name, int *val) |
int | SCConfNodeIsSequence (const SCConfNode *node) |
Check if a node is a sequence or node. More... | |
SCConfNode * | SCConfSetIfaceNode (const char *ifaces_node_name, const char *iface) |
Finds an interface from the list of interfaces. More... | |
int | SCConfSetRootAndDefaultNodes (const char *ifaces_node_name, const char *iface, SCConfNode **if_root, SCConfNode **if_default) |
Finds and sets root and default node of the interface. More... | |
SCConfNode * | SCConfNodeGetNodeOrCreate (SCConfNode *parent, const char *name, int final) |
Helper function to get a node, creating it if it does not exist. More... | |
SCConfNode * | SCConfGetFirstNode (const SCConfNode *parent) |
SCConfNode * | SCConfGetNextNode (const SCConfNode *node) |
const char * | SCConfGetValueNode (const SCConfNode *node) |
Definition in file conf.h.
#define DEFAULT_LOG_DIR "/var/log/suricata" |
typedef struct SCConfNode_ SCConfNode |
Structure of a configuration parameter.
void SCConfCreateContextBackup | ( | void | ) |
void SCConfDeInit | ( | void | ) |
De-initializes the configuration system.
Definition at line 703 of file conf.c.
Referenced by GlobalsDestroy().
void SCConfDump | ( | void | ) |
Dump configuration to stdout.
Definition at line 761 of file conf.c.
References SCConfNodeDump().
Referenced by SuricataInit().
int SCConfGet | ( | const char * | name, |
const char ** | vptr | ||
) |
Retrieve the value of a configuration node.
This function will return the value for a configuration node based on the full name of the node. It is possible that the value returned could be NULL, this could happen if the requested node does exist but is not a node that contains a value, but contains children SCConfNodes instead.
name | Name of configuration parameter to get. |
vptr | Pointer that will be set to the configuration value parameter. Note that this is just a reference to the actual value, not a copy. |
1 | will be returned if the name is found, otherwise 0 will be returned. |
Definition at line 350 of file conf.c.
References name, SCConfGetNode(), SCLogDebug, and SCConfNode_::val.
Referenced by ConfigGetDataDirectory(), ConfSetBPFFilter(), ConfUnixSocketIsEnable(), CoredumpLoadConfig(), DetectEngineMpmCachingEnabled(), DetectEngineMpmCachingGetPath(), FlowInitConfig(), HTPParseMemcap(), HttpRangeContainersInit(), NFQInitConfig(), OutputJsonInitCtx(), PatternMatchDefaultMatcher(), PcapFileGlobalInit(), PostConfLoadedSetup(), RunModeErfFileAutoFp(), RunModeErfFileSingle(), RunModeFilePcapAutoFp(), RunModeFilePcapSingle(), RunModeIdsAFPAutoFp(), RunModeIdsAFPSingle(), RunModeIdsAFPWorkers(), RunModeIdsAFXDPSingle(), RunModeIdsAFXDPWorkers(), RunModeIdsPcapAutoFp(), RunModeIdsPcapSingle(), RunModeIdsPcapWorkers(), RunModeInitializeThreadSettings(), SCConfGetBool(), SCConfGetDouble(), SCConfGetFloat(), SCConfGetInt(), SCConfigGetLogDirectory(), SCLogLoadConfig(), SCRuleVarsGetConfVar(), SinglePatternMatchDefaultMatcher(), StreamTcpInitConfig(), and TmqhFlowRegister().
int SCConfGetBool | ( | const char * | name, |
int * | val | ||
) |
Retrieve a configuration value as a boolean.
name | Name of configuration parameter to get. |
val | Pointer to an int that will be set to 1 for true, or 0 for false. |
1 | will be returned if the name is found and was properly converted to a boolean, otherwise 0 will be returned. |
Definition at line 497 of file conf.c.
References name, SCConfGet(), and SCConfValIsTrue().
Referenced by DecodeERSPANConfig(), DecodeGeneveConfig(), DecodeTeredoConfig(), DecodeVXLANConfig(), DetectEngineFrameMpmRegister(), DetectEngineMpmCachingEnabled(), NFQInitConfig(), PostConfLoadedSetup(), RunModeInitializeThreadSettings(), SigPrepareStage4(), StreamTcpInitConfig(), SuricataInit(), and SuricataPostInit().
int SCConfGetChildValue | ( | const SCConfNode * | base, |
const char * | name, | ||
const char ** | vptr | ||
) |
int SCConfGetChildValueBool | ( | const SCConfNode * | base, |
const char * | name, | ||
int * | val | ||
) |
int SCConfGetChildValueBoolWithDefault | ( | const SCConfNode * | base, |
const SCConfNode * | dflt, | ||
const char * | name, | ||
int * | val | ||
) |
int SCConfGetChildValueInt | ( | const SCConfNode * | base, |
const char * | name, | ||
intmax_t * | val | ||
) |
int SCConfGetChildValueIntWithDefault | ( | const SCConfNode * | base, |
const SCConfNode * | dflt, | ||
const char * | name, | ||
intmax_t * | val | ||
) |
int SCConfGetChildValueWithDefault | ( | const SCConfNode * | base, |
const SCConfNode * | dflt, | ||
const char * | name, | ||
const char ** | vptr | ||
) |
Definition at line 393 of file conf.c.
Referenced by ConfSetBPFFilter().
SCConfNode* SCConfGetChildWithDefault | ( | const SCConfNode * | base, |
const SCConfNode * | dflt, | ||
const char * | name | ||
) |
int SCConfGetDouble | ( | const char * | name, |
double * | val | ||
) |
Retrieve a configuration value as a double.
name | Name of configuration parameter to get. |
val | Pointer to an double that will be set the configuration value. |
1 | will be returned if the name is found and was properly converted to a double, otherwise 0 will be returned. |
Definition at line 600 of file conf.c.
References name, and SCConfGet().
SCConfNode* SCConfGetFirstNode | ( | const SCConfNode * | parent | ) |
Definition at line 204 of file conf.c.
References TAILQ_FIRST.
int SCConfGetFloat | ( | const char * | name, |
float * | val | ||
) |
Retrieve a configuration value as a float.
name | Name of configuration parameter to get. |
val | Pointer to an float that will be set the configuration value. |
1 | will be returned if the name is found and was properly converted to a double, otherwise 0 will be returned. |
Definition at line 630 of file conf.c.
References name, and SCConfGet().
Referenced by RunModeInitializeThreadSettings().
int SCConfGetInt | ( | const char * | name, |
intmax_t * | val | ||
) |
Retrieve a configuration value as an integer.
name | Name of configuration parameter to get. |
val | Pointer to an intmax_t that will be set the configuration value. |
1 | will be returned if the name is found and was properly converted to an integer, otherwise 0 will be returned. |
Definition at line 414 of file conf.c.
References name, SCConfGet(), and SCLogError.
Referenced by DecodeGlobalConfig(), DefragInit(), DetectLoadersInit(), FlowInitConfig(), FlowManagerThreadSpawn(), FlowRecyclerThreadSpawn(), NFQInitConfig(), PacketAlertGetMaxConfig(), SCProfilingInit(), and StreamTcpInitConfig().
SCConfNode* SCConfGetNextNode | ( | const SCConfNode * | node | ) |
Definition at line 209 of file conf.c.
References next, and TAILQ_NEXT.
SCConfNode* SCConfGetNode | ( | const char * | name | ) |
Get a SCConfNode by name.
name | The full name of the configuration node to lookup. |
A | pointer to SCConfNode is found or NULL if the configuration node does not exist. |
Definition at line 181 of file conf.c.
Referenced by ActionInitConfig(), AppLayerParserConfParserEnabled(), AppLayerProtoDetectConfProtoDetectionEnabledDefault(), AppLayerProtoDetectPPParseConfPorts(), DatasetsInit(), DefragPolicyLoadFromConfig(), DetectAddressTestConfVars(), DetectPortTestConfVars(), FlowInitFlowProto(), JsonPgsqlLogRegister(), PcapLogProfileSetup(), PostConfLoadedSetup(), RunModeInitializeOutputs(), RunModeInitializeThreadSettings(), SCConfGet(), SCConfRemove(), SCConfSetIfaceNode(), SCLogLoadConfig(), SCProfilingKeywordsGlobalInit(), SCProfilingPrefilterGlobalInit(), SCProfilingSghsGlobalInit(), and StreamTcpInitConfig().
SCConfNode* SCConfGetRootNode | ( | void | ) |
Get the root configuration node.
Definition at line 222 of file conf.c.
Referenced by SCLoadYamlConfig().
const char* SCConfGetValueNode | ( | const SCConfNode * | node | ) |
Definition at line 214 of file conf.c.
References SCConfNode_::val.
void SCConfInit | ( | void | ) |
Initialize the configuration system.
Definition at line 120 of file conf.c.
Referenced by InitGlobal().
int SCConfNodeChildValueIsTrue | ( | const SCConfNode * | node, |
const char * | key | ||
) |
Test if a configuration node has a true value.
node | The parent configuration node. |
name | The name of the child node to test. |
1 | if the child node has a true value, otherwise 0 is returned, even if the child node does not exist. |
Definition at line 868 of file conf.c.
References SCConfNodeLookupChildValue(), and SCConfValIsTrue().
Referenced by HttpXFFGetCfg(), PcapLogProfileSetup(), PostConfLoadedSetup(), SCProfilingKeywordsGlobalInit(), SCProfilingPrefilterGlobalInit(), and SCProfilingSghsGlobalInit().
void SCConfNodeDump | ( | const SCConfNode * | node, |
const char * | prefix | ||
) |
Dump a configuration node and all its children.
Definition at line 731 of file conf.c.
References SCConfNode_::name, name, next, SCStrdup, TAILQ_FOREACH, and unlikely.
Referenced by SCConfDump().
void SCConfNodeFree | ( | SCConfNode * | node | ) |
Free a SCConfNode and all of its children.
node | The configuration node to SCFree. |
Definition at line 157 of file conf.c.
References SCConfNode_::name, next, SCConfNodeFree(), SCFree, TAILQ_FIRST, TAILQ_REMOVE, and SCConfNode_::val.
Referenced by SCConfNodeFree(), SCConfNodeGetNodeOrCreate(), and SCConfNodeRemove().
SCConfNode* SCConfNodeGetNodeOrCreate | ( | SCConfNode * | parent, |
const char * | name, | ||
int | final | ||
) |
Helper function to get a node, creating it if it does not exist.
This function exits on memory failure as creating configuration nodes is usually part of application initialization.
parent | The node to use as the parent |
name | The name of the configuration node to get. |
final | Flag to set created nodes as final or not. |
The | existing configuration node if it exists, or a newly created node for the provided name. On error, NULL will be returned. |
Definition at line 66 of file conf.c.
References SCConfNode_::final, SCConfNode_::name, name, next, NODE_NAME_MAX, SCConfNode_::parent, SCConfNodeFree(), SCConfNodeLookupChild(), SCConfNodeNew(), SCLogError, SCLogWarning, SCStrdup, strlcpy(), TAILQ_INSERT_TAIL, and unlikely.
bool SCConfNodeHasChildren | ( | const SCConfNode * | node | ) |
Check if a node has any children.
Checks if the provided node has any children. Any node that is a YAML map or array will have children.
node | The node to check. |
true | if node has children |
false | if node does not have children |
Definition at line 777 of file conf.c.
References TAILQ_EMPTY.
int SCConfNodeIsSequence | ( | const SCConfNode * | node | ) |
Check if a node is a sequence or node.
node | the node to check. |
Definition at line 925 of file conf.c.
References SCConfNode_::is_seq.
SCConfNode* SCConfNodeLookupChild | ( | const SCConfNode * | node, |
const char * | name | ||
) |
Lookup a child configuration node by name.
Given a SCConfNode this function will lookup an immediate child SCConfNode by name and return the child ConfNode.
node | The parent configuration node. |
name | The name of the child node to lookup. |
A | pointer the child SCConfNode if found otherwise NULL. |
Definition at line 796 of file conf.c.
References SCConfNode_::name, name, next, and TAILQ_FOREACH.
Referenced by AppLayerProtoDetectPPParseConfPorts(), FileForceHashParseCfg(), FlowInitFlowProto(), HttpXFFGetCfg(), OutputEmailInitConf(), RunModeInitializeOutputs(), SCConfLogOpenGeneric(), SCConfNodeGetNodeOrCreate(), and SCConfNodeLookupChildValue().
const char* SCConfNodeLookupChildValue | ( | const SCConfNode * | node, |
const char * | name | ||
) |
Lookup the value of a child configuration node by name.
Given a parent SCConfNode this function will return the value of a child configuration node by name returning a reference to that value.
node | The parent configuration node. |
name | The name of the child node to lookup. |
A | pointer the child SCConfNodes value if found otherwise NULL. |
Definition at line 824 of file conf.c.
References name, SCConfNodeLookupChild(), and SCConfNode_::val.
Referenced by FileForceHashParseCfg(), FlowInitFlowProto(), HttpXFFGetCfg(), LogHttpLogInitCtx(), LogTcpDataLogInitCtx(), OutputEmailInitConf(), OutputJsonInitCtx(), RunModeInitializeOutputs(), SCConfLogOpenGeneric(), SCConfNodeChildValueIsTrue(), SCProfilingKeywordsGlobalInit(), SCProfilingPrefilterGlobalInit(), and SCProfilingSghsGlobalInit().
SCConfNode* SCConfNodeLookupKeyValue | ( | const SCConfNode * | base, |
const char * | key, | ||
const char * | value | ||
) |
SCConfNode* SCConfNodeNew | ( | void | ) |
Allocate a new configuration node.
An | allocated configuration node on success, NULL on failure. |
Definition at line 139 of file conf.c.
References SCCalloc, TAILQ_INIT, and unlikely.
Referenced by SCConfNodeGetNodeOrCreate().
void SCConfNodePrune | ( | SCConfNode * | node | ) |
Create the path for an include entry.
file | The name of the file |
str | Pointer to the string path + sig_file |
Prune a configuration node.
Pruning a configuration is similar to freeing, but only fields that may be overridden are, leaving final type parameters. Additional the value of the provided node is also free'd, but the node itself is left.
node | The configuration node to prune. |
Definition at line 893 of file conf.c.
References SCConfNode_::final, SCConfNode_::name, next, SCConfNodePrune(), SCFree, TAILQ_EMPTY, TAILQ_FIRST, TAILQ_NEXT, TAILQ_REMOVE, and SCConfNode_::val.
Referenced by SCConfNodePrune().
void SCConfNodeRemove | ( | SCConfNode * | ) |
Remove (and SCFree) the provided configuration node.
Definition at line 653 of file conf.c.
References next, SCConfNode_::parent, SCConfNodeFree(), and TAILQ_REMOVE.
Referenced by SCConfRemove().
void SCConfRegisterTests | ( | void | ) |
Definition at line 1471 of file conf.c.
References UtRegisterTest().
int SCConfRemove | ( | const char * | name | ) |
Remove a configuration parameter from the configuration db.
name | The name of the configuration parameter to remove. |
Returns | 1 if the parameter was removed, otherwise 0 is returned most likely indicating the parameter was not set. |
Definition at line 668 of file conf.c.
References name, SCConfGetNode(), and SCConfNodeRemove().
void SCConfRestoreContextBackup | ( | void | ) |
int SCConfSet | ( | const char * | name, |
const char * | val | ||
) |
Set a configuration value.
Configuration values set with this function may be overridden by subsequent calls, or if the value appears multiple times in a configuration file.
name | The name of the configuration parameter to set. |
val | The value of the configuration parameter. |
1 | if the value was set otherwise 0. |
Definition at line 239 of file conf.c.
Referenced by PostConfLoadedSetup(), and SCConfSetFromString().
int SCConfSetFinal | ( | const char * | name, |
const char * | val | ||
) |
Set a final configuration value.
A final configuration value is a value that cannot be overridden by the configuration file. Its mainly useful for setting values that are supplied on the command line prior to the configuration file being loaded. However, a subsequent call to this function can override a previously set value.
name | The name of the configuration parameter to set. |
val | The value of the configuration parameter. |
1 | if the value was set otherwise 0. |
Definition at line 318 of file conf.c.
Referenced by ConfigSetDataDirectory(), ConfigSetLogDirectory(), SCConfSetFromString(), and SCParseCommandLine().
int SCConfSetFromString | ( | const char * | input, |
int | final | ||
) |
Set a configuration parameter from a string.
Where the input string is something like: stream.midstream=true
input | the input string to be parsed. |
1 | if the value of set, otherwise 0. |
Definition at line 264 of file conf.c.
References name, SCConfSet(), SCConfSetFinal(), SCFree, SCStrdup, and unlikely.
Referenced by main().
SCConfNode* SCConfSetIfaceNode | ( | const char * | ifaces_node_name, |
const char * | iface | ||
) |
Finds an interface from the list of interfaces.
ifaces_node_name | - name of the node which holds a list of interfaces |
iface | - interfaces name |
Definition at line 936 of file conf.c.
References ConfFindDeviceConfig(), SCConfGetNode(), SCLogError, and SCLogNotice.
Referenced by SCConfSetRootAndDefaultNodes().
int SCConfSetRootAndDefaultNodes | ( | const char * | ifaces_node_name, |
const char * | iface, | ||
SCConfNode ** | if_root, | ||
SCConfNode ** | if_default | ||
) |
Finds and sets root and default node of the interface.
ifaces_node_name | Node which holds list of interfaces |
iface | Name of the interface e.g. eth3 |
if_root | Node which will hold the interface configuration |
if_default | Node which is the default configuration in the given list of interfaces |
Definition at line 962 of file conf.c.
References SCConfSetIfaceNode(), and SCLogError.
int SCConfValIsFalse | ( | const char * | val | ) |
Check if a value is false.
The value is considered false if it is a string with the value of 0, no, false or off. The test is not case sensitive, any other value is not false.
val | The string to test for a false value. |
1 | If the value is false, 0 if not. |
Definition at line 576 of file conf.c.
Referenced by AppLayerParserConfParserEnabled(), AppLayerProtoDetectConfProtoDetectionEnabledDefault(), and SCConfLogOpenGeneric().
int SCConfValIsTrue | ( | const char * | val | ) |
Check if a value is true.
The value is considered true if it is a string with the value of 1, yes, true or on. The test is not case sensitive, any other value is false.
val | The string to test for a true value. |
1 | If the value is true, 0 if not. |
Definition at line 551 of file conf.c.
Referenced by AppLayerParserConfParserEnabled(), AppLayerProtoDetectConfProtoDetectionEnabledDefault(), ConfUnixSocketIsEnable(), FileForceHashParseCfg(), LogHttpLogInitCtx(), OutputEmailInitConf(), RunModeInitializeOutputs(), SCConfGetBool(), and SCConfNodeChildValueIsTrue().