internal static void CompareProtocols(object currentDatagram, XElement layersContainer) { foreach (var layer in layersContainer.Protocols()) { switch (layer.Name()) { case "geninfo": case "raw": break; case "frame": CompareFrame(layer, (Packet)currentDatagram); break; default: var comparer = WiresharkDatagramComparer.GetComparer(layer.Name()); if (comparer == null) { return; } currentDatagram = comparer.Compare(layer, currentDatagram); if (currentDatagram == null) { return; } break; } } }
internal static void CompareProtocols(object currentDatagram, XElement layersContainer, bool parentLayerSuccess) { Dictionary <string, int> layerNameToCount = new Dictionary <string, int>(); foreach (var layer in layersContainer.Protocols()) { string layerName = layer.Name(); if (!layerNameToCount.ContainsKey(layerName)) { layerNameToCount[layerName] = 1; } else { ++layerNameToCount[layerName]; } switch (layerName) { case "geninfo": case "raw": break; case "frame": CompareFrame(layer, (Packet)currentDatagram); break; default: var comparer = WiresharkDatagramComparer.GetComparer(layer.Name(), layerNameToCount[layerName], layersContainer.Name(), parentLayerSuccess); if (comparer == null) { return; } currentDatagram = comparer.Compare(layer, currentDatagram); if (currentDatagram == null) { return; } break; } } }