@@ -1097,12 +1097,22 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
10971097 ifIndex = pAddress->Ipv6IfIndex ;
10981098 #elif (_WIN32_WINNT >= 0x0501) && (NTDDI_VERSION >= 0x05010100) // Win XP SP1
10991099 #if defined (IP_ADAPTER_IPV6_ENABLED) // Vista
1100- if ((pAddress->Flags & IP_ADAPTER_IPV6_ENABLED) &&
1101- (osvi.dwMajorVersion >= 5 ) &&
1102- (osvi.dwMinorVersion >= 1 ) &&
1103- (osvi.dwBuildNumber >=1 ))
1100+ if (osvi.dwMajorVersion >=6 )// vista
11041101 {
1105- ifIndex = pAddress->Ipv6IfIndex ;
1102+ if ((pAddress->Flags & IP_ADAPTER_IPV6_ENABLED) &&
1103+ (osvi.dwMajorVersion >= 5 ) &&
1104+ (osvi.dwMinorVersion >= 1 ) &&
1105+ (osvi.dwBuildNumber >=1 ))
1106+ {
1107+ ifIndex = pAddress->Ipv6IfIndex ;
1108+ }
1109+ }
1110+ else if ((osvi.dwMajorVersion >= 5 ) &&
1111+ (osvi.dwMinorVersion >= 1 ) &&
1112+ (osvi.dwBuildNumber >= 1 ))
1113+ {
1114+ ifIndex = pAddress->Ipv6IfIndex ;
1115+ }
11061116 }
11071117 #else // !defined(IP_ADAPTER_IPV6_ENABLED)
11081118 if ((osvi.dwMajorVersion >= 5 ) &&
@@ -1116,7 +1126,14 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
11161126#endif // POCO_HAVE_IPv6
11171127
11181128#if defined (IP_ADAPTER_IPV4_ENABLED)
1119- if (pAddress->Flags & IP_ADAPTER_IPV4_ENABLED)
1129+ if (osvi.dwMajorVersion >=6 )
1130+ {// vista
1131+ if (pAddress->Flags & IP_ADAPTER_IPV4_ENABLED)
1132+ {
1133+ ifIndex = pAddress->IfIndex ;
1134+ }
1135+ }
1136+ else
11201137 {
11211138 ifIndex = pAddress->IfIndex ;
11221139 }
@@ -1205,8 +1222,15 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
12051222#elif (_WIN32_WINNT >= 0x0501) && (NTDDI_VERSION >= 0x05010100) // Win XP SP1
12061223 ULONG prefixLength = 0 ;
12071224 #if (_WIN32_WINNT >= 0x0600) // Vista and newer
1208- prefixLength = pUniAddr->OnLinkPrefixLength ;
1209- broadcastAddress = getBroadcastAddress (pAddress->FirstPrefix , address);
1225+ if (osvi.dwMajorVersion >= 6 )
1226+ {
1227+ prefixLength = pUniAddr->OnLinkPrefixLength ;
1228+ broadcastAddress = getBroadcastAddress (pAddress->FirstPrefix , address);
1229+ }
1230+ else
1231+ {
1232+ broadcastAddress = getBroadcastAddress (pAddress->FirstPrefix , address, &prefixLength);
1233+ }
12101234 #else
12111235 broadcastAddress = getBroadcastAddress (pAddress->FirstPrefix , address, &prefixLength);
12121236 #endif
0 commit comments