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);
        }
Exemple #7
0
        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;
            }
        }
Exemple #8
0
 public L7PDU(FsUnidirectionalFlow baseFlow, L7PDU l7Pdu) : this(baseFlow)
 {
     this.CopyL7Pdu(l7Pdu);
 }
Exemple #9
0
 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);
 }