ICMPPacket clean + remove useless initfields methods

This commit is contained in:
valentinbreiz 2021-01-21 18:50:03 +01:00
parent c01d4b9f6a
commit 85dd420fb6
5 changed files with 43 additions and 80 deletions

View file

@ -46,11 +46,5 @@ namespace Cosmos.System.Network.IPv4.UDP.DHCP
RawData[291] = 0xff; //ENDMARK RawData[291] = 0xff; //ENDMARK
} }
protected override void InitFields()
{
base.InitFields();
}
} }
} }

View file

@ -61,15 +61,5 @@ namespace Cosmos.System.Network.IPv4.UDP.DHCP
RawData[300] = 0xff; //ENDMARK RawData[300] = 0xff; //ENDMARK
} }
/// <summary>
/// Init DHCPRelease fields.
/// </summary>
/// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception>
protected override void InitFields()
{
base.InitFields();
}
} }
} }

View file

@ -70,15 +70,5 @@ namespace Cosmos.System.Network.IPv4.UDP.DHCP
RawData[303] = 0xff; //ENDMARK RawData[303] = 0xff; //ENDMARK
} }
/// <summary>
/// Init DHCPRequest fields.
/// </summary>
/// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception>
protected override void InitFields()
{
base.InitFields();
}
} }
} }

View file

@ -264,15 +264,6 @@ namespace Cosmos.System.Network.IPv4.UDP.DNS
RawData[this.DataOffset + 20 + b + 3] = 0x00; RawData[this.DataOffset + 20 + b + 3] = 0x00;
RawData[this.DataOffset + 20 + b + 4] = 0x01; RawData[this.DataOffset + 20 + b + 4] = 0x01;
} }
/// <summary>
/// Init DNSPacketAsk fields.
/// </summary>
/// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception>
protected override void InitFields()
{
base.InitFields();
}
} }
/// <summary> /// <summary>

View file

