diff --git a/source/Cosmos.System2/Network/ARP/ARPPacket.cs b/source/Cosmos.System2/Network/ARP/ARPPacket.cs
index b7ded06a6..c54a2981a 100644
--- a/source/Cosmos.System2/Network/ARP/ARPPacket.cs
+++ b/source/Cosmos.System2/Network/ARP/ARPPacket.cs
@@ -1,18 +1,16 @@
-using System;
+using Cosmos.HAL;
using Cosmos.HAL.Network;
-using Sys = System;
-using Cosmos.HAL;
using Cosmos.System.Network.IPv4;
namespace Cosmos.System.Network.ARP
{
internal class ARPPacket : EthernetPacket
{
- protected UInt16 aHardwareType;
- protected UInt16 aProtocolType;
+ protected ushort aHardwareType;
+ protected ushort aProtocolType;
protected byte aHardwareLen;
protected byte aProtocolLen;
- protected UInt16 aOperation;
+ protected ushort aOperation;
internal static void ARPHandler(byte[] packetData)
{
@@ -78,41 +76,32 @@ namespace Cosmos.System.Network.ARP
protected override void initFields()
{
base.initFields();
- aHardwareType = (UInt16)((mRawData[14] << 8) | mRawData[15]);
- aProtocolType = (UInt16)((mRawData[16] << 8) | mRawData[17]);
- aHardwareLen = mRawData[18];
- aProtocolLen = mRawData[19];
- aOperation = (UInt16)((mRawData[20] << 8) | mRawData[21]);
+ aHardwareType = (ushort)((RawData[14] << 8) | RawData[15]);
+ aProtocolType = (ushort)((RawData[16] << 8) | RawData[17]);
+ aHardwareLen = RawData[18];
+ aProtocolLen = RawData[19];
+ aOperation = (ushort)((RawData[20] << 8) | RawData[21]);
}
- protected ARPPacket(MACAddress dest, MACAddress src, UInt16 hwType, UInt16 protoType,
- byte hwLen, byte protoLen, UInt16 operation, int packet_size)
+ protected ARPPacket(MACAddress dest, MACAddress src, ushort hwType, ushort protoType,
+ byte hwLen, byte protoLen, ushort operation, int packet_size)
: base(dest, src, 0x0806, packet_size)
{
- mRawData[14] = (byte)(hwType >> 8);
- mRawData[15] = (byte)(hwType >> 0);
- mRawData[16] = (byte)(protoType >> 8);
- mRawData[17] = (byte)(protoType >> 0);
- mRawData[18] = hwLen;
- mRawData[19] = protoLen;
- mRawData[20] = (byte)(operation >> 8);
- mRawData[21] = (byte)(operation >> 0);
+ RawData[14] = (byte)(hwType >> 8);
+ RawData[15] = (byte)(hwType >> 0);
+ RawData[16] = (byte)(protoType >> 8);
+ RawData[17] = (byte)(protoType >> 0);
+ RawData[18] = hwLen;
+ RawData[19] = protoLen;
+ RawData[20] = (byte)(operation >> 8);
+ RawData[21] = (byte)(operation >> 0);
initFields();
}
- internal UInt16 Operation
- {
- get { return this.aOperation; }
- }
- internal UInt16 HardwareType
- {
- get { return this.aHardwareType; }
- }
- internal UInt16 ProtocolType
- {
- get { return this.aProtocolType; }
- }
+ internal ushort Operation => aOperation;
+ internal ushort HardwareType => aHardwareType;
+ internal ushort ProtocolType => aProtocolType;
public override string ToString()
{
diff --git a/source/Cosmos.System2/Network/EthernetPacket.cs b/source/Cosmos.System2/Network/EthernetPacket.cs
index 037b47764..a10260e8a 100644
--- a/source/Cosmos.System2/Network/EthernetPacket.cs
+++ b/source/Cosmos.System2/Network/EthernetPacket.cs
@@ -6,84 +6,73 @@ namespace Cosmos.System.Network
// for more info, http://standards.ieee.org/about/get/802/802.3.html
public class EthernetPacket
{
- protected byte[] mRawData;
protected MACAddress srcMAC;
protected MACAddress destMAC;
- protected UInt16 aEtherType;
protected EthernetPacket()
- { }
+ {
+ }
protected EthernetPacket(byte[] rawData)
{
- mRawData = rawData;
+ RawData = rawData;
initFields();
}
protected virtual void initFields()
{
- destMAC = new MACAddress(mRawData, 0);
- srcMAC = new MACAddress(mRawData, 6);
- aEtherType = (UInt16)((mRawData[12] << 8) | mRawData[13]);
+ destMAC = new MACAddress(RawData, 0);
+ srcMAC = new MACAddress(RawData, 6);
+ EthernetType = (ushort)((RawData[12] << 8) | RawData[13]);
}
- protected EthernetPacket(UInt16 type, int packet_size)
+ protected EthernetPacket(ushort type, int packet_size)
: this(MACAddress.None, MACAddress.None, type, packet_size)
{
}
- protected EthernetPacket(MACAddress dest, MACAddress src, UInt16 type, int packet_size)
+ protected EthernetPacket(MACAddress dest, MACAddress src, ushort type, int packet_size)
{
- mRawData = new byte[packet_size];
+ RawData = new byte[packet_size];
for (int i = 0; i < 6; i++)
{
- mRawData[i] = dest.bytes[i];
- mRawData[6 + i] = src.bytes[i];
+ RawData[i] = dest.bytes[i];
+ RawData[6 + i] = src.bytes[i];
}
- mRawData[12] = (byte)(type >> 8);
- mRawData[13] = (byte)(type >> 0);
+ RawData[12] = (byte)(type >> 8);
+ RawData[13] = (byte)(type >> 0);
initFields();
}
+ internal byte[] RawData { get; }
+
internal MACAddress SourceMAC
{
- get { return this.srcMAC; }
+ get => srcMAC;
set
{
for (int i = 0; i < 6; i++)
{
- mRawData[6 + i] = value.bytes[i];
+ RawData[6 + i] = value.bytes[i];
}
initFields();
}
}
internal MACAddress DestinationMAC
{
- get { return this.destMAC; }
+ get => destMAC;
set
{
for (int i = 0; i < 6; i++)
{
- mRawData[i] = value.bytes[i];
+ RawData[i] = value.bytes[i];
}
initFields();
}
}
- internal UInt16 EthernetType
- {
- get { return this.aEtherType; }
- }
- public byte[] GetBytes()
- {
- return this.mRawData;
- }
-
- public byte[] RawData
- {
- get { return this.mRawData; }
- }
+ internal ushort EthernetType { get; private set; }
///
/// Calculate any checksums
@@ -96,7 +85,7 @@ namespace Cosmos.System.Network
public override string ToString()
{
- return "Ethernet Packet : Src=" + srcMAC + ", Dest=" + destMAC + ", Type=" + aEtherType;
+ return "Ethernet Packet : Src=" + srcMAC + ", Dest=" + destMAC + ", Type=" + EthernetType;
}
}
}
diff --git a/source/Cosmos.System2/Network/IPv4/ARPPacket_Ethernet.cs b/source/Cosmos.System2/Network/IPv4/ARPPacket_Ethernet.cs
index c6e547c37..019a852fa 100644
--- a/source/Cosmos.System2/Network/IPv4/ARPPacket_Ethernet.cs
+++ b/source/Cosmos.System2/Network/IPv4/ARPPacket_Ethernet.cs
@@ -23,14 +23,14 @@ namespace Cosmos.System.Network.IPv4
protected override void initFields()
{
base.initFields();
- mSenderMAC = new MACAddress(mRawData, 22);
- mSenderIP = new Address(mRawData, 28);
+ mSenderMAC = new MACAddress(RawData, 22);
+ mSenderIP = new Address(RawData, 28);
if (SenderIP == null)
{
NetworkStack.debugger.Send("But its already null again");
}
- mTargetMAC = new MACAddress(mRawData, 32);
- mTargetIP = new Address(mRawData, 38);
+ mTargetMAC = new MACAddress(RawData, 32);
+ mTargetIP = new Address(RawData, 38);
}
protected ARPPacket_Ethernet(UInt16 operation, MACAddress senderMAC, Address senderIP,
@@ -39,13 +39,13 @@ namespace Cosmos.System.Network.IPv4
{
for (int i = 0; i < 6; i++)
{
- mRawData[22 + i] = senderMAC.bytes[i];
- mRawData[32 + i] = arpTargetMAC.bytes[i];
+ RawData[22 + i] = senderMAC.bytes[i];
+ RawData[32 + i] = arpTargetMAC.bytes[i];
}
for (int i = 0; i < 4; i++)
{
- mRawData[28 + i] = senderIP.address[i];
- mRawData[38 + i] = targetIP.address[i];
+ RawData[28 + i] = senderIP.address[i];
+ RawData[38 + i] = targetIP.address[i];
}
initFields();
diff --git a/source/Cosmos.System2/Network/IPv4/Config.cs b/source/Cosmos.System2/Network/IPv4/Config.cs
index a048e2e1a..ecbfd1ff0 100644
--- a/source/Cosmos.System2/Network/IPv4/Config.cs
+++ b/source/Cosmos.System2/Network/IPv4/Config.cs
@@ -9,12 +9,7 @@ namespace Cosmos.System.Network.IPv4
///
public class Config
{
- internal static List ipConfigs;
-
- static Config()
- {
- ipConfigs = new List();
- }
+ private static readonly List ipConfigs = new List();
internal static void Add(Config config)
{
@@ -73,10 +68,6 @@ namespace Cosmos.System.Network.IPv4
return null;
}
- protected Address address;
- protected Address defaultGateway;
- protected Address subnetMask;
-
///
/// Create a IPv4 Configuration with no default gateway
///
@@ -84,7 +75,8 @@ namespace Cosmos.System.Network.IPv4
/// Subnet Mask
public Config(Address ip, Address subnet)
: this(ip, subnet, Address.Zero)
- { }
+ {
+ }
///
/// Create a IPv4 Configuration
@@ -94,22 +86,13 @@ namespace Cosmos.System.Network.IPv4
/// Default gateway
public Config(Address ip, Address subnet, Address gw)
{
- this.address = ip;
- this.subnetMask = subnet;
- this.defaultGateway = gw;
+ IPAddress = ip;
+ SubnetMask = subnet;
+ DefaultGateway = gw;
}
- public Address IPAddress
- {
- get { return this.address; }
- }
- public Address SubnetMask
- {
- get { return this.subnetMask; }
- }
- public Address DefaultGateway
- {
- get { return this.defaultGateway; }
- }
+ public Address IPAddress { get; }
+ public Address SubnetMask { get; }
+ public Address DefaultGateway { get; }
}
}
diff --git a/source/Cosmos.System2/Network/IPv4/ICMPPacket.cs b/source/Cosmos.System2/Network/IPv4/ICMPPacket.cs
index ae1b6ec6f..9ebaa3e92 100644
--- a/source/Cosmos.System2/Network/IPv4/ICMPPacket.cs
+++ b/source/Cosmos.System2/Network/IPv4/ICMPPacket.cs
@@ -1,5 +1,4 @@
using System;
-using Sys = System;
namespace Cosmos.System.Network.IPv4
{
@@ -41,7 +40,8 @@ namespace Cosmos.System.Network.IPv4
internal ICMPPacket()
: base()
- { }
+ {
+ }
internal ICMPPacket(byte[] rawData)
: base(rawData)
@@ -52,50 +52,38 @@ namespace Cosmos.System.Network.IPv4
{
//Sys.Console.WriteLine("ICMPPacket.initFields() called;");
base.initFields();
- icmpType = mRawData[this.dataOffset];
- icmpCode = mRawData[this.dataOffset + 1];
- icmpCRC = (UInt16)((mRawData[this.dataOffset + 2] << 8) | mRawData[this.dataOffset + 3]);
+ icmpType = RawData[DataOffset];
+ icmpCode = RawData[DataOffset + 1];
+ icmpCRC = (ushort)((RawData[DataOffset + 2] << 8) | RawData[DataOffset + 3]);
}
- internal ICMPPacket(Address source, Address dest, byte type, byte code, UInt16 id, UInt16 seq, UInt16 icmpDataSize)
+ internal ICMPPacket(Address source, Address dest, byte type, byte code, ushort id, ushort seq, ushort icmpDataSize)
: base(icmpDataSize, 1, source, dest, 0x00)
{
- mRawData[this.dataOffset] = type;
- mRawData[this.dataOffset + 1] = code;
- mRawData[this.dataOffset + 2] = 0x00;
- mRawData[this.dataOffset + 3] = 0x00;
- mRawData[this.dataOffset + 4] = (byte)((id >> 8) & 0xFF);
- mRawData[this.dataOffset + 5] = (byte)((id >> 0) & 0xFF);
- mRawData[this.dataOffset + 6] = (byte)((seq >> 8) & 0xFF);
- mRawData[this.dataOffset + 7] = (byte)((seq >> 0) & 0xFF);
+ RawData[DataOffset] = type;
+ RawData[DataOffset + 1] = code;
+ RawData[DataOffset + 2] = 0x00;
+ RawData[DataOffset + 3] = 0x00;
+ RawData[DataOffset + 4] = (byte)((id >> 8) & 0xFF);
+ RawData[DataOffset + 5] = (byte)((id >> 0) & 0xFF);
+ RawData[DataOffset + 6] = (byte)((seq >> 8) & 0xFF);
+ RawData[DataOffset + 7] = (byte)((seq >> 0) & 0xFF);
- icmpCRC = CalcICMPCRC((UInt16)(icmpDataSize + 8));
- mRawData[this.dataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
- mRawData[this.dataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
+ icmpCRC = CalcICMPCRC((ushort)(icmpDataSize + 8));
+ RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
+ RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
initFields();
}
- protected UInt16 CalcICMPCRC(UInt16 length)
+ protected ushort CalcICMPCRC(ushort length)
{
- return CalcOcCRC(this.dataOffset, length);
+ return CalcOcCRC(DataOffset, length);
}
- internal byte ICMP_Type
- {
- get { return this.icmpType; }
- }
- internal byte ICMP_Code
- {
- get { return this.icmpCode; }
- }
- internal UInt16 ICMP_CRC
- {
- get { return this.icmpCRC; }
- }
- internal UInt16 ICMP_DataLength
- {
- get { return (UInt16)(this.DataLength - 8); }
- }
+ internal byte ICMP_Type => icmpType;
+ internal byte ICMP_Code => icmpCode;
+ internal ushort ICMP_CRC => icmpCRC;
+ internal ushort ICMP_DataLength => (ushort)(DataLength - 8);
internal byte[] GetICMPData()
{
@@ -103,7 +91,7 @@ namespace Cosmos.System.Network.IPv4
for (int b = 0; b < ICMP_DataLength; b++)
{
- data[b] = mRawData[this.dataOffset + 8 + b];
+ data[b] = RawData[DataOffset + 8 + b];
}
return data;
@@ -111,37 +99,37 @@ namespace Cosmos.System.Network.IPv4
public override string ToString()
{
- return "ICMP Packet Src=" + sourceIP + ", Dest=" + destIP + ", Type=" + icmpType + ", Code=" + icmpCode;
+ return "ICMP Packet Src=" + SourceIP + ", Dest=" + DestinationIP + ", Type=" + icmpType + ", Code=" + icmpCode;
}
}
internal class ICMPEchoRequest : ICMPPacket
{
- protected UInt16 icmpID;
- protected UInt16 icmpSequence;
+ protected ushort icmpID;
+ protected ushort icmpSequence;
internal ICMPEchoRequest()
- : base()
- { }
+ {
+ }
internal ICMPEchoRequest(byte[] rawData)
: base(rawData)
{
}
- internal ICMPEchoRequest(Address source, Address dest, UInt16 id, UInt16 sequence)
+ internal ICMPEchoRequest(Address source, Address dest, ushort id, ushort sequence)
: base(source, dest, 8, 0, id, sequence, 40)
{
- for (int b = 8; b < this.ICMP_DataLength; b++)
+ for (int b = 8; b < ICMP_DataLength; b++)
{
- mRawData[this.dataOffset + b] = (byte)b;
+ RawData[DataOffset + b] = (byte)b;
}
- mRawData[this.dataOffset + 2] = 0x00;
- mRawData[this.dataOffset + 3] = 0x00;
- icmpCRC = CalcICMPCRC((UInt16)(this.ICMP_DataLength + 8));
- mRawData[this.dataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
- mRawData[this.dataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
+ RawData[DataOffset + 2] = 0x00;
+ RawData[DataOffset + 3] = 0x00;
+ icmpCRC = CalcICMPCRC((ushort)(ICMP_DataLength + 8));
+ RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
+ RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
}
///
@@ -156,32 +144,26 @@ namespace Cosmos.System.Network.IPv4
{
//Sys.Console.WriteLine("ICMPEchoRequest.initFields() called;");
base.initFields();
- icmpID = (UInt16)((mRawData[this.dataOffset + 4] << 8) | mRawData[this.dataOffset + 5]);
- icmpSequence = (UInt16)((mRawData[this.dataOffset + 6] << 8) | mRawData[this.dataOffset + 7]);
+ icmpID = (ushort)((RawData[DataOffset + 4] << 8) | RawData[DataOffset + 5]);
+ icmpSequence = (ushort)((RawData[DataOffset + 6] << 8) | RawData[DataOffset + 7]);
}
- internal UInt16 ICMP_ID
- {
- get { return this.icmpID; }
- }
- internal UInt16 ICMP_Sequence
- {
- get { return this.icmpSequence; }
- }
+ internal ushort ICMP_ID => icmpID;
+ internal ushort ICMP_Sequence => icmpSequence;
public override string ToString()
{
- return "ICMP Echo Request Src=" + sourceIP + ", Dest=" + destIP + ", ID=" + icmpID + ", Sequence=" + icmpSequence;
+ return "ICMP Echo Request Src=" + SourceIP + ", Dest=" + DestinationIP + ", ID=" + icmpID + ", Sequence=" + icmpSequence;
}
}
internal class ICMPEchoReply : ICMPPacket
{
- protected UInt16 icmpID;
- protected UInt16 icmpSequence;
+ protected ushort icmpID;
+ protected ushort icmpSequence;
internal ICMPEchoReply()
- : base()
- { }
+ {
+ }
internal ICMPEchoReply(byte[] rawData)
: base(rawData)
@@ -200,38 +182,32 @@ namespace Cosmos.System.Network.IPv4
{
//Sys.Console.WriteLine("ICMPEchoReply.initFields() called;");
base.initFields();
- icmpID = (UInt16)((mRawData[this.dataOffset + 4] << 8) | mRawData[this.dataOffset + 5]);
- icmpSequence = (UInt16)((mRawData[this.dataOffset + 6] << 8) | mRawData[this.dataOffset + 7]);
+ icmpID = (ushort)((RawData[DataOffset + 4] << 8) | RawData[DataOffset + 5]);
+ icmpSequence = (ushort)((RawData[DataOffset + 6] << 8) | RawData[DataOffset + 7]);
}
internal ICMPEchoReply(ICMPEchoRequest request)
: base(request.DestinationIP, request.SourceIP, 0, 0,
- request.ICMP_ID, request.ICMP_Sequence, (UInt16)(request.ICMP_DataLength + 8))
+ request.ICMP_ID, request.ICMP_Sequence, (ushort)(request.ICMP_DataLength + 8))
{
- for (int b = 0; b < this.ICMP_DataLength; b++)
+ for (int b = 0; b < ICMP_DataLength; b++)
{
- mRawData[this.dataOffset + 8 + b] = request.RawData[this.dataOffset + 8 + b];
+ RawData[DataOffset + 8 + b] = request.RawData[DataOffset + 8 + b];
}
- mRawData[this.dataOffset + 2] = 0x00;
- mRawData[this.dataOffset + 3] = 0x00;
- icmpCRC = CalcICMPCRC((UInt16)(this.ICMP_DataLength + 8));
- mRawData[this.dataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
- mRawData[this.dataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
+ RawData[DataOffset + 2] = 0x00;
+ RawData[DataOffset + 3] = 0x00;
+ icmpCRC = CalcICMPCRC((ushort)(ICMP_DataLength + 8));
+ RawData[DataOffset + 2] = (byte)((icmpCRC >> 8) & 0xFF);
+ RawData[DataOffset + 3] = (byte)((icmpCRC >> 0) & 0xFF);
}
- internal UInt16 ICMP_ID
- {
- get { return this.icmpID; }
- }
- internal UInt16 ICMP_Sequence
- {
- get { return this.icmpSequence; }
- }
+ internal UInt16 ICMP_ID => icmpID;
+ internal UInt16 ICMP_Sequence => icmpSequence;
public override string ToString()
{
- return "ICMP Echo Reply Src=" + sourceIP + ", Dest=" + destIP + ", ID=" + icmpID + ", Sequence=" + icmpSequence;
+ return "ICMP Echo Reply Src=" + SourceIP + ", Dest=" + DestinationIP + ", ID=" + icmpID + ", Sequence=" + icmpSequence;
}
}
}
diff --git a/source/Cosmos.System2/Network/IPv4/IPPacket.cs b/source/Cosmos.System2/Network/IPv4/IPPacket.cs
index be2c0b946..bd2f12c38 100644
--- a/source/Cosmos.System2/Network/IPv4/IPPacket.cs
+++ b/source/Cosmos.System2/Network/IPv4/IPPacket.cs
@@ -1,29 +1,13 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Cosmos.HAL.Network;
+using Cosmos.HAL.Network;
using Cosmos.System.Network.ARP;
namespace Cosmos.System.Network.IPv4
{
public class IPPacket : EthernetPacket
{
- protected byte ipVersion;
protected byte ipHeaderLength;
- protected byte tos;
- protected UInt16 ipLength;
- protected UInt16 fragmentID;
- protected UInt16 fragmentOffset;
- protected byte flags;
- protected byte ttl;
- protected byte proto;
- protected UInt16 ipCRC;
- protected Address sourceIP;
- protected Address destIP;
- protected UInt16 dataOffset;
- private static UInt16 sNextFragmentID;
+ private static ushort sNextFragmentID;
internal static void IPv4Handler(byte[] packetData)
{
@@ -54,156 +38,113 @@ namespace Cosmos.System.Network.IPv4
}
}
- public static UInt16 NextIPFragmentID
- {
- get
- {
- return sNextFragmentID++;
- }
- }
+ public static ushort NextIPFragmentID => sNextFragmentID++;
internal IPPacket()
- : base()
- { }
+ {
+ }
internal IPPacket(byte[] rawData)
: base(rawData)
- { }
+ {
+ }
protected override void initFields()
{
base.initFields();
- ipVersion = (byte)((mRawData[14] & 0xF0) >> 4);
- ipHeaderLength = (byte)(mRawData[14] & 0x0F);
- tos = mRawData[15];
- ipLength = (UInt16)((mRawData[16] << 8) | mRawData[17]);
- fragmentID = (UInt16)((mRawData[18] << 8) | mRawData[19]);
- flags = (byte)((mRawData[20] & 0xE0) >> 5);
- fragmentOffset = (UInt16)(((mRawData[20] & 0x1F) << 8) | mRawData[21]);
- ttl = mRawData[22];
- proto = mRawData[23];
- ipCRC = (UInt16)((mRawData[24] << 8) | mRawData[25]);
- sourceIP = new Address(mRawData, 26);
- destIP = new Address(mRawData, 30);
- dataOffset = (UInt16)(14 + HeaderLength);
+ IPVersion = (byte)((RawData[14] & 0xF0) >> 4);
+ ipHeaderLength = (byte)(RawData[14] & 0x0F);
+ TypeOfService = RawData[15];
+ IPLength = (ushort)((RawData[16] << 8) | RawData[17]);
+ FragmentID = (ushort)((RawData[18] << 8) | RawData[19]);
+ Flags = (byte)((RawData[20] & 0xE0) >> 5);
+ FragmentOffset = (ushort)(((RawData[20] & 0x1F) << 8) | RawData[21]);
+ TTL = RawData[22];
+ Protocol = RawData[23];
+ IPCRC = (ushort)((RawData[24] << 8) | RawData[25]);
+ SourceIP = new Address(RawData, 26);
+ DestinationIP = new Address(RawData, 30);
+ DataOffset = (ushort)(14 + HeaderLength);
}
- protected IPPacket(UInt16 dataLength, byte protocol, Address source, Address dest, byte Flags)
+ protected IPPacket(ushort dataLength, byte protocol, Address source, Address dest, byte Flags)
: this(MACAddress.None, MACAddress.None, dataLength, protocol, source, dest, Flags)
{ }
- public IPPacket(MACAddress srcMAC, MACAddress destMAC, UInt16 dataLength, byte protocol,
+ public IPPacket(MACAddress srcMAC, MACAddress destMAC, ushort dataLength, byte protocol,
Address source, Address dest, byte Flags)
: base(destMAC, srcMAC, 0x0800, dataLength + 14 + 20)
{
- mRawData[14] = 0x45;
- mRawData[15] = 0;
- ipLength = (UInt16)(dataLength + 20);
+ RawData[14] = 0x45;
+ RawData[15] = 0;
+ IPLength = (ushort)(dataLength + 20);
ipHeaderLength = 5;
- mRawData[16] = (byte)((ipLength >> 8) & 0xFF);
- mRawData[17] = (byte)((ipLength >> 0) & 0xFF);
- fragmentID = NextIPFragmentID;
- mRawData[18] = (byte)((fragmentID >> 8) & 0xFF);
- mRawData[19] = (byte)((fragmentID >> 0) & 0xFF);
- mRawData[20] = Flags;
- mRawData[21] = 0x00;
- mRawData[22] = 0x80;
- mRawData[23] = protocol;
- mRawData[24] = 0x00;
- mRawData[25] = 0x00;
+ RawData[16] = (byte)((IPLength >> 8) & 0xFF);
+ RawData[17] = (byte)((IPLength >> 0) & 0xFF);
+ FragmentID = NextIPFragmentID;
+ RawData[18] = (byte)((FragmentID >> 8) & 0xFF);
+ RawData[19] = (byte)((FragmentID >> 0) & 0xFF);
+ RawData[20] = Flags;
+ RawData[21] = 0x00;
+ RawData[22] = 0x80;
+ RawData[23] = protocol;
+ RawData[24] = 0x00;
+ RawData[25] = 0x00;
for (int b = 0; b < 4; b++)
{
- mRawData[26 + b] = source.address[b];
- mRawData[30 + b] = dest.address[b];
+ RawData[26 + b] = source.address[b];
+ RawData[30 + b] = dest.address[b];
}
- ipCRC = CalcIPCRC(20);
- mRawData[24] = (byte)((ipCRC >> 8) & 0xFF);
- mRawData[25] = (byte)((ipCRC >> 0) & 0xFF);
+ IPCRC = CalcIPCRC(20);
+ RawData[24] = (byte)((IPCRC >> 8) & 0xFF);
+ RawData[25] = (byte)((IPCRC >> 0) & 0xFF);
initFields();
}
- protected UInt16 CalcOcCRC(UInt16 offset, UInt16 length)
- {
- return IPPacket.CalcOcCRC(this.RawData, offset, length);
- }
+ protected ushort CalcOcCRC(ushort offset, ushort length) => CalcOcCRC(RawData, offset, length);
- protected static UInt16 CalcOcCRC(byte[] buffer, UInt16 offset, int length)
+ protected static ushort CalcOcCRC(byte[] buffer, ushort offset, int length)
{
- UInt32 crc = 0;
+ uint crc = 0;
- for (UInt16 w = offset; w < offset + length; w += 2)
+ for (ushort w = offset; w < offset + length; w += 2)
{
- crc += (UInt16)((buffer[w] << 8) | buffer[w + 1]);
+ crc += (ushort)((buffer[w] << 8) | buffer[w + 1]);
}
crc = (~((crc & 0xFFFF) + (crc >> 16)));
- return (UInt16)crc;
+ return (ushort)crc;
}
- protected UInt16 CalcIPCRC(UInt16 headerLength)
+ protected ushort CalcIPCRC(ushort headerLength)
{
return CalcOcCRC(14, headerLength);
}
- internal byte IPVersion
- {
- get { return this.ipVersion; }
- }
- internal UInt16 HeaderLength
- {
- get { return (UInt16)(this.ipHeaderLength * 4); }
- }
- internal byte TypeOfService
- {
- get { return this.tos; }
- }
- internal UInt16 IPLength
- {
- get { return this.ipLength; }
- }
- internal UInt16 FragmentID
- {
- get { return this.fragmentID; }
- }
- internal UInt16 FragmentOffset
- {
- get { return this.fragmentOffset; }
- }
- internal byte Flags
- {
- get { return this.flags; }
- }
- internal byte TTL
- {
- get { return this.ttl; }
- }
- internal byte Protocol
- {
- get { return this.proto; }
- }
- internal UInt16 IPCRC
- {
- get { return this.ipCRC; }
- }
- internal Address SourceIP
- {
- get { return this.sourceIP; }
- }
- internal Address DestinationIP
- {
- get { return this.destIP; }
- }
- internal UInt16 DataLength
- {
- get { return (UInt16)(this.ipLength - this.HeaderLength); }
- }
+ internal byte IPVersion { get; private set; }
+ internal ushort HeaderLength => (ushort)(ipHeaderLength * 4);
+
+ internal byte TypeOfService { get; private set; }
+
+ internal ushort IPLength { get; private set; }
+ internal ushort FragmentID { get; private set; }
+ internal byte Flags { get; private set; }
+ internal ushort FragmentOffset { get; private set; }
+ internal byte TTL { get; private set; }
+ internal byte Protocol { get; private set; }
+ internal ushort IPCRC { get; private set; }
+ internal Address SourceIP { get; private set; }
+ internal Address DestinationIP { get; private set; }
+ internal ushort DataOffset { get; private set; }
+
+ internal ushort DataLength => (ushort)(IPLength - HeaderLength);
public override string ToString()
{
- return "IP Packet Src=" + sourceIP + ", Dest=" + destIP + ", Protocol=" + proto + ", TTL=" + ttl + ", DataLen=" + DataLength;
+ return "IP Packet Src=" + SourceIP + ", Dest=" + DestinationIP + ", Protocol=" + Protocol + ", TTL=" + TTL + ", DataLen=" + DataLength;
}
}
}
diff --git a/source/Cosmos.System2/Network/IPv4/UDP/UDPPacket.cs b/source/Cosmos.System2/Network/IPv4/UDP/UDPPacket.cs
index 5eb5f5264..ab21c0e10 100644
--- a/source/Cosmos.System2/Network/IPv4/UDP/UDPPacket.cs
+++ b/source/Cosmos.System2/Network/IPv4/UDP/UDPPacket.cs
@@ -1,17 +1,11 @@
using System;
using System.Text;
-using Sys = System;
namespace Cosmos.System.Network.IPv4
{
public class UDPPacket : IPPacket
{
- protected UInt16 sourcePort;
- protected UInt16 destPort;
- protected UInt16 udpLen;
- protected UInt16 udpCRC;
-
- public static string DHCP;
+ private ushort udpCRC;
internal static void UDPHandler(byte[] packetData)
{
@@ -81,7 +75,7 @@ namespace Cosmos.System.Network.IPv4
public static bool CheckCRC(UDPPacket packet)
{
- byte[] header = MakeHeader(packet.sourceIP.address, packet.destIP.address, packet.udpLen, packet.sourcePort, packet.destPort, packet.UDP_Data);
+ byte[] header = MakeHeader(packet.SourceIP.address, packet.DestinationIP.address, packet.UDP_Length, packet.SourcePort, packet.DestinationPort, packet.UDP_Data);
UInt16 calculatedcrc = Check(header, 0, header.Length);
//NetworkStack.debugger.Send("Calculated: 0x" + Utils.Conversion.DecToHex(calculatedcrc));
//NetworkStack.debugger.Send("Received: 0x" + Utils.Conversion.DecToHex(packet.udpCRC));
@@ -95,17 +89,17 @@ namespace Cosmos.System.Network.IPv4
}
}
- protected static UInt16 Check(byte[] buffer, UInt16 offset, int length)
+ protected static ushort Check(byte[] buffer, ushort offset, int length)
{
- UInt32 crc = 0;
+ uint crc = 0;
- for (UInt16 w = offset; w < offset + length; w += 2)
+ for (ushort w = offset; w < offset + length; w += 2)
{
- crc += (UInt16)((buffer[w] << 8) | buffer[w + 1]);
+ crc += (ushort)((buffer[w] << 8) | buffer[w + 1]);
}
crc = (~((crc & 0xFFFF) + (crc >> 16)));
- return (UInt16)crc;
+ return (ushort)crc;
}
@@ -118,34 +112,35 @@ namespace Cosmos.System.Network.IPv4
}
internal UDPPacket()
- : base()
- { }
+ {
+ }
public UDPPacket(byte[] rawData)
: base(rawData)
- { }
-
- public UDPPacket(Address source, Address dest, UInt16 srcPort, UInt16 destPort, byte[] data)
- : base((UInt16)(data.Length + 8), 17, source, dest, 0x00)
{
- mRawData[this.dataOffset + 0] = (byte)((srcPort >> 8) & 0xFF);
- mRawData[this.dataOffset + 1] = (byte)((srcPort >> 0) & 0xFF);
- mRawData[this.dataOffset + 2] = (byte)((destPort >> 8) & 0xFF);
- mRawData[this.dataOffset + 3] = (byte)((destPort >> 0) & 0xFF);
- udpLen = (UInt16)(data.Length + 8);
+ }
- mRawData[this.dataOffset + 4] = (byte)((udpLen >> 8) & 0xFF);
- mRawData[this.dataOffset + 5] = (byte)((udpLen >> 0) & 0xFF);
+ public UDPPacket(Address source, Address dest, ushort srcPort, ushort destPort, byte[] data)
+ : base((ushort)(data.Length + 8), 17, source, dest, 0x00)
+ {
+ RawData[DataOffset + 0] = (byte)((srcPort >> 8) & 0xFF);
+ RawData[DataOffset + 1] = (byte)((srcPort >> 0) & 0xFF);
+ RawData[DataOffset + 2] = (byte)((destPort >> 8) & 0xFF);
+ RawData[DataOffset + 3] = (byte)((destPort >> 0) & 0xFF);
+ UDP_Length = (ushort)(data.Length + 8);
- byte[] header = MakeHeader(source.address, dest.address, udpLen, srcPort, destPort, data);
+ RawData[DataOffset + 4] = (byte)((UDP_Length >> 8) & 0xFF);
+ RawData[DataOffset + 5] = (byte)((UDP_Length >> 0) & 0xFF);
+
+ byte[] header = MakeHeader(source.address, dest.address, UDP_Length, srcPort, destPort, data);
UInt16 calculatedcrc = Check(header, 0, header.Length);
- mRawData[this.dataOffset + 6] = (byte)((calculatedcrc >> 8) & 0xFF);
- mRawData[this.dataOffset + 7] = (byte)((calculatedcrc >> 0) & 0xFF);
+ RawData[DataOffset + 6] = (byte)((calculatedcrc >> 8) & 0xFF);
+ RawData[DataOffset + 7] = (byte)((calculatedcrc >> 0) & 0xFF);
for (int b = 0; b < data.Length; b++)
{
- mRawData[this.dataOffset + 8 + b] = data[b];
+ RawData[DataOffset + 8 + b] = data[b];
}
initFields();
@@ -154,37 +149,26 @@ namespace Cosmos.System.Network.IPv4
protected override void initFields()
{
base.initFields();
- sourcePort = (UInt16)((mRawData[this.dataOffset] << 8) | mRawData[this.dataOffset + 1]);
- destPort = (UInt16)((mRawData[this.dataOffset + 2] << 8) | mRawData[this.dataOffset + 3]);
- udpLen = (UInt16)((mRawData[this.dataOffset + 4] << 8) | mRawData[this.dataOffset + 5]);
- udpCRC = (UInt16)((mRawData[this.dataOffset + 6] << 8) | mRawData[this.dataOffset + 7]);
+ SourcePort = (ushort)((RawData[DataOffset] << 8) | RawData[DataOffset + 1]);
+ DestinationPort = (ushort)((RawData[DataOffset + 2] << 8) | RawData[DataOffset + 3]);
+ UDP_Length = (ushort)((RawData[DataOffset + 4] << 8) | RawData[DataOffset + 5]);
+ udpCRC = (ushort)((RawData[DataOffset + 6] << 8) | RawData[DataOffset + 7]);
}
- internal UInt16 DestinationPort
- {
- get { return this.destPort; }
- }
- internal UInt16 SourcePort
- {
- get { return this.sourcePort; }
- }
- internal UInt16 UDP_Length
- {
- get { return this.udpLen; }
- }
- internal UInt16 UDP_DataLength
- {
- get { return (UInt16)(this.udpLen - 8); }
- }
+ public ushort DestinationPort { get; private set; }
+ public ushort SourcePort { get; private set; }
+ public ushort UDP_Length { get; private set; }
+ public ushort UDP_DataLength => (ushort)(UDP_Length - 8);
+
internal byte[] UDP_Data
{
get
{
- byte[] data = new byte[this.udpLen - 8];
+ byte[] data = new byte[UDP_DataLength];
for (int b = 0; b < data.Length; b++)
{
- data[b] = this.mRawData[this.dataOffset + 8 + b];
+ data[b] = RawData[DataOffset + 8 + b];
}
return data;
@@ -193,7 +177,8 @@ namespace Cosmos.System.Network.IPv4
public override string ToString()
{
- return "UDP Packet Src=" + sourceIP + ":" + sourcePort + ", Dest=" + destIP + ":" + destPort + ", DataLen=" + UDP_DataLength;
+ return "UDP Packet Src=" + SourceIP + ":" + SourcePort + "," +
+ "Dest=" + DestinationIP + ":" + DestinationPort + ", DataLen=" + UDP_DataLength;
}
}
}