private void LinkL7ConversationAndFlow(FsUnidirectionalFlow flow) { if (flow != null) { flow.L7Conversation = this; } }
private HashSet <PmCaptureBase> GetAllCapturesFromFlows(FsUnidirectionalFlow upFlow, FsUnidirectionalFlow downFlow) { var captures = new HashSet <PmCaptureBase>(); GetCapturesFromFlow(upFlow, captures); GetCapturesFromFlow(downFlow, captures); return(captures); }
private static void GetCapturesFromFlow(FsUnidirectionalFlow flow, HashSet <PmCaptureBase> captures) { if (flow == null) { return; } foreach (var capture in flow.L4Conversation.Captures) { captures.Add(capture); } }
} //EF public L7Conversation(FsUnidirectionalFlow flow, DaRFlowDirection flowDirection, IWindsorContainer localWindsorContainer) { this.InvestigationWindsorContainer = localWindsorContainer; switch (flowDirection) { case DaRFlowDirection.up: this.InitializeConversation(flow, null); break; case DaRFlowDirection.down: this.InitializeConversation(null, flow); break; case DaRFlowDirection.non: default: throw new ArgumentOutOfRangeException(nameof(flowDirection), flowDirection, null); } }
private WeakConccurentCollection <PmFrameBase> GetAllFramesFromFlows(FsUnidirectionalFlow upFlow, FsUnidirectionalFlow downFlow) { var frames = new WeakConccurentCollection <PmFrameBase>(); if (upFlow == null && downFlow != null) { frames.AddRange(this.L7PDUs.SelectMany(p => p.FrameList).Concat(downFlow.NonDataFrames)); } else if (upFlow != null && downFlow == null) { frames.AddRange(this.L7PDUs.SelectMany(p => p.FrameList).Concat(upFlow.NonDataFrames)); } else { frames.AddRange(this.L7PDUs.SelectMany(p => p.FrameList).Concat(downFlow.NonDataFrames).Concat(upFlow.NonDataFrames)); } return(frames); }
private void InitializeConversation(FsUnidirectionalFlow upFlow, FsUnidirectionalFlow downFlow) { this.L4Conversation = upFlow?.L4Conversation ?? downFlow?.L4Conversation; this.UnorderedL7PDUs = this.MergeUpDownPdus(upFlow?.PDUs, downFlow?.PDUs); this.LinkL7ConversationAndFlows(upFlow, downFlow); this.Frames = this.GetAllFramesFromFlows(upFlow, downFlow); foreach (var frame in this.Frames) { frame.L7ConversationRefId = this.Id; } this.Captures = new WeakConccurentCollection <PmCaptureBase>(this.GetAllCapturesFromFlows(upFlow, downFlow)); this.ConversationFlowStatistics = new WeakConccurentCollection <L7ConversationStatistics>(); this.UpConversationStatistic = new L7ConversationStatistics(upFlow, this, DaRFlowDirection.up); this.DownConversationStatistic = new L7ConversationStatistics(downFlow, this, DaRFlowDirection.down); }
public L7ConversationStatistics(FsUnidirectionalFlow flow, L7Conversation l7conversation, DaRFlowDirection flowDirection) : base(flowDirection, l7conversation) { this.L7Conversation = l7conversation; this.L7ConversationRefId = l7conversation.Id; if (flow == null) { return; } foreach (var frame in flow.RealFrames) { base.ProcessFrame(frame); this.ExtractedBytes += frame.L7PayloadLength; } foreach (var frame in flow.VirtualFrames) { base.ProcessFrame(frame); this.MissingFrames++; this.MissingBytes += frame.L7PayloadLength; } }
public L7PDU(FsUnidirectionalFlow baseFlow, L7PDU l7Pdu) : this(baseFlow) { this.CopyL7Pdu(l7Pdu); }
public L7PDU(FsUnidirectionalFlow baseFlow) { this.BaseFlow = baseFlow; this.IsContainingCorruptedData = false; }
public L7Conversation(FsUnidirectionalFlow upFlow, FsUnidirectionalFlow downFlow, IWindsorContainer localWindsorContainer) { this.InvestigationWindsorContainer = localWindsorContainer; this.InitializeConversation(upFlow, downFlow); }
private void LinkL7ConversationAndFlows(FsUnidirectionalFlow upFlow, FsUnidirectionalFlow downFlow) { this.LinkL7ConversationAndFlow(upFlow); this.LinkL7ConversationAndFlow(downFlow); }