Commit df042104 authored by Brickner_cp's avatar Brickner_cp

Wireshark 1.4.4.

Added Reserved property to TcpDatagram (currently read only - not supported in TcpLayer).
parent 74a03367
...@@ -132,7 +132,7 @@ namespace PcapDotNet.Core.Test ...@@ -132,7 +132,7 @@ namespace PcapDotNet.Core.Test
const int PacketSize = 100; const int PacketSize = 100;
// Test normal mode // Test normal mode
TestReceiveSomePackets(0, 0, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, 0, 1, 1.03); TestReceiveSomePackets(0, 0, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, 0, 1, 1.06);
TestReceiveSomePackets(NumPacketsToSend, NumPacketsToSend, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend, 0, 0.02); TestReceiveSomePackets(NumPacketsToSend, NumPacketsToSend, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend, 0, 0.02);
TestReceiveSomePackets(NumPacketsToSend, 0, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend, 0, 0.02); TestReceiveSomePackets(NumPacketsToSend, 0, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend, 0, 0.02);
TestReceiveSomePackets(NumPacketsToSend, -1, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend, 0, 0.02); TestReceiveSomePackets(NumPacketsToSend, -1, int.MaxValue, PacketSize, false, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend, 0, 0.02);
...@@ -167,7 +167,7 @@ namespace PcapDotNet.Core.Test ...@@ -167,7 +167,7 @@ namespace PcapDotNet.Core.Test
// Break loop // Break loop
TestReceivePackets(NumPacketsToSend, NumPacketsToSend, 0, 2, PacketSize, PacketCommunicatorReceiveResult.BreakLoop, 0, 0, 0.027); TestReceivePackets(NumPacketsToSend, NumPacketsToSend, 0, 2, PacketSize, PacketCommunicatorReceiveResult.BreakLoop, 0, 0, 0.027);
TestReceivePackets(NumPacketsToSend, NumPacketsToSend, NumPacketsToSend / 2, 2, PacketSize, PacketCommunicatorReceiveResult.BreakLoop, NumPacketsToSend / 2, 0, 0.045); TestReceivePackets(NumPacketsToSend, NumPacketsToSend, NumPacketsToSend / 2, 2, PacketSize, PacketCommunicatorReceiveResult.BreakLoop, NumPacketsToSend / 2, 0, 0.046);
} }
[TestMethod] [TestMethod]
...@@ -319,7 +319,7 @@ namespace PcapDotNet.Core.Test ...@@ -319,7 +319,7 @@ namespace PcapDotNet.Core.Test
// Wait for less statistics // Wait for less statistics
TestGetStatistics(SourceMac, DestinationMac, NumPacketsToSend, NumStatisticsToGather / 2, int.MaxValue, 5, PacketSize, TestGetStatistics(SourceMac, DestinationMac, NumPacketsToSend, NumStatisticsToGather / 2, int.MaxValue, 5, PacketSize,
PacketCommunicatorReceiveResult.Ok, NumStatisticsToGather / 2, NumPacketsToSend, NumStatisticsToGather / 2, NumStatisticsToGather / 2 + 0.05); PacketCommunicatorReceiveResult.Ok, NumStatisticsToGather / 2, NumPacketsToSend, NumStatisticsToGather / 2, NumStatisticsToGather / 2 + 0.053);
// Wait for more statistics // Wait for more statistics
TestGetStatistics(SourceMac, DestinationMac, NumPacketsToSend, 0, int.MaxValue, 5.5, PacketSize, TestGetStatistics(SourceMac, DestinationMac, NumPacketsToSend, 0, int.MaxValue, 5.5, PacketSize,
......
...@@ -132,8 +132,9 @@ namespace PcapDotNet.Core.Test ...@@ -132,8 +132,9 @@ namespace PcapDotNet.Core.Test
IpV4OptionTimestampAndAddress timestampPrespecifiedOption = (IpV4OptionTimestampAndAddress)option; IpV4OptionTimestampAndAddress timestampPrespecifiedOption = (IpV4OptionTimestampAndAddress)option;
foreach (IpV4OptionTimedAddress timedAddress in timestampPrespecifiedOption.TimedRoute) foreach (IpV4OptionTimedAddress timedAddress in timestampPrespecifiedOption.TimedRoute)
{ {
yield return "Time stamp = " + timedAddress.Address.ToValue(); yield return string.Format("Address = {0}, time stamp = {1}",
yield return "Time stamp = " + timedAddress.TimeOfDay.MillisecondsSinceMidnightUniversalTime; timedAddress.Address,
timedAddress.TimeOfDay.MillisecondsSinceMidnightUniversalTime);
} }
break; break;
......
...@@ -504,7 +504,7 @@ namespace PcapDotNet.Core.Test ...@@ -504,7 +504,7 @@ namespace PcapDotNet.Core.Test
switch (field.Name()) switch (field.Name())
{ {
case "arp.hw.type": case "arp.hw.type":
field.AssertShowDecimal((ushort)arpDatagram.HardwareType); field.AssertShowHex((ushort)arpDatagram.HardwareType);
break; break;
case "arp.proto.type": case "arp.proto.type":
...@@ -520,7 +520,7 @@ namespace PcapDotNet.Core.Test ...@@ -520,7 +520,7 @@ namespace PcapDotNet.Core.Test
break; break;
case "arp.opcode": case "arp.opcode":
field.AssertShowDecimal((ushort)arpDatagram.Operation); field.AssertShowHex((ushort)arpDatagram.Operation);
break; break;
case "arp.src.hw": case "arp.src.hw":
...@@ -1248,7 +1248,9 @@ namespace PcapDotNet.Core.Test ...@@ -1248,7 +1248,9 @@ namespace PcapDotNet.Core.Test
break; break;
case "tcp.flags": case "tcp.flags":
field.AssertShowHex((byte)tcpDatagram.ControlBits); field.AssertShow("0x" +
((tcpDatagram.ControlBits & TcpControlBits.NonceSum) == TcpControlBits.NonceSum ? "1" : "") +
((byte)tcpDatagram.ControlBits).ToString("x" + 2 * sizeof(byte)));
foreach (var flagField in field.Fields()) foreach (var flagField in field.Fields())
{ {
switch (flagField.Name()) switch (flagField.Name())
...@@ -1561,7 +1563,8 @@ namespace PcapDotNet.Core.Test ...@@ -1561,7 +1563,8 @@ namespace PcapDotNet.Core.Test
case "http.transfer_encoding": case "http.transfer_encoding":
data.Append(field.Value()); data.Append(field.Value());
Assert.AreEqual(httpDatagram.Header.TransferEncoding.TransferCodings.SequenceToString(',').ToWiresharkLiteral(), fieldShow.ToWiresharkLowerLiteral()); Assert.AreEqual(fieldShow.ToWiresharkLowerLiteral(),
httpDatagram.Header.TransferEncoding.TransferCodings.SequenceToString(',').ToWiresharkLiteral());
break; break;
default: default:
......
...@@ -102,6 +102,7 @@ namespace PcapDotNet.Packets.Test ...@@ -102,6 +102,7 @@ namespace PcapDotNet.Packets.Test
Assert.AreEqual((tcpLayer.ControlBits & TcpControlBits.Reset) == TcpControlBits.Reset, packet.Ethernet.IpV4.Tcp.IsReset, "IsReset"); Assert.AreEqual((tcpLayer.ControlBits & TcpControlBits.Reset) == TcpControlBits.Reset, packet.Ethernet.IpV4.Tcp.IsReset, "IsReset");
Assert.AreEqual((tcpLayer.ControlBits & TcpControlBits.Synchronize) == TcpControlBits.Synchronize, packet.Ethernet.IpV4.Tcp.IsSynchronize, "IsSynchronize"); Assert.AreEqual((tcpLayer.ControlBits & TcpControlBits.Synchronize) == TcpControlBits.Synchronize, packet.Ethernet.IpV4.Tcp.IsSynchronize, "IsSynchronize");
Assert.AreEqual((tcpLayer.ControlBits & TcpControlBits.Urgent) == TcpControlBits.Urgent, packet.Ethernet.IpV4.Tcp.IsUrgent, "IsUrgent"); Assert.AreEqual((tcpLayer.ControlBits & TcpControlBits.Urgent) == TcpControlBits.Urgent, packet.Ethernet.IpV4.Tcp.IsUrgent, "IsUrgent");
Assert.AreEqual(0, packet.Ethernet.IpV4.Tcp.Reserved);
Assert.IsFalse(packet.Ethernet.IpV4.Tcp.IsChecksumOptional, "IsChecksumOptional"); Assert.IsFalse(packet.Ethernet.IpV4.Tcp.IsChecksumOptional, "IsChecksumOptional");
Assert.AreEqual(TcpDatagram.HeaderMinimumLength + tcpLayer.Options.BytesLength + payloadLayer.Length, packet.Ethernet.IpV4.Tcp.Length, "Total Length"); Assert.AreEqual(TcpDatagram.HeaderMinimumLength + tcpLayer.Options.BytesLength + payloadLayer.Length, packet.Ethernet.IpV4.Tcp.Length, "Total Length");
Assert.IsTrue(packet.Ethernet.IpV4.IsTransportChecksumCorrect, "IsTransportChecksumCorrect"); Assert.IsTrue(packet.Ethernet.IpV4.IsTransportChecksumCorrect, "IsTransportChecksumCorrect");
......
...@@ -49,6 +49,18 @@ namespace PcapDotNet.Packets.Transport ...@@ -49,6 +49,18 @@ namespace PcapDotNet.Packets.Transport
public const int Options = 20; public const int Options = 20;
} }
private static class Mask
{
public const byte Reserved = 0x0E;
public const ushort ControlBits = 0x01FF;
}
private static class Shift
{
public const int HeaderLength = 4;
public const int Reserved = 1;
}
/// <summary> /// <summary>
/// The sequence number of the first data octet in this segment (except when SYN is present). /// The sequence number of the first data octet in this segment (except when SYN is present).
/// If SYN is present the sequence number is the initial sequence number (ISN) and the first data octet is ISN+1. /// If SYN is present the sequence number is the initial sequence number (ISN) and the first data octet is ISN+1.
...@@ -83,7 +95,7 @@ namespace PcapDotNet.Packets.Transport ...@@ -83,7 +95,7 @@ namespace PcapDotNet.Packets.Transport
/// </summary> /// </summary>
public int HeaderLength public int HeaderLength
{ {
get { return 4 * (this[Offset.HeaderLengthAndFlags] >> 4); } get { return 4 * (this[Offset.HeaderLengthAndFlags] >> Shift.HeaderLength); }
} }
/// <summary> /// <summary>
...@@ -94,12 +106,17 @@ namespace PcapDotNet.Packets.Transport ...@@ -94,12 +106,17 @@ namespace PcapDotNet.Packets.Transport
get { return Math.Min(HeaderLength, Length); } get { return Math.Min(HeaderLength, Length); }
} }
public byte Reserved
{
get { return (byte)((this[Offset.HeaderLengthAndFlags] & Mask.Reserved) >> Shift.Reserved); }
}
/// <summary> /// <summary>
/// A collection of bits for the TCP control. /// A collection of bits for the TCP control.
/// </summary> /// </summary>
public TcpControlBits ControlBits public TcpControlBits ControlBits
{ {
get { return (TcpControlBits)(ReadUShort(Offset.HeaderLengthAndFlags, Endianity.Big) & 0x01FF); } get { return (TcpControlBits)(ReadUShort(Offset.HeaderLengthAndFlags, Endianity.Big) & Mask.ControlBits); }
} }
/// <summary> /// <summary>
......
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