void moloch_plugins_load(char **plugins) { if (!config.pluginsDir) return; if (!plugins) return; if (!g_module_supported ()) { LOG("ERROR - glib compiled without module support"); return; } moloch_add_can_quit((MolochCanQuitFunc)moloch_plugins_outstanding, "plugin outstanding"); int i; for (i = 0; plugins[i]; i++) { const char *name = plugins[i]; int d; GModule *plugin = 0; for (d = 0; config.pluginsDir[d]; d++) { gchar *path = g_build_filename (config.pluginsDir[d], name, NULL); if (!g_file_test(path, G_FILE_TEST_EXISTS)) { g_free (path); continue; } plugin = g_module_open (path, 0); /*G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);*/ if (!plugin) { LOG("ERROR - Couldn't load plugin %s from '%s'\n%s", name, path, g_module_error()); g_free (path); continue; } g_free (path); break; } if (!plugin) { LOG("WARNING - plugin '%s' not found", name); continue; } MolochPluginInitFunc plugin_init; if (!g_module_symbol(plugin, "moloch_plugin_init", (gpointer *)(char*)&plugin_init) || plugin_init == NULL) { LOG("ERROR - Module %s doesn't have a moloch_plugin_init", name); continue; } plugin_init(); } }
void moloch_session_init() { uint32_t primes[] = {10007, 49999, 99991, 199799, 400009, 500009, 732209, 1092757, 1299827, 1500007, 1987411, 2999999}; int p; for (p = 0; p < 12; p++) { if (primes[p] >= config.maxStreams/2) break; } if (p == 12) p = 11; protocolField = moloch_field_define("general", "termfield", "protocols", "Protocols", "prot-term", "Protocols set for session", MOLOCH_FIELD_TYPE_STR_HASH, MOLOCH_FIELD_FLAG_COUNT | MOLOCH_FIELD_FLAG_LINKED_SESSIONS, NULL); if (config.debug) LOG("session hash size %d", primes[p]); int t; for (t = 0; t < config.packetThreads; t++) { HASHP_INIT(h_, sessions[t][SESSION_UDP], primes[p], moloch_session_hash, moloch_session_cmp); HASHP_INIT(h_, sessions[t][SESSION_TCP], primes[p], moloch_session_hash, moloch_session_cmp); HASHP_INIT(h_, sessions[t][SESSION_ICMP], primes[p], moloch_session_hash, moloch_session_cmp); DLL_INIT(q_, &sessionsQ[t][SESSION_UDP]); DLL_INIT(q_, &sessionsQ[t][SESSION_TCP]); DLL_INIT(q_, &sessionsQ[t][SESSION_ICMP]); DLL_INIT(tcp_, &tcpWriteQ[t]); DLL_INIT(q_, &closingQ[t]); DLL_INIT(cmd_, &sessionCmds[t]); MOLOCH_LOCK_INIT(sessionCmds[t].lock); } moloch_add_can_quit(moloch_session_cmd_outstanding, "session commands outstanding"); moloch_add_can_quit(moloch_session_close_outstanding, "session close outstanding"); moloch_add_can_quit(moloch_session_need_save_outstanding, "session save outstanding"); }