From: Victor Julien Date: Thu, 12 Feb 2015 11:39:27 +0000 (+0100) Subject: multi-detect: set selector from yaml X-Git-Tag: suricata-3.0RC1~212 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6f290fac74c51384fb6a89feb94f25bd740d5a8;p=thirdparty%2Fsuricata.git multi-detect: set selector from yaml Yaml setting is: multi-detect.selector Implement 'vlan' and 'direct'. --- diff --git a/src/detect-engine.c b/src/detect-engine.c index 5e0ce3f78c..bec2c8baed 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -1679,13 +1679,31 @@ int DetectEngineMultiTenantEnabled(void) void DetectEngineMultiTenantSetup(void) { DetectEngineMasterCtx *master = &g_master_de_ctx; + SCMutexLock(&master->lock); int enabled = 0; (void)ConfGetBool("multi-detect.enabled", &enabled); if (enabled == 1) { master->multi_tenant_enabled = 1; + + char *handler = NULL; + if (ConfGet("multi-detect.selector", &handler) == 1) { + SCLogInfo("selector %s", handler); + + if (strcmp(handler, "vlan") == 0) { + master->tenant_selector = TENANT_SELECTOR_VLAN; + } else if (strcmp(handler, "direct") == 0) { + master->tenant_selector = TENANT_SELECTOR_DIRECT; + } else { + SCLogError(SC_ERR_INVALID_VALUE, "unknown value %s " + "multi-detect.selector", handler); + goto end; + } + } + SCLogInfo("multi-detect is enabled (multi tenancy). Selector: %s", handler); } - SCLogInfo("multi-detect is %s (multi tenancy)", - master->multi_tenant_enabled ? "enabled" : "disabled"); + SCLogDebug("multi-detect not enabled (multi tenancy)"); +end: + SCMutexUnlock(&master->lock); } uint32_t DetectEngineTentantGetIdFromVlanId(const void *ctx, const Packet *p)