mirror of
https://github.com/zeek/zeek.git
synced 2025-10-07 17:18:20 +00:00
Infrastructure for modularizing protocol analyzers.
There's now a new directory "src/protocols/", and the plan is for each protocol analyzer to eventually have its own subdirectory in there that contains everything it defines (C++/pac/bif). The infrastructure to make that happen is in place, and two analyzers have been converted to the new model, HTTP and SSL; there's no further HTTP/SSL-specific code anywhere else in the core anymore (I believe :-) Further changes: - -N lists available plugins, -NN lists more details on what these plugins provide (analyzers, bif elements). (The latter does not work for analyzers that haven't been converted yet). - *.bif.bro files now go into scripts/base/bif/; and scripts/base/bif/plugins/ for bif files provided by plugins. - I've factored out the bifcl/binpac CMake magic from src/CMakeLists.txt to cmake/{BifCl,Binpac} - There's a new cmake/BroPlugin that contains magic to allow plugins to have a simple CMakeLists.txt. The hope is that eventually the same CMakeLists.txt can be used for compiling a plugin either statically or dynamically. - bifcl has a new option -c that changes the code it generates so that it can be used with a plugin. TODOs: - "make install" is probably broken. - Broxygen is probably broken for plugin-defined events. - event groups are broken (do we want to keep them?)
This commit is contained in:
parent
2be985433c
commit
19c1816ebb
44 changed files with 974 additions and 663 deletions
42
src/plugin/Macros.h
Normal file
42
src/plugin/Macros.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
|
||||
#ifndef PLUGIN_MACROS_H
|
||||
#define PLUGIN_MACROS_H
|
||||
|
||||
#include "analyzer/PluginComponent.h"
|
||||
|
||||
#define BRO_PLUGIN_VERSION_BUILTIN -1
|
||||
#define BRO_PLUGIN_API_VERSION 1
|
||||
|
||||
#define _BRO_PLUGIN_VERSION_DEFAULT -1
|
||||
|
||||
#define BRO_PLUGIN_BEGIN(_name) \
|
||||
namespace plugin { namespace _name { \
|
||||
class Plugin : public plugin::Plugin { \
|
||||
protected: \
|
||||
void Init() \
|
||||
{ \
|
||||
plugin::Description _desc; \
|
||||
_desc.name = #_name; \
|
||||
_desc.version = _BRO_PLUGIN_VERSION_DEFAULT; \
|
||||
_desc.api_version = BRO_PLUGIN_API_VERSION;
|
||||
|
||||
#define BRO_PLUGIN_END \
|
||||
SetDescription(_desc); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
static Plugin __plugin; \
|
||||
} }
|
||||
|
||||
#define BRO_PLUGIN_DESCRIPTION _desc.description
|
||||
#define BRO_PLUGIN_URL _desc.url
|
||||
#define BRO_PLUGIN_VERSION _desc.version
|
||||
|
||||
#define BRO_PLUGIN_BIF_FILE(file) \
|
||||
std::list<std::pair<std::string, int> > __bif_##file##_init(); \
|
||||
AddBifInitFunction(&__bif_##file##_init);
|
||||
|
||||
#define BRO_PLUGIN_ANALYZER(tag, factory, enabled, partial) \
|
||||
AddComponent(new ::analyzer::PluginComponent(tag, factory, enabled, partial));
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue