public static string GetHostName() { IPContract /*.Imp*/ ipConn = GetIPConnection(); try { String hostName = ipConn.GetHostName(); string strHostName = hostName; //delete hostName; return(strHostName); } finally { ReleaseIPConnection(ipConn); } }
} // GetHostByName public static IPAddress[] GetLocalHostAddresses() { IPAddress[] retval; IPContract /*.Imp*/ ipConn = GetIPConnection(); try { String[] ifList; ArrayList addresses = new ArrayList(); ifList = ipConn.GetInterfaces(); for (int i = 0; i < ifList.Length; ++i) { InterfaceInfo ifInfo = ipConn.GetInterfaceState(ifList[i]); ifList[i] = null; // Copy out all of this interface's addresses InterfaceIPInfo[] ipConfigs = ifInfo.ipConfigs; if (ipConfigs != null) { for (int j = 0; j < ipConfigs.Length; ++j) { addresses.Add(new IPAddress(ipConfigs[j].address)); } } //ifInfo.Dispose(); } IPAddress[] ipAddresses = new IPAddress[addresses.Count]; for (int i = 0; i < ipAddresses.Length; i++) { ipAddresses[i] = (IPAddress)(addresses[i]); } return(ipAddresses); } finally { ReleaseIPConnection(ipConn); } } // GetLocalHostAddresses
internal static void ReleaseIPConnection(IPContract /*.Imp*/ connection) { IPSlot.Release(connection); }
public override void Run() { System.DebugStub.Print("IoThread@" + Kernel.CurrentThread + ". "); byte[] pciDmaBuffer; try { CompilerIntrinsics.Cli(); pciDmaBuffer = NucleusCalls.PciDmaBuffer(); } finally { CompilerIntrinsics.Sti(); } if (pciDmaBuffer == null) { System.DebugStub.Print("No IO-MMU. "); Kernel.kernel.NewSemaphore(0).Wait(); return; } // Set up networking Microsoft.Singularity.NetStack2.ARP arp = new Microsoft.Singularity.NetStack2.ARP(); Microsoft.Singularity.NetStack2.IP.Initialize(arp); Microsoft.Singularity.NetStack2.Ethernet.Initialize(arp); //Microsoft.Singularity.NetStack2.Channels.Private.RoutingExpManager routingManager = // new Microsoft.Singularity.NetStack2.Channels.Private.RoutingExpManager(); Microsoft.Singularity.NetStack2.Channels.Private.IPContract ipManager = new Microsoft.Singularity.NetStack2.Channels.Private.IPContract(); // Establish DMA buffer area Microsoft.Singularity.Io.DmaMemory.Setup(); // Enumerate and initialize PCI devices for (uint id = 0; id < 65536; id += 8) { uint v; try { CompilerIntrinsics.Cli(); v = NucleusCalls.PciConfigRead32(id, 0); } finally { CompilerIntrinsics.Sti(); } if (v == 0x107c8086) { // Intel NIC System.DebugStub.Print("Found Intel NIC. "); Microsoft.Singularity.Drivers.Network.Intel.Intel intel = new Microsoft.Singularity.Drivers.Network.Intel.Intel( new Microsoft.Singularity.Io.PciDeviceConfig((ushort)id), new Microsoft.Singularity.Io.PciMemory(id), "82541 PI", Microsoft.Singularity.Drivers.Network.Intel.CardType.I82541PI); intel.Initialize(); Microsoft.Singularity.Io.Net.NicDeviceContract nicDev = new Microsoft.Singularity.Drivers.Network.Intel.IntelDeviceChannel(intel); bool ok = Microsoft.Singularity.NetStack2.Channels.Nic.Nic.CreateAndRegister( nicDev, "/nic0"); System.VTable.Assert(ok); ipManager.StartDhcp("/nic0"); } } System.DebugStub.Print("IoThread done. "); Kernel.kernel.NewSemaphore(0).Wait(); }