mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00

This allows the path for the default filter to be specified explicitly when creating a stream and reduces the need to rely on the default path function to magically supply the path. The default path function is now only used if, when a filter is added to a stream, it has neither a path nor a path function already. Adapted the existing Log::create_stream calls to explicitly specify a path value. Addresses BIT-1324
42 lines
1.5 KiB
Text
42 lines
1.5 KiB
Text
##! This script provides infrastructure for logging devices for which Bro has
|
|
##! been able to determine the MAC address, and it logs them once per day (by
|
|
##! default). The log that is output provides an easy way to determine a count
|
|
##! of the devices in use on a network per day.
|
|
##!
|
|
##! .. note::
|
|
##!
|
|
##! This script will not generate any logs on its own, it needs to be
|
|
##! supplied with information from elsewhere, such as
|
|
##! :doc:`/scripts/policy/protocols/dhcp/known-devices-and-hostnames.bro`.
|
|
|
|
module Known;
|
|
|
|
export {
|
|
## The known-hosts logging stream identifier.
|
|
redef enum Log::ID += { DEVICES_LOG };
|
|
|
|
## The record type which contains the column fields of the known-devices
|
|
## log.
|
|
type DevicesInfo: record {
|
|
## The timestamp at which the host was detected.
|
|
ts: time &log;
|
|
## The MAC address that was detected.
|
|
mac: string &log;
|
|
};
|
|
|
|
## The set of all known MAC addresses. It can accessed from other
|
|
## scripts to add, and check for, addresses seen in use.
|
|
##
|
|
## We maintain each entry for 24 hours by default so that the existence
|
|
## of individual addresses is logged each day.
|
|
global known_devices: set[string] &create_expire=1day &synchronized &redef;
|
|
|
|
## An event that can be handled to access the :bro:type:`Known::DevicesInfo`
|
|
## record as it is sent on to the logging framework.
|
|
global log_known_devices: event(rec: DevicesInfo);
|
|
}
|
|
|
|
event bro_init()
|
|
{
|
|
Log::create_stream(Known::DEVICES_LOG, [$columns=DevicesInfo, $ev=log_known_devices, $path="known_devices"]);
|
|
}
|