mirror of
https://github.com/zeek/zeek.git
synced 2025-10-04 15:48:19 +00:00
Allow setting packet and byte thresholds for connections.
This extends the ConnSize analyzer to be able to raise events when each direction of a connection crosses a certain amount of bytes or packets. Thresholds are set using set_conn_bytes_threshold(c$id, [num-bytes], [direction]); and set_conn_packets_threshold(c$id, [num-packets], [direction]); respectively. They raise the event event conn_bytes_threshold_crossed(c: connection, threshold: count, is_orig: bool) and event conn_packets_threshold_crossed(c: connection, threshold: count, is_orig: bool) respectively. Current thresholds can be examined using get_conn_bytes_threshold and get_conn_packets_threshold Currently only one threshold can be set per connection. This also fixes a bug where child packet analyzers of the TCP analyzer where not found using FindChild.
This commit is contained in:
parent
a129911272
commit
f7edf70882
10 changed files with 321 additions and 4 deletions
|
@ -367,6 +367,41 @@ void TCP_Analyzer::Done()
|
|||
finished = 1;
|
||||
}
|
||||
|
||||
analyzer::Analyzer* TCP_Analyzer::FindChild(ID arg_id)
|
||||
{
|
||||
analyzer::Analyzer* child = analyzer::TransportLayerAnalyzer::FindChild(arg_id);
|
||||
|
||||
if ( child )
|
||||
return child;
|
||||
|
||||
LOOP_OVER_GIVEN_CHILDREN(i, packet_children)
|
||||
{
|
||||
analyzer::Analyzer* child = (*i)->FindChild(arg_id);
|
||||
if ( child )
|
||||
return child;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
analyzer::Analyzer* TCP_Analyzer::FindChild(Tag arg_tag)
|
||||
{
|
||||
analyzer::Analyzer* child = analyzer::TransportLayerAnalyzer::FindChild(arg_tag);
|
||||
|
||||
if ( child )
|
||||
return child;
|
||||
|
||||
LOOP_OVER_GIVEN_CHILDREN(i, packet_children)
|
||||
{
|
||||
analyzer::Analyzer* child = (*i)->FindChild(arg_tag);
|
||||
if ( child )
|
||||
return child;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void TCP_Analyzer::EnableReassembly()
|
||||
{
|
||||
SetReassembler(new TCP_Reassembler(this, this,
|
||||
|
@ -1764,6 +1799,15 @@ bool TCP_Analyzer::HadGap(bool is_orig) const
|
|||
return endp && endp->HadGap();
|
||||
}
|
||||
|
||||
void TCP_Analyzer::AddChildPacketAnalyzer(analyzer::Analyzer* a)
|
||||
{
|
||||
DBG_LOG(DBG_ANALYZER, "%s added packet child %s",
|
||||
this->GetAnalyzerName(), a->GetAnalyzerName());
|
||||
|
||||
packet_children.push_back(a);
|
||||
a->SetParent(this);
|
||||
}
|
||||
|
||||
int TCP_Analyzer::DataPending(TCP_Endpoint* closing_endp)
|
||||
{
|
||||
if ( Skipping() )
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue