/// <summary> /// Send a UDP packet to a destination device /// </summary> /// <param name="dest">IP address of destination</param> /// <param name="srcPort">Source port</param> /// <param name="destPort">Destination port to send data to</param> /// <param name="data">Data to be sent</param> public static void SendUDP(IPv4Address dest, UInt16 srcPort, UInt16 destPort, byte[] data) { IPv4Address source = FindNetwork(dest); if (source == null) { Console.WriteLine("Destination Network Unreachable!!"); return; } UDP.UDPPacket outgoing = new UDP.UDPPacket(source, dest, srcPort, destPort, data); TCPIP.IPv4OutgoingBuffer.AddPacket(outgoing); }
internal static IPv4Address FindRoute(IPv4Address destIP) { for (int c = 0; c < ipConfigs.Count; c++) { if (ipConfigs[c].DefaultGateway.CompareTo(IPv4Address.Zero) != 0) { return(ipConfigs[c].DefaultGateway); } } return(null); }
/// <summary> /// Can be used to test pinging to a network address from Cosmos /// </summary> /// <param name="dest">IP Address of destination</param> public static void Ping(IPv4Address dest) { IPv4Address source = FindNetwork(dest); if (source == null) { Console.WriteLine("Destination Network Unreachable!!"); return; } ICMP.ICMPEchoRequest request = new ICMP.ICMPEchoRequest(source, dest, 0x10, 1); TCPIP.IPv4OutgoingBuffer.AddPacket(request); }
internal static bool IsLocalAddress(IPv4Address destIP) { for (int c = 0; c < ipConfigs.Count; c++) { if ((ipConfigs[c].IPAddress.To32BitNumber() & ipConfigs[c].SubnetMask.To32BitNumber()) == (destIP.To32BitNumber() & ipConfigs[c].SubnetMask.To32BitNumber())) { return(true); } } return(false); }
public TcpClient(IPv4Address dest, UInt16 port) { IPv4Address source = TCPIPStack.FindNetwork(dest); if (source == null) { throw new ArgumentException("Destination host unreachable", "dest"); } this.connection = new TCPConnection(dest, port, source, NextLocalPort++, 0x5656, TCPConnection.State.SYN_SENT); this.connection.client = this; TCPIPStack.tcpSockets.Add(connection); TCPPacket packet = new TCPPacket(connection, connection.LocalSequenceNumber, 0, 0x02, 8192); TCPIP.IPv4OutgoingBuffer.AddPacket(packet); }
internal static IPv4Address FindNetwork(IPv4Address destIP) { IPv4Address default_gw = null; for (int c = 0; c < ipConfigs.Count; c++) { if ((ipConfigs[c].IPAddress.To32BitNumber() & ipConfigs[c].SubnetMask.To32BitNumber()) == (destIP.To32BitNumber() & ipConfigs[c].SubnetMask.To32BitNumber())) { return(ipConfigs[c].IPAddress); } if ((default_gw == null) && (ipConfigs[c].DefaultGateway.CompareTo(IPv4Address.Zero) != 0)) { default_gw = ipConfigs[c].IPAddress; } } return(default_gw); }
internal static HW.Network.NetworkDevice FindInterface(IPv4Address sourceIP) { return(addressMap[sourceIP.To32BitNumber()]); }
public IPv4EndPoint(IPv4Address addr, UInt16 port) { this.ipAddr = addr; this.port = port; }
public IPv4Config(IPv4Address ip, IPv4Address subnet, IPv4Address gw) { this.address = ip; this.subnetMask = subnet; this.defaultGateway = gw; }
public IPv4Config(IPv4Address ip, IPv4Address subnet) : this(ip, subnet, IPv4Address.Zero) { }