Example #1
0
 private void AddInterface(INetworkLog <INetworkInterface> reporter, INetworkInterface iface)
 {
     lock (innerLock)
     {
         if (observedInterfaces.ContainsKey(reporter))
         {
             if (!observedInterfaces[reporter].Contains(iface))
             {
                 observedInterfaces[reporter].Add(iface);
                 wiresharkSender.TryOpenWireshark();
                 reporter.FrameTransmitted += SendTransmittedFrame;
                 reporter.FrameProcessed   += SendTransmittedFrame;
             }
             else
             {
                 if (!wiresharkSender.TryOpenWireshark())
                 {
                     throw new RecoverableException("The interface is already being logged in this Wireshark instance.");
                 }
             }
         }
         else
         {
             observedInterfaces.Add(reporter, new List <INetworkInterface>()
             {
                 iface
             });
             wiresharkSender.TryOpenWireshark();
             reporter.FrameTransmitted += SendTransmittedFrame;
             reporter.FrameProcessed   += SendTransmittedFrame;
         }
     }
 }
Example #2
0
 public void LogToWireshark(INetworkLog <INetworkInterface> reporter, INetworkInterface iface)
 {
     lock (innerLock)
     {
         if (IsConfiguredForMediumType(reporter))
         {
             AddInterface(reporter, iface);
         }
     }
 }
Example #3
0
 private void DetachMedium(INetworkLog <INetworkInterface> reporter)
 {
     lock (innerLock)
     {
         if (observedMedium.Contains(reporter))
         {
             observedMedium.Remove(reporter);
             reporter.FrameProcessed -= SendProcessedFrame;
         }
         else
         {
             throw new RecoverableException("Wireshark doesn't contain this medium");
         }
     }
 }
Example #4
0
 private static Wireshark GetConfiguredWireshark(Emulation emulation, INetworkLog <INetworkInterface> reporter, string hostName)
 {
     if (reporter is WirelessMedium)
     {
         return(CreateWirelessConfiguredWireshark(emulation, hostName));
     }
     else if (reporter is Switch)
     {
         return(CreateEthernetConfiguredWireshark(emulation, hostName));
     }
     else
     {
         throw new ArgumentException("Expected Switch or WirelessMedium.");
     }
 }
Example #5
0
 private void AddMedium(INetworkLog <INetworkInterface> reporter)
 {
     lock (innerLock)
     {
         if (!observedMedium.Contains(reporter))
         {
             observedMedium.Add(reporter);
             wiresharkSender.TryOpenWireshark();
             reporter.FrameProcessed += SendProcessedFrame;
         }
         else
         {
             if (!wiresharkSender.TryOpenWireshark())
             {
                 throw new RecoverableException("The medium is already being logged in this Wireshark instance.");
             }
         }
     }
 }
Example #6
0
        private bool IsConfiguredForMediumType(INetworkLog <INetworkInterface> medium)
        {
            var typeOfInterface = medium.GetType();

            lock (innerLock)
            {
                if (mediumToLinkLayer[typeOfInterface] == layer)
                {
                    return(true);
                }
            }
            if (layer == LinkLayer.Wireless_802_15_4)
            {
                throw new RecoverableException("Cannot log ethernet traffic to wireless-configured Wireshark.");
            }
            else
            {
                throw new RecoverableException("Cannot log wireless traffic to ethernet-configured Wireshark.");
            }
        }
Example #7
0
 public void DetachFrom(INetworkLog <INetworkInterface> reporter)
 {
     DetachMedium(reporter);
 }
Example #8
0
 public static void LogToWireshark(this Emulation emulation, INetworkLog <INetworkInterface> reporter)
 {
     GetConfiguredWireshark(emulation, reporter, GetName(reporter)).LogToWireshark(reporter);
 }