Commit 9452bc0f authored by Brickner_cp's avatar Brickner_cp

VLanTaggedFrame

parent 7228fb73
......@@ -57,7 +57,7 @@ namespace PcapDotNet.Packets.Test
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, payloadLayer);
// 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);
Assert.AreEqual(packet.Length - EthernetDatagram.HeaderLengthValue, packet.Ethernet.PayloadLength, "PayloadLength");
Assert.AreEqual(ethernetLayer, packet.Ethernet.ExtractLayer(), "Ethernet Layer");
......
......@@ -221,9 +221,9 @@ namespace PcapDotNet.Packets.Test
PacketBuilder packetBuilder = new PacketBuilder(ethernetLayer, ipV4Layer, greLayer);
Packet packet = packetBuilder.Build(DateTime.Now);
Assert.IsTrue(packet.IsValid ||
new[]{EthernetType.IpV4, EthernetType.Arp}.Contains(greLayer.ProtocolType),
"IsValid. ProtoclType=" + greLayer.ProtocolType);
Assert.IsTrue(packet.IsValid ||
new[] {EthernetType.IpV4, EthernetType.Arp, EthernetType.VLanTaggedFrame}.Contains(greLayer.ProtocolType),
"IsValid. ProtoclType=" + greLayer.ProtocolType);
GreDatagram gre = packet.Ethernet.IpV4.Gre;
......
......@@ -114,7 +114,7 @@ namespace PcapDotNet.Packets.Ethernet
return false;
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");
......
using PcapDotNet.Packets.Arp;
using PcapDotNet.Packets.IpV4;
using PcapDotNet.Packets.VLanTaggedFrame;
namespace PcapDotNet.Packets.Ethernet
{
......@@ -14,11 +15,14 @@ namespace PcapDotNet.Packets.Ethernet
{
switch (ethernetType)
{
case EthernetType.IpV4:
return IpV4;
case EthernetType.Arp:
return Arp;
case EthernetType.IpV4:
return IpV4;
case EthernetType.VLanTaggedFrame:
return VLanTaggedFrame;
default:
return null;
......@@ -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>
/// The Ethernet payload.
/// </summary>
......@@ -62,5 +76,6 @@ namespace PcapDotNet.Packets.Ethernet
private readonly Datagram _payload;
private IpV4Datagram _ipV4;
private ArpDatagram _arp;
private VLanTaggedFrameDatagram _vLanTaggedFrame;
}
}
\ No newline at end of file
......@@ -126,7 +126,16 @@ namespace PcapDotNet.Packets.VLanTaggedFrame
/// </summary>
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
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