var interfaces = NetworkInterface.GetAllNetworkInterfaces();
if (!interfaces[0].IsDhcpEnabled) {
interfaces[0].EnableDhcp();
} else {
interfaces[0].RenewDhcpLease();
}
for (int i = 0; i < interfaces[0].DnsAddresses.Length; i++) {
Debug.Print("DNS Server " + i + ": " + interfaces[0].DnsAddresses[i]);
}
The following will be printed out:
DNS Server 0: 192.168.254.254
DNS Server 1: 175.142.2.0
I am pretty sure that my router is not giving out 175.142.2.0. Certainly the workstations on my network don’t list this address. Where is it coming from?
Occasionally, when I try to resolve a DNS address with Dns.GetHostEntry(), it will fail with a SocketException.
FYI-- in MFDeploy, my Cobra reports:
ClrInfo.targetFrameworkVersion: 4.0.1681.0
SolutionReleaseInfo.solutionVersion: 4.0.3.0
I suspect the first DNS address is your router. The second is the DNS address that you router gave you was on that it got via DHCP from your IP provider.
You should also check the network configuration via MFDeploy.
Yep, 192.168.254.254 is my router, but 175.142.2.0 is not the one it got from my ISP. That doesn’t even point to a host (it ends with .0).
I’m extremely new to the .NET micro framework, but I went to MFDeploy > Target > Configuration > Network and updated my network settings. I changed the Secondary DNS Server to both 0.0.0.0 and 192.168.254.254. These values seem to get saved even if I power-cycle the board.
However, when I run the code from my original post, it still prints out 175.142.2.0 !
I don’t have another router handy, but when I look at the DHCP exchange in Wireshark, I can confirm that 192.168.254.254 is the only address offered by the router.
Still, I would think that a “default” address should not be filled in, when one is not supplied in the DHCP exchange. Greg, don’t suppose you caught what happened when your DNS lookup failed, did it fail over to the 2nd DNS server by any chance?
Brett, I agree-- this seems like a bug. I am going to have to do more testing before I can verify, for sure, that the extra DNS error caused my lookups to fail.
However, it was some exceptions (SocketException, I think) that caused me to look into all this in the first place anyway.
I should a test application ready soon to see if my network calls actually fail because of the DNS configuration.
It seems that your DHCP server is not providing a secondary DNS IP address, but the system should set it to 0.0.0.0 I suppose.We will look into this issue more.
But you should keep something in mind, if the first DNS was correct, the system will not communicate the secondary DNS, (which is the valid case in most times).
And in your specific case, you already have only one DNS IP address with your DHCP server. so you will get the same results with 175.142.2.0 or 0.0.0.0 as a secondary DNS.
I’m also trying to use the following code on my Chipworkx :
var interfaces = NetworkInterface.GetAllNetworkInterfaces();
if (!interfaces[0].IsDhcpEnabled)
interfaces[0].EnableDhcp();
else
interfaces[0].RenewDhcpLease();
But the RenewDhcpLease throw me an Exception after a while (that seems to be a time out…
DHCP has been set with MFDEPLOY, and when I ask the NetworkInterface boot configuration, it show me :
DHCP : YES
IP : 0.0.0.0
MASK : 0.0.0.0
GATEWAY : 0.0.0.0
no DNS
Which are effectively the params I entered in MFDeploy. Does it mean that something goes wrong with the way I’m trying to use it ?