diff options
Diffstat (limited to 'csharp/src/Ice/Network.cs')
-rw-r--r-- | csharp/src/Ice/Network.cs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/csharp/src/Ice/Network.cs b/csharp/src/Ice/Network.cs index d9172aa086c..babefa65710 100644 --- a/csharp/src/Ice/Network.cs +++ b/csharp/src/Ice/Network.cs @@ -457,7 +457,7 @@ namespace IceInternal try { var indexes = new HashSet<int>(); - foreach(string intf in getInterfacesForMulticast(iface, group)) + foreach(string intf in getInterfacesForMulticast(iface, getProtocolSupport(group))) { int index = getInterfaceIndex(intf, group.AddressFamily); if(!indexes.Contains(index)) @@ -687,6 +687,11 @@ namespace IceInternal setBlock(fd, fd.Blocking); } + public static int getProtocolSupport(IPAddress addr) + { + return addr.AddressFamily == AddressFamily.InterNetwork ? EnableIPv4 : EnableIPv6; + } + public static EndPoint getAddressForServer(string host, int port, int protocol, bool preferIPv6) { if(host.Length == 0) @@ -951,11 +956,10 @@ namespace IceInternal return hosts; } - public static List<string> getInterfacesForMulticast(string intf, IPAddress group) + public static List<string> getInterfacesForMulticast(string intf, int protocol) { List<string> interfaces = new List<string>(); bool ipv4Wildcard = false; - int protocol = group.AddressFamily == AddressFamily.InterNetwork ? EnableIPv4 : EnableIPv6; if(isWildcard(intf, out ipv4Wildcard)) { IPAddress[] addrs = getLocalAddresses(ipv4Wildcard ? EnableIPv4 : protocol, true); |