@ -38,11 +38,11 @@ namespace Cosmos.System.Network.IPv4
internal static void ICMPHandler(byte[] packetData) internal static void ICMPHandler(byte[] packetData)
{ {
Global.mDebugger.Send("ICMP Handler called"); Global.mDebugger.Send("ICMP Handler called");
ICMPPacket icmp_packet = new ICMPPacket(packetData); var icmp_packet = new ICMPPacket(packetData);
switch (icmp_packet.ICMP_Type) switch (icmp_packet.ICMPType)
{ {
case 0: case 0:
ICMPClient receiver = ICMPClient.GetClient(icmp_packet.SourceIP.Hash); var receiver = ICMPClient.GetClient(icmp_packet.SourceIP.Hash);
if (receiver != null) if (receiver != null)
{ {
receiver.ReceiveData(icmp_packet); receiver.ReceiveData(icmp_packet);
@ -50,8 +50,8 @@ namespace Cosmos.System.Network.IPv4
Global.mDebugger.Send("Received ICMP Echo reply from " + icmp_packet.SourceIP.ToString()); Global.mDebugger.Send("Received ICMP Echo reply from " + icmp_packet.SourceIP.ToString());
break; break;
case 8: case 8:
ICMPEchoRequest request = new ICMPEchoRequest(packetData); var request = new ICMPEchoRequest(packetData);
ICMPEchoReply reply = new ICMPEchoReply(request); var reply = new ICMPEchoReply(request);
Global.mDebugger.Send("Sending ICMP Echo reply to " + reply.DestinationIP.ToString()); Global.mDebugger.Send("Sending ICMP Echo reply to " + reply.DestinationIP.ToString());
OutgoingBuffer.AddPacket(reply); OutgoingBuffer.AddPacket(reply);
NetworkStack.Update(); NetworkStack.Update();
@ -131,31 +131,22 @@ namespace Cosmos.System.Network.IPv4
/// <summary> /// <summary>
/// Get ICMP type. /// Get ICMP type.
/// </summary> /// </summary>
internal byte ICMP_Type internal byte ICMPType => icmpType;
{
get { return icmpType; }
}
/// <summary> /// <summary>
/// Get ICMP code. /// Get ICMP code.
/// </summary> /// </summary>
internal byte ICMP_Code internal byte ICMPCode => icmpCode;
{
get { return icmpCode; }
}
/// <summary> /// <summary>
/// Get ICMP CRC. /// Get ICMP CRC.
/// </summary> /// </summary>
internal ushort ICMP_CRC internal ushort ICMPCRC => icmpCRC;
{
get { return icmpCRC; }
}
/// <summary> /// <summary>
/// Get ICMP data length. /// Get ICMP data length.
/// </summary> /// </summary>
internal ushort ICMP_DataLength internal ushort ICMPDataLength => (ushort)(DataLength - 8);
{
get { return (ushort)(DataLength - 8); }
}
/// <summary> /// <summary>
/// Get ICMP data. /// Get ICMP data.
@ -163,9 +154,9 @@ namespace Cosmos.System.Network.IPv4
/// <returns>byte array value.</returns> /// <returns>byte array value.</returns>
internal byte[] GetICMPData() internal byte[] GetICMPData()
{ {
byte[] data = new byte[ICMP_DataLength]; byte[] data = new byte[ICMPDataLength];
for (int b = 0; b < ICMP_DataLength; b++) for (int b = 0; b < ICMPDataLength; b++)
{ {
data[b] = RawData[DataOffset + 8 + b]; data[b] = RawData[DataOffset + 8 + b];
} }
@ -207,37 +198,49 @@ namespace Cosmos.System.Network.IPv4
{ {
} }
/// <summary>
/// Create new instance of the <see cref="ICMPEchoRequest"/> class.
/// </summary>
/// <param name="source">Source address.</param>
/// <param name="dest">Destination address.</param>
/// <param name="id">ID.</param>
/// <param name="sequence">Sequence.</param>
/// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception>
internal ICMPEchoRequest(Address source, Address dest, ushort id, ushort sequence) internal ICMPEchoRequest(Address source, Address dest, ushort id, ushort sequence)
: base(source, dest, 8, 0, id, sequence, 40) : base(source, dest, 8, 0, id, sequence, 40)
{ {
for (int b = 8; b < ICMP_DataLength; b++) for (int b = 8; b < ICMPDataLength; b++)
{ {
RawData[DataOffset + b] = (byte)b; RawData[DataOffset + b] = (byte)b;
} }
RawData[DataOffset + 2] = 0x00; RawData[DataOffset + 2] = 0x00;
RawData[DataOffset + 3] = 0x00; RawData[DataOffset + 3] = 0x00;
icmpCRC = CalcICMPCRC((ushort)(ICMP_DataLength + 8)); icmpCRC = CalcICMPCRC((ushort)(ICMPDataLength + 8));
RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF); RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF); RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
} }
/// <summary>
/// Init ICMPPacket fields.1
/// </summary>
/// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception>
protected override void InitFields() protected override void InitFields()
{ {
//Sys.Console.WriteLine("ICMPEchoRequest.InitFields() called;");
base.InitFields(); base.InitFields();
icmpID = (ushort)((RawData[DataOffset + 4] << 8) | RawData[DataOffset + 5]); icmpID = (ushort)((RawData[DataOffset + 4] << 8) | RawData[DataOffset + 5]);
icmpSequence = (ushort)((RawData[DataOffset + 6] << 8) | RawData[DataOffset + 7]); icmpSequence = (ushort)((RawData[DataOffset + 6] << 8) | RawData[DataOffset + 7]);
} }
internal ushort ICMP_ID /// <summary>
{ /// Get ICMP ID.
get { return icmpID; } /// </summary>
} internal ushort ICMPID => icmpID;
internal ushort ICMP_Sequence
{ /// <summary>
get { return icmpSequence; } /// Get ICMP Sequence.
} /// </summary>
internal ushort ICMPSequence => icmpSequence;
/// <summary> /// <summary>
/// To string. /// To string.
@ -291,16 +294,16 @@ namespace Cosmos.System.Network.IPv4
/// <param name="request">ICMP echo request.</param> /// <param name="request">ICMP echo request.</param>
/// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception> /// <exception cref="ArgumentException">Thrown if RawData is invalid or null.</exception>
internal ICMPEchoReply(ICMPEchoRequest request) internal ICMPEchoReply(ICMPEchoRequest request)
: base(request.DestinationIP, request.SourceIP, 0, 0, request.ICMP_ID, request.ICMP_Sequence, (ushort)(request.ICMP_DataLength)) : base(request.DestinationIP, request.SourceIP, 0, 0, request.ICMPID, request.ICMPSequence, (ushort)(request.ICMPDataLength))
{ {
for (int b = 0; b < ICMP_DataLength; b++) for (int b = 0; b < ICMPDataLength; b++)
{ {
RawData[DataOffset + 8 + b] = request.RawData[DataOffset + 8 + b]; RawData[DataOffset + 8 + b] = request.RawData[DataOffset + 8 + b];
} }
RawData[DataOffset + 2] = 0x00; RawData[DataOffset + 2] = 0x00;
RawData[DataOffset + 3] = 0x00; RawData[DataOffset + 3] = 0x00;
icmpCRC = CalcICMPCRC((ushort)(ICMP_DataLength + 8)); icmpCRC = CalcICMPCRC((ushort)(ICMPDataLength + 8));
RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF); RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF); RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
} }
@ -308,17 +311,12 @@ namespace Cosmos.System.Network.IPv4
/// <summary> /// <summary>
/// Get ICMP ID. /// Get ICMP ID.
/// </summary> /// </summary>
internal ushort ICMP_ID internal ushort ICMPID => icmpID;
{
get { return icmpID; }
}
/// <summary> /// <summary>
/// Get ICMP sequence. /// Get ICMP sequence.
/// </summary> /// </summary>
internal ushort ICMP_Sequence internal ushort ICMPSequence => icmpSequence;
{
get { return icmpSequence; }
}
/// <summary> /// <summary>
/// To string. /// To string.