Commit 9990ee01 authored by Brickner_cp's avatar Brickner_cp

PacketBuilder new design

parent d0ed8367
......@@ -64,7 +64,7 @@ namespace PcapDotNet.Core.Test
{
string filename = Path.GetTempPath() + @"dump.pcap";
Packet expectedPacket = PacketBuilder2.Build(DateTime.Now,
Packet expectedPacket = PacketBuilder.Build(DateTime.Now,
new EthernetLayer
{
Source = new MacAddress(1),
......
......@@ -124,33 +124,33 @@ namespace PcapDotNet.Core.Test
switch (random.NextEnum<PacketType>())
{
case PacketType.Ethernet:
return PacketBuilder2.Build(DateTime.Now, ethernetLayer, payloadLayer);
return PacketBuilder.Build(DateTime.Now, ethernetLayer, payloadLayer);
case PacketType.Arp:
ethernetLayer.Destination = MacAddress.Zero;
return PacketBuilder2.Build(packetTimestamp, ethernetLayer, random.NextArpLayer());
return PacketBuilder.Build(packetTimestamp, ethernetLayer, random.NextArpLayer());
case PacketType.IpV4:
return PacketBuilder2.Build(packetTimestamp, ethernetLayer, ipV4Layer, payloadLayer);
return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, payloadLayer);
case PacketType.Igmp:
ethernetLayer.EtherType = EthernetType.None;
ipV4Layer.Protocol = null;
return PacketBuilder2.Build(packetTimestamp, ipV4Layer, random.NextIgmpLayer());
return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, random.NextIgmpLayer());
case PacketType.Udp:
ethernetLayer.EtherType = EthernetType.None;
ipV4Layer.Protocol = null;
if (random.NextBool())
ipV4Layer.Fragmentation = IpV4Fragmentation.None;
return PacketBuilder2.Build(packetTimestamp, ethernetLayer, ipV4Layer, random.NextUdpLayer(), payloadLayer);
return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, random.NextUdpLayer(), payloadLayer);
case PacketType.Tcp:
ethernetLayer.EtherType = EthernetType.None;
ipV4Layer.Protocol = null;
if (random.NextBool())
ipV4Layer.Fragmentation = IpV4Fragmentation.None;
return PacketBuilder2.Build(packetTimestamp, ethernetLayer, ipV4Layer, random.NextUdpLayer(), payloadLayer);
return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, random.NextUdpLayer(), payloadLayer);
default:
throw new InvalidOperationException();
......
......@@ -64,7 +64,7 @@ namespace PcapDotNet.Packets.Test
ArpLayer arpLayer = random.NextArpLayer();
Packet packet = new PacketBuilder2(ethernetLayer, arpLayer).Build(DateTime.Now);
Packet packet = new PacketBuilder(ethernetLayer, arpLayer).Build(DateTime.Now);
Assert.IsTrue(packet.IsValid, "IsValid");
......@@ -85,7 +85,7 @@ namespace PcapDotNet.Packets.Test
[TestMethod]
public void ArpProtocolIpV4Address()
{
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer
{
Source = new MacAddress(),
......@@ -108,7 +108,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentException))]
public void ArpIncosistentSenderAddressSizeTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer
{
Source = new MacAddress(),
......@@ -130,7 +130,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentException))]
public void ArpIncosistentTargetAddressSizeTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer
{
Source = new MacAddress(),
......
......@@ -72,7 +72,7 @@ namespace PcapDotNet.Packets.Test
{
Data = random.NextDatagram(ethernetPayloadLength),
};
Packet packet = new PacketBuilder2(ethernetLayer, payloadLayer).Build(DateTime.Now);
Packet packet = new PacketBuilder(ethernetLayer, payloadLayer).Build(DateTime.Now);
// Ethernet
Assert.AreEqual(packet.Length - EthernetDatagram.HeaderLength, packet.Ethernet.PayloadLength, "PayloadLength");
......
......@@ -116,7 +116,7 @@ namespace PcapDotNet.Packets.Test
default:
throw new InvalidOperationException("Invalid icmpMessageType " + icmpLayer.MessageType);
}
PacketBuilder2 packetBuilder2;
PacketBuilder packetBuilder;
IpV4Layer icmpIpV4Layer = null;
PayloadLayer icmpIpV4PayloadLayer = null;
if (isIpV4Payload)
......@@ -125,12 +125,12 @@ namespace PcapDotNet.Packets.Test
icmpIpV4PayloadLayer = random.NextPayloadLayer(random.Next(200));
packetBuilder2 = new PacketBuilder2(ethernetLayer, ipV4Layer, icmpLayer, icmpIpV4Layer, icmpIpV4PayloadLayer);
packetBuilder = new PacketBuilder(ethernetLayer, ipV4Layer, icmpLayer, icmpIpV4Layer, icmpIpV4PayloadLayer);
}
else
packetBuilder2 = new PacketBuilder2(ethernetLayer, ipV4Layer, icmpLayer);
packetBuilder = new PacketBuilder(ethernetLayer, ipV4Layer, icmpLayer);
Packet packet = packetBuilder2.Build(DateTime.Now);
Packet packet = packetBuilder.Build(DateTime.Now);
Assert.IsTrue(packet.IsValid, "IsValid");
......
......@@ -83,7 +83,7 @@ namespace PcapDotNet.Packets.Test
{
IgmpLayer igmpLayer = random.NextIgmpLayer();
Packet packet = new PacketBuilder2(ethernetLayer, ipV4Layer, igmpLayer).Build(DateTime.Now);
Packet packet = new PacketBuilder(ethernetLayer, ipV4Layer, igmpLayer).Build(DateTime.Now);
Assert.IsTrue(packet.IsValid, "IsValid");
......@@ -107,7 +107,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3SmallMaxResponseTimeTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion3Layer
{
MaxResponseTime = TimeSpan.FromSeconds(-1),
......@@ -122,7 +122,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3BigMaxResponseTimeTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion3Layer
{
MaxResponseTime = TimeSpan.FromHours(1),
......@@ -137,7 +137,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3SmallQueryIntervalTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion3Layer
{
MaxResponseTime = TimeSpan.FromSeconds(1),
......@@ -152,7 +152,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion3BigQueryIntervalTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion3Layer
{
MaxResponseTime = TimeSpan.FromSeconds(1),
......@@ -167,7 +167,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion2SmallMaxResponseTimeTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion2Layer
{
......@@ -182,7 +182,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IgmpQueryVersion2BigMaxResponseTimeTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion2Layer
{
MaxResponseTime = TimeSpan.FromMinutes(5)
......@@ -195,7 +195,7 @@ namespace PcapDotNet.Packets.Test
[TestMethod]
public void IgmpInvalidTest()
{
Packet queryVersion2 = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet queryVersion2 = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion2Layer
{
MaxResponseTime = TimeSpan.FromSeconds(1),
......@@ -219,7 +219,7 @@ namespace PcapDotNet.Packets.Test
Assert.IsFalse(badChecksumPacket.IsValid);
// Big query version 3
Packet queryVersion3 = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet queryVersion3 = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpQueryVersion3Layer
{
MaxResponseTime = TimeSpan.FromSeconds(1),
......@@ -232,7 +232,7 @@ namespace PcapDotNet.Packets.Test
Assert.IsFalse(bigQueryVersion3.IsValid);
// Big report version 1
Packet reportVersion1 = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(), new IgmpReportVersion1Layer());
Packet reportVersion1 = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(), new IgmpReportVersion1Layer());
buffer = new byte[reportVersion1.Length + 1];
reportVersion1.Buffer.BlockCopy(0, buffer, 0, reportVersion1.Length);
......@@ -250,7 +250,7 @@ namespace PcapDotNet.Packets.Test
Assert.IsFalse(nonZeroMaxResponseCodeReportVersion1.IsValid);
// Big report version 2
Packet reportVersion2 = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet reportVersion2 = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpReportVersion2Layer
{
MaxResponseTime = TimeSpan.FromSeconds(1)
......@@ -263,7 +263,7 @@ namespace PcapDotNet.Packets.Test
Assert.IsFalse(bigReportVersion2.IsValid);
// non zero max response code report version 3
Packet reportVersion3 = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
Packet reportVersion3 = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new IgmpReportVersion3Layer
{
GroupRecords = new[]
......@@ -303,7 +303,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(InvalidOperationException))]
public void IgmpIllegalReportVersionTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(), new IgmpReportVersion1Layer());
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(), new IgmpReportVersion1Layer());
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(1, packet.Ethernet.IpV4.Igmp.Version);
......@@ -321,7 +321,7 @@ namespace PcapDotNet.Packets.Test
[ExpectedException(typeof(InvalidOperationException))]
public void IgmpIllegalQueryVersionTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(), new IgmpQueryVersion1Layer());
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(), new IgmpQueryVersion1Layer());
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(1, packet.Ethernet.IpV4.Igmp.Version);
......
......@@ -120,7 +120,7 @@ namespace PcapDotNet.Packets.Test
PayloadLayer payloadLayer = random.NextPayloadLayer(random.Next(0, 50 * 1024));
Packet packet = new PacketBuilder2(ethernetLayer, ipV4Layer, payloadLayer).Build(DateTime.Now);
Packet packet = new PacketBuilder(ethernetLayer, ipV4Layer, payloadLayer).Build(DateTime.Now);
Assert.IsTrue(ipV4Layer.Protocol == IpV4Protocol.Udp ||
ipV4Layer.Protocol == IpV4Protocol.Tcp ||
......@@ -194,7 +194,7 @@ namespace PcapDotNet.Packets.Test
[TestMethod]
public void IpV4OptionTimestampFactoryCreateInstanceErrorTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer(),
new IpV4Layer
{
......@@ -264,7 +264,7 @@ namespace PcapDotNet.Packets.Test
public void IpV4OptionRouteTryReadErrorTest()
{
// Small Length
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer(),
new IpV4Layer
{
......@@ -396,7 +396,7 @@ namespace PcapDotNet.Packets.Test
public void IpV4OptionBasicSecurityCreateInstanceErrorTest()
{
// Invalid Length
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer(),
new IpV4Layer
{
......@@ -417,7 +417,7 @@ namespace PcapDotNet.Packets.Test
Assert.IsFalse(packet.Ethernet.IpV4.Options.IsValid);
// Invalid classification level
packet = PacketBuilder2.Build(DateTime.Now,
packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer(),
new IpV4Layer
{
......@@ -438,7 +438,7 @@ namespace PcapDotNet.Packets.Test
Assert.IsFalse(packet.Ethernet.IpV4.Options.IsValid);
// Invalid protection authorities bytes
packet = PacketBuilder2.Build(DateTime.Now,
packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer(),
new IpV4Layer
{
......@@ -505,7 +505,7 @@ namespace PcapDotNet.Packets.Test
[TestMethod]
public void IpV4DatagramInvalidShortTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now,
Packet packet = PacketBuilder.Build(DateTime.Now,
new EthernetLayer
{
Source = new MacAddress(1),
......@@ -537,7 +537,7 @@ namespace PcapDotNet.Packets.Test
[TestMethod]
public void IpV4DatagramInvalidHeaderChecksumTest()
{
Packet packet = PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer
Packet packet = PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer
{
Protocol = 0,
});
......
......@@ -85,7 +85,7 @@ namespace PcapDotNet.Packets.Test
PayloadLayer payloadLayer = random.NextPayloadLayer(random.Next(60000));
Packet packet = new PacketBuilder2(ethernetLayer,ipV4Layer, tcpLayer, payloadLayer).Build(DateTime.Now);
Packet packet = new PacketBuilder(ethernetLayer,ipV4Layer, tcpLayer, payloadLayer).Build(DateTime.Now);
Assert.IsTrue(packet.IsValid);
......@@ -161,7 +161,7 @@ namespace PcapDotNet.Packets.Test
public void TcpOptionMd5SignatureCreateInstanceErrorDataLengthTest()
{
Packet packet =
PacketBuilder2.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
PacketBuilder.Build(DateTime.Now, new EthernetLayer(), new IpV4Layer(),
new TcpLayer
{
Options =
......
......@@ -82,7 +82,7 @@ namespace PcapDotNet.Packets.Test
PayloadLayer payloadLayer = random.NextPayloadLayer(random.Next(60000));
Packet packet = PacketBuilder2.Build(DateTime.Now, ethernetLayer, ipV4Layer, udpLayer, payloadLayer);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, udpLayer, payloadLayer);
Assert.IsTrue(packet.IsValid, "IsValid");
......
......@@ -75,7 +75,7 @@ namespace PcapDotNet.Packets.TestUtils
if (packetSize < EthernetDatagram.HeaderLength)
throw new ArgumentOutOfRangeException("packetSize", packetSize, "Must be at least the ethernet header length (" + EthernetDatagram.HeaderLength + ")");
return PacketBuilder2.Build(timestamp,
return PacketBuilder.Build(timestamp,
new EthernetLayer
{
Source = ethernetSource,
......
using System;
using System.Collections.Generic;
using System.Linq;
using PcapDotNet.Packets.Arp;
using PcapDotNet.Packets.Ethernet;
using PcapDotNet.Packets.Icmp;
using PcapDotNet.Packets.Igmp;
using PcapDotNet.Packets.IpV4;
using PcapDotNet.Packets.Transport;
namespace PcapDotNet.Packets
{
/// <summary>
/// The class to use to build all the packets.
/// </summary>
}
\ No newline at end of file
......@@ -1101,14 +1101,14 @@ namespace PcapDotNet.Packets
}
}
public class PacketBuilder2
public class PacketBuilder
{
public static Packet Build(DateTime timestamp, params ILayer[] layers)
{
return new PacketBuilder2(layers).Build(timestamp);
return new PacketBuilder(layers).Build(timestamp);
}
public PacketBuilder2(params ILayer[] layers)
public PacketBuilder(params ILayer[] layers)
{
if (layers.Length == 0)
throw new ArgumentException("At least one layer must be given", "layers");
......
......@@ -134,7 +134,6 @@
<Compile Include="Options.cs" />
<Compile Include="OptionTypeRegistrationAttribute.cs" />
<Compile Include="Packet.cs" />
<Compile Include="PacketBuilder.cs" />
<Compile Include="PacketBuilder2.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Transport\TcpDatagram.cs" />
......
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