Commit 80e525f9 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 94.73%

parent 5e6eba25
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<Regular> <Regular>
<CodeCoverageItem binaryFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Base.dll" pdbFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Base.pdb" instrumentInPlace="true" /> <CodeCoverageItem binaryFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Base.dll" pdbFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Base.pdb" instrumentInPlace="true" />
<CodeCoverageItem binaryFile="c:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.dll" pdbFile="c:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.pdb" instrumentInPlace="true" /> <CodeCoverageItem binaryFile="c:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.dll" pdbFile="c:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.pdb" instrumentInPlace="true" />
<CodeCoverageItem binaryFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.Extensions.dll" pdbFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.Extensions.pdb" instrumentInPlace="true" />
<CodeCoverageItem binaryFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Packets.dll" pdbFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Packets.pdb" instrumentInPlace="true" /> <CodeCoverageItem binaryFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Packets.dll" pdbFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Packets.pdb" instrumentInPlace="true" />
<CodeCoverageItem binaryFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.Extensions.dll" pdbFile="C:\TFS\tfs06.codeplex.com\PcapDotNet\PcapDotNet\bin\Debug\PcapDotNet.Core.Extensions.pdb" instrumentInPlace="true" />
</Regular> </Regular>
</CodeCoverage> </CodeCoverage>
<TestTypeSpecific> <TestTypeSpecific>
......
...@@ -155,7 +155,7 @@ namespace PcapDotNet.Core.Test ...@@ -155,7 +155,7 @@ namespace PcapDotNet.Core.Test
const int PacketSize = 100; const int PacketSize = 100;
// Normal // Normal
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend, int.MaxValue, 2, PacketSize, NumPacketsToSend, 0, 0.05); TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend, int.MaxValue, 2, PacketSize, NumPacketsToSend, 0, 0.3);
// Wait for less packets // Wait for less packets
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend / 2, int.MaxValue, 2, PacketSize, NumPacketsToSend / 2, 0, 0.02); TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend / 2, int.MaxValue, 2, PacketSize, NumPacketsToSend / 2, 0, 0.02);
......
...@@ -93,5 +93,25 @@ namespace PcapDotNet.Packets.Test ...@@ -93,5 +93,25 @@ namespace PcapDotNet.Packets.Test
MoreAssert.AreSequenceEqual(arpTargetProtocolAddress, packet.Ethernet.Arp.TargetProtocolAddress, "Arp TargetProtocolAddress"); MoreAssert.AreSequenceEqual(arpTargetProtocolAddress, packet.Ethernet.Arp.TargetProtocolAddress, "Arp TargetProtocolAddress");
} }
} }
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void ArpIncosistentSenderAddressSizeTest()
{
Packet packet = PacketBuilder.EthernetArp(DateTime.Now, new MacAddress(), EthernetType.IpV4, ArpOperation.Request,
new byte[4], new byte[6], new byte[5], new byte[6]);
Assert.IsNull(packet);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void ArpIncosistentTargetAddressSizeTest()
{
Packet packet = PacketBuilder.EthernetArp(DateTime.Now, new MacAddress(), EthernetType.IpV4, ArpOperation.Request,
new byte[4], new byte[6], new byte[4], new byte[7]);
Assert.IsNull(packet);
Assert.Fail();
}
} }
} }
\ No newline at end of file
...@@ -200,12 +200,268 @@ namespace PcapDotNet.Packets.Test ...@@ -200,12 +200,268 @@ namespace PcapDotNet.Packets.Test
MoreAssert.AreSequenceEqual(igmpSourceAddresses, packet.Ethernet.IpV4.Igmp.SourceAddresses); MoreAssert.AreSequenceEqual(igmpSourceAddresses, packet.Ethernet.IpV4.Igmp.SourceAddresses);
} }
// Report Version 3
if (igmpMessageType == IgmpMessageType.MembershipReportVersion3) if (igmpMessageType == IgmpMessageType.MembershipReportVersion3)
{ {
Assert.AreEqual(igmpGroupRecords.Length, packet.Ethernet.IpV4.Igmp.NumberOfGroupRecords); Assert.AreEqual(igmpGroupRecords.Length, packet.Ethernet.IpV4.Igmp.NumberOfGroupRecords);
MoreAssert.AreSequenceEqual(igmpGroupRecords, packet.Ethernet.IpV4.Igmp.GroupRecords.Select(record => record.ToGroupRecord())); MoreAssert.AreSequenceEqual(igmpGroupRecords, packet.Ethernet.IpV4.Igmp.GroupRecords.Select(record => record.ToGroupRecord()));
Assert.IsTrue(igmpGroupRecords.All(record => record.ToString() != null));
} }
} }
} }
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3SmallMaxResponseTimeTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion3(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(-1), IpV4Address.Zero, false, 0, TimeSpan.FromSeconds(1),
new IpV4Address[] {});
Assert.IsTrue(packet.IsValid);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3BigMaxResponseTimeTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion3(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromHours(1), IpV4Address.Zero, false, 0, TimeSpan.FromSeconds(1),
new IpV4Address[] { });
Assert.IsTrue(packet.IsValid);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3SmallQueryIntervalTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion3(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(1), IpV4Address.Zero, false, 0, TimeSpan.FromSeconds(-1),
new IpV4Address[] { });
Assert.IsTrue(packet.IsValid);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3BigQueryIntervalTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion3(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(1), IpV4Address.Zero, false, 0, TimeSpan.FromHours(9),
new IpV4Address[] { });
Assert.IsTrue(packet.IsValid);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion2SmallMaxResponseTimeTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion2(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(-1), IpV4Address.Zero);
Assert.IsTrue(packet.IsValid);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion2BigMaxResponseTimeTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion2(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromMinutes(5), IpV4Address.Zero);
Assert.IsTrue(packet.IsValid);
Assert.Fail();
}
[TestMethod]
public void IgmpInvalidTest()
{
Packet queryVersion2 = PacketBuilder.EthernetIpV4IgmpQueryVersion2(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(1), IpV4Address.Zero);
Assert.IsTrue(queryVersion2.IsValid);
Assert.IsTrue(queryVersion2.Ethernet.IpV4.Igmp.IsChecksumCorrect);
// Small Packet
byte[] buffer = new byte[queryVersion2.Length - 1];
queryVersion2.Buffer.BlockCopy(0, buffer, 0, buffer.Length);
Packet smallQueryVersion2 = new Packet(buffer, queryVersion2.Timestamp, queryVersion2.DataLink);
Assert.IsFalse(smallQueryVersion2.IsValid);
// Bad checksum
buffer = new byte[queryVersion2.Length];
queryVersion2.Buffer.BlockCopy(0, buffer, 0, buffer.Length);
++buffer[buffer.Length - 1];
Packet badChecksumPacket = new Packet(buffer, queryVersion2.Timestamp, queryVersion2.DataLink);
Assert.IsFalse(badChecksumPacket.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(badChecksumPacket.IsValid);
// Big query version 3
Packet queryVersion3 = PacketBuilder.EthernetIpV4IgmpQueryVersion3(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(1), IpV4Address.Zero, false, 0,
TimeSpan.FromSeconds(1), new IpV4Address[] {});
buffer = new byte[queryVersion3.Length + 1];
queryVersion3.Buffer.BlockCopy(0, buffer, 0, queryVersion3.Length);
Packet bigQueryVersion3 = new Packet(buffer, queryVersion3.Timestamp, queryVersion3.DataLink);
Assert.IsTrue(bigQueryVersion3.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(bigQueryVersion3.IsValid);
// Big report version 1
Packet reportVersion1 = PacketBuilder.EthernetIpV4IgmpReportVersion1(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
IpV4Address.Zero);
buffer = new byte[reportVersion1.Length + 1];
reportVersion1.Buffer.BlockCopy(0, buffer, 0, reportVersion1.Length);
Packet bigReportVersion1 = new Packet(buffer, reportVersion1.Timestamp, reportVersion1.DataLink);
Assert.IsTrue(bigReportVersion1.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(bigReportVersion1.IsValid);
// Non zero max response code for report version 1
buffer = new byte[reportVersion1.Length];
reportVersion1.Buffer.BlockCopy(0, buffer, 0, buffer.Length);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength + 1, 1);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength + 2, (ushort)0xedfe, Endianity.Big);
Packet nonZeroMaxResponseCodeReportVersion1 = new Packet(buffer, reportVersion1.Timestamp, reportVersion1.DataLink);
Assert.IsTrue(nonZeroMaxResponseCodeReportVersion1.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(nonZeroMaxResponseCodeReportVersion1.IsValid);
// Big report version 2
Packet reportVersion2 = PacketBuilder.EthernetIpV4IgmpReportVersion2(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
TimeSpan.FromSeconds(1), IpV4Address.Zero);
buffer = new byte[reportVersion2.Length + 1];
reportVersion2.Buffer.BlockCopy(0, buffer, 0, reportVersion2.Length);
Packet bigReportVersion2 = new Packet(buffer, reportVersion2.Timestamp, reportVersion2.DataLink);
Assert.IsTrue(bigReportVersion2.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(bigReportVersion2.IsValid);
// non zero max response code report version 3
Packet reportVersion3 = PacketBuilder.EthernetIpV4IgmpReportVersion3(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
new[]
{
new IgmpGroupRecord(
IgmpRecordType.CurrentStateRecordModeIsExclude,
IpV4Address.Zero, new List<IpV4Address>(), Datagram.Empty)
});
buffer = new byte[reportVersion3.Length];
reportVersion3.Buffer.BlockCopy(0, buffer, 0, buffer.Length);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength + 1, 1);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength + 2, (ushort)0xdbfd, Endianity.Big);
Packet nonZeroMaxResponseCodeReportVersion3 = new Packet(buffer, reportVersion3.Timestamp, reportVersion3.DataLink);
Assert.IsTrue(nonZeroMaxResponseCodeReportVersion3.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(nonZeroMaxResponseCodeReportVersion3.IsValid);
// big report version 3
buffer = new byte[reportVersion3.Length + 1];
reportVersion3.Buffer.BlockCopy(0, buffer, 0, reportVersion3.Length);
Packet bigReportVersion3 = new Packet(buffer, reportVersion3.Timestamp, reportVersion3.DataLink);
Assert.IsTrue(bigReportVersion3.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(bigReportVersion3.IsValid);
// invalid group record report version 3
buffer = new byte[reportVersion3.Length];
reportVersion3.Buffer.BlockCopy(0, buffer, 0, reportVersion3.Length);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength + IgmpDatagram.HeaderLength + 1, 1);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength + 2, (ushort)0xdbfd, Endianity.Big);
Packet invalidGroupRecordReportVersion3 = new Packet(buffer, reportVersion3.Timestamp, reportVersion3.DataLink);
Assert.IsTrue(invalidGroupRecordReportVersion3.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.IsFalse(invalidGroupRecordReportVersion3.IsValid);
}
[TestMethod]
[ExpectedException(typeof(InvalidOperationException))]
public void IgmpIllegalReportVersionTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpReportVersion1(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
IpV4Address.Zero);
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(1, packet.Ethernet.IpV4.Igmp.Version);
byte[] buffer = new byte[packet.Length];
packet.Buffer.BlockCopy(0, buffer, 0, buffer.Length);
buffer.Write(EthernetDatagram.HeaderLength + IpV4Datagram.HeaderMinimumLength, 0);
Packet illegalPacket = new Packet(buffer, packet.Timestamp, packet.DataLink);
Assert.IsFalse(illegalPacket.IsValid);
Assert.IsNull(illegalPacket.Ethernet.IpV4.Igmp.Version);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(InvalidOperationException))]
public void IgmpIllegalQueryVersionTest()
{
Packet packet = PacketBuilder.EthernetIpV4IgmpQueryVersion1(DateTime.Now,
new MacAddress(), new MacAddress(),
0, 0, IpV4Fragmentation.None, 0, IpV4Address.Zero, IpV4Address.Zero,
IpV4Options.None,
IpV4Address.Zero);
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(1, packet.Ethernet.IpV4.Igmp.Version);
byte[] buffer = new byte[packet.Length - 1];
packet.Buffer.BlockCopy(0, buffer, 0, buffer.Length);
Packet illegalPacket = new Packet(buffer, packet.Timestamp, packet.DataLink);
Assert.IsFalse(illegalPacket.IsValid);
Assert.IsNull(illegalPacket.Ethernet.IpV4.Igmp.Version);
Assert.Fail();
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void IgmpGroupRecordBadAuxiliaryDataLengthTest()
{
IgmpGroupRecord record = new IgmpGroupRecord(IgmpRecordType.SourceListChangeAllowNewSources, IpV4Address.Zero, new List<IpV4Address>(),
new Datagram(new byte[] {1}));
Assert.IsNotNull(record);
Assert.Fail();
}
[TestMethod]
public void IgmpGroupRecordTest()
{
IgmpGroupRecord record = new IgmpGroupRecord(IgmpRecordType.SourceListChangeAllowNewSources, IpV4Address.Zero, new List<IpV4Address>(),
Datagram.Empty);
Assert.IsTrue(record.Equals((object)record));
}
} }
} }
\ No newline at end of file
...@@ -64,6 +64,8 @@ namespace PcapDotNet.Packets.Test ...@@ -64,6 +64,8 @@ namespace PcapDotNet.Packets.Test
[TestMethod] [TestMethod]
public void IpV4AddressRandomTest() public void IpV4AddressRandomTest()
{ {
Assert.AreEqual(IpV4Address.AllHostsHroupAddress, new IpV4Address("224.0.0.1"));
Random random = new Random(); Random random = new Random();
for (int i = 0; i != 1000; ++i) for (int i = 0; i != 1000; ++i)
...@@ -82,6 +84,7 @@ namespace PcapDotNet.Packets.Test ...@@ -82,6 +84,7 @@ namespace PcapDotNet.Packets.Test
Assert.AreNotEqual(address.GetHashCode(), random.NextIpV4Address().GetHashCode()); Assert.AreNotEqual(address.GetHashCode(), random.NextIpV4Address().GetHashCode());
Assert.AreNotEqual(2, address); Assert.AreNotEqual(2, address);
Assert.IsFalse(address.Equals(null));
} }
} }
......
...@@ -563,16 +563,12 @@ namespace PcapDotNet.Packets.Igmp ...@@ -563,16 +563,12 @@ namespace PcapDotNet.Packets.Igmp
case IgmpMessageType.MembershipQuery: case IgmpMessageType.MembershipQuery:
switch (QueryVersion) switch (QueryVersion)
{ {
case IgmpQueryVersion.Version1: case IgmpQueryVersion.Version1: // Version 1 actually means that the MaxResponseCode is 0.
return Length == HeaderLength && MaxResponseCode == 0;
case IgmpQueryVersion.Version2: case IgmpQueryVersion.Version2:
return Length == HeaderLength; return Length == HeaderLength;
case IgmpQueryVersion.Version3: case IgmpQueryVersion.Version3:
return Length >= QueryVersion3HeaderLength && return Length == GetQueryVersion3Length(NumberOfSources);
Length == GetQueryVersion3Length(NumberOfSources) &&
NumberOfSources == SourceAddresses.Count;
default: default:
return false; return false;
...@@ -586,7 +582,7 @@ namespace PcapDotNet.Packets.Igmp ...@@ -586,7 +582,7 @@ namespace PcapDotNet.Packets.Igmp
return Length == HeaderLength; return Length == HeaderLength;
case IgmpMessageType.MembershipReportVersion3: case IgmpMessageType.MembershipReportVersion3:
return MaxResponseCode == 0 && NumberOfGroupRecords == GroupRecords.Count && return MaxResponseCode == 0 &&
Length == HeaderLength + GroupRecords.Sum(record => record.Length) && Length == HeaderLength + GroupRecords.Sum(record => record.Length) &&
GroupRecords.All(record => record.IsValid); GroupRecords.All(record => record.IsValid);
...@@ -629,11 +625,11 @@ namespace PcapDotNet.Packets.Igmp ...@@ -629,11 +625,11 @@ namespace PcapDotNet.Packets.Igmp
{ {
int exp = (int)(Math.Log(value, 2) - 7); int exp = (int)(Math.Log(value, 2) - 7);
if (exp > 7 || exp < 0) if (exp > 7 || exp < 0)
throw new ArgumentOutOfRangeException("exp", exp, "value " + value + " is out of range"); throw new ArgumentOutOfRangeException("value", value, "exp " + exp + " is out of range");
int mant = (int)(value * Math.Pow(2, -exp - 3) - 16); int mant = (int)(value * Math.Pow(2, -exp - 3) - 16);
if (mant > 15 || mant < 0) if (mant > 15 || mant < 0)
throw new ArgumentOutOfRangeException("mant", mant, "value " + value + " is out of range"); throw new ArgumentOutOfRangeException("value", value, "mant " + mant + " is out of range");
return (byte)(0x80 | (exp << 4) | mant); return (byte)(0x80 | (exp << 4) | mant);
} }
......
...@@ -150,7 +150,7 @@ namespace PcapDotNet.Packets.Igmp ...@@ -150,7 +150,7 @@ namespace PcapDotNet.Packets.Igmp
/// <summary> /// <summary>
/// The record is valid if the length is correct according to the header fields. /// The record is valid if the length is correct according to the header fields.
/// </summary> /// </summary>
protected override bool CalculateIsValid() protected override bool CalculateIsValid()
{ {
return Length >= HeaderLength && return Length >= HeaderLength &&
Length == HeaderLength + IpV4Address.SizeOf * NumberOfSources + AuxiliaryDataLength; Length == HeaderLength + IpV4Address.SizeOf * NumberOfSources + AuxiliaryDataLength;
......
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