Input::add_table 関数を使用して IP とそれに対応するホスト名を検索し、それらを conn_id レコードに挿入する bro スクリプトを作成したので、すべてのログ ファイルに id.source_name と id.destination_name が含まれます。これは、トンネル イベントがある場合を除いて正常に機能し、セグメンテーション エラーでクラッシュします。これはカプセル化IDと関係があると思われますが、よくわかりません。各タイプの Info レコードに 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;
}
}