in gateway/Program.cs [113:162]
static string GetReachableIPAddress()
{
var resolverPort = int.Parse(proxyResolverEndpointPort);
for (int i = 0; i < ConnectRetryCount; i++)
{
foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
{
foreach (var address in networkInterface.GetIPProperties().GatewayAddresses)
{
if (IPAddress.IsLoopback(address.Address) || address.Address.AddressFamily != AddressFamily.InterNetwork)
{
continue;
}
LogMessage(string.Format("Trying to connect to : {0}:{1}",
address.Address.ToString(),
proxyResolverEndpointPort));
Socket s = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
try
{
IAsyncResult result = s.BeginConnect(address.Address.ToString(), resolverPort, null, null);
result.AsyncWaitHandle.WaitOne(EndpointConnectTimeout, true);
if (s.Connected)
{
LogMessage(string.Format("Sucessfully connected : {0}:{1}",
address.Address.ToString(),
proxyResolverEndpointPort));
s.Close();
s = null;
return address.Address.ToString();
}
}
catch (Exception)
{
}
}
Task.Delay(DelayBetweenRetry);
}
}
LogMessage(string.Format("Did not find a reachable IP for: {0}", fabricNodeIpOrFQDN));
return null;
}