/// <summary> /// Parse bytes into a packet /// </summary> /// <param name="LinkLayer"> /// A <see cref="LinkLayers"/> /// </param> /// <param name="PacketData"> /// A <see cref="System.Byte"/> /// </param> /// <returns> /// A <see cref="Packet"/> /// </returns> public static Packet ParsePacket(LinkLayers LinkLayer, byte[] PacketData) { Packet p; var bas = new ByteArraySegment(PacketData); switch (LinkLayer) { case LinkLayers.Ethernet: p = new EthernetPacket(bas); break; case LinkLayers.LinuxSLL: p = new LinuxSLLPacket(bas); break; case LinkLayers.Ppp: p = new PPPPacket(bas); break; case LinkLayers.Ieee80211: p = new Ieee80211MacFrame(bas); break; case LinkLayers.Ieee80211_Radio: p = new Ieee80211RadioPacket(bas); break; default: throw new System.NotImplementedException("LinkLayer of " + LinkLayer + " is not implemented"); } return(p); }
/// <summary> /// Parse bytes into a packet /// </summary> /// <param name="LinkLayer"> /// A <see cref="LinkLayers"/> /// </param> /// <param name="PacketData"> /// A <see cref="System.Byte"/> /// </param> /// <returns> /// A <see cref="Packet"/> /// </returns> public static Packet ParsePacket(LinkLayers LinkLayer, byte[] PacketData) { Packet p; var bas = new ByteArraySegment(PacketData); log.DebugFormat("LinkLayer {0}", LinkLayer); switch (LinkLayer) { case LinkLayers.Ethernet: p = new EthernetPacket(bas); break; case LinkLayers.LinuxSLL: p = new LinuxSLLPacket(bas); break; case LinkLayers.Null: p = new NullPacket(bas); break; case LinkLayers.Ppp: p = new PPPPacket(bas); break; case LinkLayers.Ieee80211: p = Ieee80211.MacFrame.ParsePacket(bas); break; case LinkLayers.Ieee80211_Radio: p = new Ieee80211.RadioPacket(bas); break; case LinkLayers.PerPacketInformation: p = new Ieee80211.PpiPacket(bas); break; case LinkLayers.Raw: p = new RawIPPacket(bas); break; default: throw new System.NotImplementedException("LinkLayer of " + LinkLayer + " is not implemented"); } return(p); }
/// <summary> /// Parse bytes into a packet /// </summary> /// <param name="linkLayer"> /// A <see cref="LinkLayers" /> /// </param> /// <param name="packetData"> /// A <see cref="System.Byte" /> /// </param> /// <returns> /// A <see cref="Packet" /> /// </returns> public static Packet ParsePacket(LinkLayers linkLayer, byte[] packetData) { Packet p; var bas = new ByteArraySegment(packetData); Log.DebugFormat("LinkLayer {0}", linkLayer); switch (linkLayer) { case LinkLayers.Ethernet: p = new EthernetPacket(bas); break; case LinkLayers.LinuxSLL: p = new LinuxSLLPacket(bas); break; case LinkLayers.Ppp: p = new PPPPacket(bas); break; case LinkLayers.Ieee80211: p = MacFrame.ParsePacket(bas); break; case LinkLayers.Ieee80211_Radio: p = new RadioPacket(bas); break; case LinkLayers.PerPacketInformation: p = new PpiPacket(bas); break; //http://sourceforge.net/p/packetnet/patches/1/ case LinkLayers.Raw: var ipVer = (packetData[0] & 0xf0) >> 4; p = (ipVer == 4)? new IPv4Packet(bas) : new IPv6Packet(bas) as Packet; break; default: throw new NotImplementedException("LinkLayer of " + linkLayer + " is not implemented"); } return(p); }