summaryrefslogtreecommitdiff
path: root/csharp/src/Ice/Network.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/src/Ice/Network.cs')
-rw-r--r--csharp/src/Ice/Network.cs10
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);