]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument
authorHarlan Stenn <stenn@ntp.org>
Sat, 21 Feb 2015 09:28:08 +0000 (09:28 +0000)
committerHarlan Stenn <stenn@ntp.org>
Sat, 21 Feb 2015 09:28:08 +0000 (09:28 +0000)
bk: 54e84fa8H2bt0wt8WLE5FWaCTm4xSw

ChangeLog
lib/isc/unix/ifiter_getifaddrs.c
lib/isc/unix/ifiter_ioctl.c

index 60173cc7c3ddda89a2cdc1b9405ac1b807d25c79..1822ea0509108b1c75086a8fc3d3e76b10bb3710 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 ---
 
+* [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument.
 * [Bug 2728] See if C99-style structure initialization works.
 * [Bug 2747] Upgrade libevent to 2.1.5-beta.
 ---
index c2e4044ac0088cd40254146d5bf9a9ad3a127156..425b9b4c3d3555476af039a1013e58696d79c326 100644 (file)
@@ -212,6 +212,9 @@ internal_current(isc_interfaceiter_t *iter) {
                get_addr(family, &iter->current.broadcast, ifa->ifa_broadaddr,
                         ifa->ifa_name);
 
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+       iter->current.ifindex = if_nametoindex(iter->current.name);
+#endif
        return (ISC_R_SUCCESS);
 }
 
index a684867ce71f9a81606953720e16e89e321ce462..747b702028401ba4bea3ef0862f863ef5ce0dda7 100644 (file)
@@ -588,6 +588,9 @@ internal_current4(isc_interfaceiter_t *iter) {
                }
                iter->current.netmask.type.in6.s6_addr[i] = (~0 << bits) & 0xff;
        }
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+       iter->current.ifindex = if_nametoindex(iter->current.name);
+#endif
        return (ISC_R_SUCCESS);
 
  inet:
@@ -664,6 +667,9 @@ internal_current4(isc_interfaceiter_t *iter) {
        }
        get_addr(family, &iter->current.netmask,
                 (struct sockaddr *)&ifreq.ifr_addr, ifreq.ifr_name);
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+       iter->current.ifindex = if_nametoindex(iter->current.name);
+#endif
        return (ISC_R_SUCCESS);
 }
 
@@ -704,7 +710,6 @@ internal_current6(isc_interfaceiter_t *iter) {
        get_addr(family, &iter->current.address,
                 (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name);
 
-       iter->current.ifindex = lifreq.lifr_index;
        if (isc_netaddr_islinklocal(&iter->current.address))
                isc_netaddr_setzone(&iter->current.address, 
                                    (isc_uint32_t)lifreq.lifr_index);
@@ -844,7 +849,9 @@ internal_current6(isc_interfaceiter_t *iter) {
                        iter->current.netmask.type.in6.s6_addr[i / 8] =
                                (~0 << bits) & 0xff;
                }
-
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+               iter->current.ifindex = if_nametoindex(iter->current.name);
+#endif
                return (ISC_R_SUCCESS);
        }
 #endif
@@ -867,6 +874,9 @@ internal_current6(isc_interfaceiter_t *iter) {
        get_addr(family, &iter->current.netmask,
                 (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name);
 
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+       iter->current.ifindex = if_nametoindex(iter->current.name);
+#endif
        return (ISC_R_SUCCESS);
 }
 #endif