##! This script handles core generated connection related "weird" events to
##! push weird information about connections into the weird framework.
##! For live operational deployments, this can frequently cause load issues
##! due to large numbers of these events and quite possibly shouldn't be
##! loaded.

@load base/frameworks/notice

module Conn;

export {
	redef enum Notice::Type += {
		## Possible evasion; usually just chud.
		Retransmission_Inconsistency,
		## Data has sequence hole; perhaps due to filtering.
		Content_Gap,
	};
}

event rexmit_inconsistency(c: connection, t1: string, t2: string, tcp_flags: string)
	{
	NOTICE(Notice::Info($note=Retransmission_Inconsistency,
	                    $conn=c,
	                    $msg=fmt("%s rexmit inconsistency (%s) (%s) [%s]",
	                             id_string(c$id), t1, t2, tcp_flags),
	                    $identifier=fmt("%s", c$id)));
	}

event content_gap(c: connection, is_orig: bool, seq: count, length: count)
	{
	NOTICE(Notice::Info($note=Content_Gap, $conn=c,
	                    $msg=fmt("%s content gap (%s %d/%d)",
	                             id_string(c$id), is_orig ? ">" : "<", seq, length)));
	}
