我已经使用 Input::add_table 函数编写了一个兄弟脚本来查找 IP 及其相应的主机名并将它们插入到 conn_id 记录中 - 这样我在每个日志文件中都有 id.source_name 和 id.destination_name 。这工作正常,除非有隧道事件并且它因分段错误而崩溃。我怀疑这与封装 ID 有关,但我真的不知道。我知道我可以将 src 和 dest 名称添加到每种类型的信息记录中,但这意味着修改每种类型。我正在尝试做的事情从根本上是不正确的,还是隧道代码中是否存在导致崩溃的错误?或者有没有更好的方法来做到这一点
export {
global host_table: table[addr] of Val = table();
}
redef record conn_id += {
src_name: string &optional &log;
dest_name: string &optional &log;
};
const host_file = “hosts.txt”
event bro_init() &priority=20
{
Input::add_table([$source=host_file, $name =“host_stream”, $idx=Idx, $val=Val, $destination=host_table]);
Input::remove(“host_stream”);
}
event new_connection( c: connection ) {
if( c$id$orig_h in host_table ) {
c$id$src_name = host_table[c$id$orig_h]$host;
}
if( c$id$resp_h in host_table ) {
c$id$dest_name = host_table[c$id$resp_h]$host;
}
}