From ceafa6c1d08de9f2585945de47e324bdd4c4b4bf Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Mon, 26 Nov 2018 15:07:35 +0000 Subject: [PATCH] Use flags to check for NAT in conntrack data --- probe/endpoint/connection_tracker.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/probe/endpoint/connection_tracker.go b/probe/endpoint/connection_tracker.go index e65c4d3c5..8d3e3cbbf 100644 --- a/probe/endpoint/connection_tracker.go +++ b/probe/endpoint/connection_tracker.go @@ -43,18 +43,19 @@ func newConnectionTracker(conf ReporterConfig) connectionTracker { } func flowToTuple(f conntrack.Conn) (ft fourTuple) { - ft = fourTuple{ - f.Orig.Src.String(), - f.Orig.Dst.String(), - uint16(f.Orig.SrcPort), - uint16(f.Orig.DstPort), - } - // Handle DNAT-ed connections in the initial state - if !f.Orig.Dst.Equal(f.Reply.Src) { + if (f.Status & conntrack.IPS_DST_NAT) == 0 { ft = fourTuple{ - f.Reply.Dst.String(), + f.Orig.Src.String(), + f.Orig.Dst.String(), + uint16(f.Orig.SrcPort), + uint16(f.Orig.DstPort), + } + } else { + // Handle DNAT-ed connections in the initial state + ft = fourTuple{ + f.Orig.Src.String(), f.Reply.Src.String(), - uint16(f.Reply.DstPort), + uint16(f.Orig.SrcPort), uint16(f.Reply.SrcPort), } }