diff --git a/scripts/base/frameworks/cluster/main.zeek b/scripts/base/frameworks/cluster/main.zeek index d56b4f5655..bff45bf29e 100644 --- a/scripts/base/frameworks/cluster/main.zeek +++ b/scripts/base/frameworks/cluster/main.zeek @@ -585,7 +585,7 @@ function log(msg: string) function init(): bool { - return Cluster::Backend::__init(); + return Cluster::Backend::__init(Cluster::node_id()); } function subscribe(topic: string): bool diff --git a/src/cluster/Backend.h b/src/cluster/Backend.h index bef6e3fa4e..a0eb6c4412 100644 --- a/src/cluster/Backend.h +++ b/src/cluster/Backend.h @@ -149,8 +149,14 @@ public: /** * Method invoked from the Cluster::Backend::__init() bif. + * + * @param nid The node identifier to use. */ - bool Init() { return DoInit(); } + bool Init(std::string nid) { + node_id = std::move(nid); + + return DoInit(); + } /** * Hook invoked when Zeek is about to terminate. @@ -209,6 +215,11 @@ public: return DoPublishLogWrites(header, records); } + /** + * @return This backend's node identifier. + */ + const std::string& NodeId() const { return node_id; } + protected: /** * Constructor. @@ -362,6 +373,11 @@ private: std::unique_ptr event_serializer; std::unique_ptr log_serializer; std::unique_ptr event_handling_strategy; + + /** + * The backend's instance cluster node identifier. + */ + std::string node_id; }; /** diff --git a/src/cluster/cluster.bif b/src/cluster/cluster.bif index 2ec1e81c92..ec2c8f115e 100644 --- a/src/cluster/cluster.bif +++ b/src/cluster/cluster.bif @@ -64,9 +64,9 @@ function Cluster::__unsubscribe%(topic_prefix: string%): bool ## Initialize the global cluster backend. ## ## Returns: true on success. -function Cluster::Backend::__init%(%): bool +function Cluster::Backend::__init%(nid: string%): bool %{ - auto rval = zeek::cluster::backend->Init(); + auto rval = zeek::cluster::backend->Init(nid->ToStdString()); return zeek::val_mgr->Bool(rval); %}