Commit b1f027ad authored by Brickner_cp's avatar Brickner_cp

GRE

parent 44e35af5
...@@ -99,6 +99,12 @@ namespace PcapDotNet.Packets.Test ...@@ -99,6 +99,12 @@ namespace PcapDotNet.Packets.Test
greLayer.Checksum = actualGre.Checksum; greLayer.Checksum = actualGre.Checksum;
} }
Assert.AreEqual(greLayer, actualGreLayer, "Layer"); Assert.AreEqual(greLayer, actualGreLayer, "Layer");
Assert.AreEqual(greLayer.Length, actualGre.HeaderLength);
Assert.IsTrue(actualGre.KeyPresent ^ (greLayer.Key == null));
MoreAssert.IsSmaller(8, actualGre.RecursionControl);
Assert.IsTrue(actualGre.RoutingPresent ^ (greLayer.Routing == null && greLayer.RoutingOffset == null));
Assert.IsTrue(actualGre.SequenceNumberPresent ^ (greLayer.SequenceNumber == null));
Assert.IsTrue(!actualGre.StrictSourceRoute || actualGre.RoutingPresent);
} }
} }
} }
......
...@@ -600,19 +600,19 @@ namespace PcapDotNet.Packets.TestUtils ...@@ -600,19 +600,19 @@ namespace PcapDotNet.Packets.TestUtils
{ {
case GreSourceRouteEntryAddressFamily.AsSourceRoute: case GreSourceRouteEntryAddressFamily.AsSourceRoute:
{ {
ushort[] asNumbers = new ushort[random.Next(5)]; ushort[] asNumbers = new ushort[random.Next(1, 5)];
for (int j = 0; j != asNumbers.Length; ++j) for (int j = 0; j != asNumbers.Length; ++j)
asNumbers[j] = random.NextUShort(); asNumbers[j] = random.NextUShort();
routing[i] = new GreSourceRouteEntryAs(asNumbers.AsReadOnly(), asNumbers.IsEmpty() ? 0 : random.Next(asNumbers.Length)); routing[i] = new GreSourceRouteEntryAs(asNumbers.AsReadOnly(), random.Next(asNumbers.Length + 1));
break; break;
} }
case GreSourceRouteEntryAddressFamily.IpSourceRoute: case GreSourceRouteEntryAddressFamily.IpSourceRoute:
{ {
IpV4Address[] ips = new IpV4Address[random.Next(5)]; IpV4Address[] ips = new IpV4Address[random.Next(1, 5)];
for (int j = 0; j != ips.Length; ++j) for (int j = 0; j != ips.Length; ++j)
ips[j] = random.NextIpV4Address(); ips[j] = random.NextIpV4Address();
routing[i] = new GreSourceRouteEntryIp(ips.AsReadOnly(), ips.IsEmpty() ? 0 : random.Next(ips.Length)); routing[i] = new GreSourceRouteEntryIp(ips.AsReadOnly(), random.Next(ips.Length + 1));
break; break;
} }
......
...@@ -400,7 +400,7 @@ namespace PcapDotNet.Packets.Gre ...@@ -400,7 +400,7 @@ namespace PcapDotNet.Packets.Gre
return false; return false;
// Address Family // Address Family
GreSourceRouteEntryAddressFamily addressFamily = (GreSourceRouteEntryAddressFamily)buffer.ReadUShort(offset, Endianity.Big); GreSourceRouteEntryAddressFamily addressFamily = (GreSourceRouteEntryAddressFamily)buffer.ReadUShort(offset + Offset.AddressFamily, Endianity.Big);
// SRE Length // SRE Length
byte sreLength = buffer[offset + Offset.SreLength]; byte sreLength = buffer[offset + Offset.SreLength];
...@@ -420,7 +420,7 @@ namespace PcapDotNet.Packets.Gre ...@@ -420,7 +420,7 @@ namespace PcapDotNet.Packets.Gre
return false; return false;
// Change offset // Change offset
offset += sreLength; offset += entry.Length;
return true; return true;
} }
......
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