32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using System.Buffers.Binary;
|
|
|
|
namespace MoShiro.Measurement.Tests;
|
|
|
|
public sealed class IcmpReplyTests
|
|
{
|
|
[Theory]
|
|
[InlineData((byte)0)]
|
|
[InlineData((byte)129)]
|
|
public void ReplyMustMatchTypeCodeSequenceAndPayload(byte replyType)
|
|
{
|
|
byte[] request = new byte[44];
|
|
request[8] = 71;
|
|
byte[] reply = (byte[])request.Clone();
|
|
reply[0] = replyType;
|
|
BinaryPrimitives.WriteUInt16BigEndian(reply.AsSpan(6), 123);
|
|
// Linux changes the identifier; it is not the request's zero identifier.
|
|
reply[4] = 42;
|
|
Assert.True(LinuxIcmpEcho.IsReply(reply, request, replyType, 123));
|
|
Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 124));
|
|
Assert.False(LinuxIcmpEcho.IsReply(reply.AsSpan(0, 7), request, replyType, 123));
|
|
reply[1] = 1;
|
|
Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 123));
|
|
reply[1] = 0;
|
|
reply[0]++;
|
|
Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 123));
|
|
reply[0] = replyType;
|
|
reply[8]++;
|
|
Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 123));
|
|
}
|
|
}
|