Commit 9452bc0f authored by Brickner_cp's avatar Brickner_cp

VLanTaggedFrame

parent 7228fb73
...@@ -57,7 +57,7 @@ namespace PcapDotNet.Packets.Test ...@@ -57,7 +57,7 @@ namespace PcapDotNet.Packets.Test
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, payloadLayer); Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, payloadLayer);
// Ethernet // Ethernet
Assert.IsTrue(new[] {EthernetType.IpV4, EthernetType.Arp}.Contains(packet.Ethernet.EtherType) || Assert.IsTrue(new[] {EthernetType.IpV4, EthernetType.Arp, EthernetType.VLanTaggedFrame}.Contains(packet.Ethernet.EtherType) ||
packet.IsValid, "IsValid - EtherType = " + packet.Ethernet.EtherType); packet.IsValid, "IsValid - EtherType = " + packet.Ethernet.EtherType);
Assert.AreEqual(packet.Length - EthernetDatagram.HeaderLengthValue, packet.Ethernet.PayloadLength, "PayloadLength"); Assert.AreEqual(packet.Length - EthernetDatagram.HeaderLengthValue, packet.Ethernet.PayloadLength, "PayloadLength");
Assert.AreEqual(ethernetLayer, packet.Ethernet.ExtractLayer(), "Ethernet Layer"); Assert.AreEqual(ethernetLayer, packet.Ethernet.ExtractLayer(), "Ethernet Layer");
......
...@@ -221,9 +221,9 @@ namespace PcapDotNet.Packets.Test ...@@ -221,9 +221,9 @@ namespace PcapDotNet.Packets.Test
PacketBuilder packetBuilder = new PacketBuilder(ethernetLayer, ipV4Layer, greLayer); PacketBuilder packetBuilder = new PacketBuilder(ethernetLayer, ipV4Layer, greLayer);
Packet packet = packetBuilder.Build(DateTime.Now); Packet packet = packetBuilder.Build(DateTime.Now);
Assert.IsTrue(packet.IsValid || Assert.IsTrue(packet.IsValid ||
new[]{EthernetType.IpV4, EthernetType.Arp}.Contains(greLayer.ProtocolType), new[] {EthernetType.IpV4, EthernetType.Arp, EthernetType.VLanTaggedFrame}.Contains(greLayer.ProtocolType),
"IsValid. ProtoclType=" + greLayer.ProtocolType); "IsValid. ProtoclType=" + greLayer.ProtocolType);
GreDatagram gre = packet.Ethernet.IpV4.Gre; GreDatagram gre = packet.Ethernet.IpV4.Gre;
......
...@@ -114,7 +114,7 @@ namespace PcapDotNet.Packets.Ethernet ...@@ -114,7 +114,7 @@ namespace PcapDotNet.Packets.Ethernet
return false; return false;
Datagram payloadByEtherType = PayloadByEtherType; Datagram payloadByEtherType = PayloadByEtherType;
return payloadByEtherType == null ? true : payloadByEtherType.IsValid; return payloadByEtherType == null || payloadByEtherType.IsValid;
} }
private static readonly MacAddress _broadcastAddress = new MacAddress("FF:FF:FF:FF:FF:FF"); private static readonly MacAddress _broadcastAddress = new MacAddress("FF:FF:FF:FF:FF:FF");
......
using PcapDotNet.Packets.Arp; using PcapDotNet.Packets.Arp;
using PcapDotNet.Packets.IpV4; using PcapDotNet.Packets.IpV4;
using PcapDotNet.Packets.VLanTaggedFrame;
namespace PcapDotNet.Packets.Ethernet namespace PcapDotNet.Packets.Ethernet
{ {
...@@ -14,11 +15,14 @@ namespace PcapDotNet.Packets.Ethernet ...@@ -14,11 +15,14 @@ namespace PcapDotNet.Packets.Ethernet
{ {
switch (ethernetType) switch (ethernetType)
{ {
case EthernetType.IpV4:
return IpV4;
case EthernetType.Arp: case EthernetType.Arp:
return Arp; return Arp;
case EthernetType.IpV4: case EthernetType.VLanTaggedFrame:
return IpV4; return VLanTaggedFrame;
default: default:
return null; return null;
...@@ -51,6 +55,16 @@ namespace PcapDotNet.Packets.Ethernet ...@@ -51,6 +55,16 @@ namespace PcapDotNet.Packets.Ethernet
} }
} }
public VLanTaggedFrameDatagram VLanTaggedFrame
{
get
{
if (_vLanTaggedFrame == null && _payload != null)
_vLanTaggedFrame = new VLanTaggedFrameDatagram(_payload.Buffer, _payload.StartOffset, _payload.Length);
return _vLanTaggedFrame;
}
}
/// <summary> /// <summary>
/// The Ethernet payload. /// The Ethernet payload.
/// </summary> /// </summary>
...@@ -62,5 +76,6 @@ namespace PcapDotNet.Packets.Ethernet ...@@ -62,5 +76,6 @@ namespace PcapDotNet.Packets.Ethernet
private readonly Datagram _payload; private readonly Datagram _payload;
private IpV4Datagram _ipV4; private IpV4Datagram _ipV4;
private ArpDatagram _arp; private ArpDatagram _arp;
private VLanTaggedFrameDatagram _vLanTaggedFrame;
} }
} }
\ No newline at end of file
...@@ -126,7 +126,16 @@ namespace PcapDotNet.Packets.VLanTaggedFrame ...@@ -126,7 +126,16 @@ namespace PcapDotNet.Packets.VLanTaggedFrame
/// </summary> /// </summary>
protected override bool CalculateIsValid() protected override bool CalculateIsValid()
{ {
return Length >= HeaderLength; if (Length < HeaderLength)
return false;
Datagram payload = PayloadByEtherType;
return payload == null || payload.IsValid;
}
internal VLanTaggedFrameDatagram(byte[] buffer, int offset, int length)
: base(buffer, offset, length)
{
} }
/* /*
...@@ -146,9 +155,5 @@ namespace PcapDotNet.Packets.VLanTaggedFrame ...@@ -146,9 +155,5 @@ namespace PcapDotNet.Packets.VLanTaggedFrame
buffer.Write(ref offset, targetProtocolAddress); buffer.Write(ref offset, targetProtocolAddress);
} }
*/ */
private VLanTaggedFrameDatagram(byte[] buffer, int offset, int length)
: base(buffer, offset, length)
{
}
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment