equal
deleted
inserted
replaced
402 |
402 |
403 if (ip != INADDR_LOOPBACK && ip != INADDR_ANY) { |
403 if (ip != INADDR_LOOPBACK && ip != INADDR_ANY) { |
404 inaddr.s_addr = htonl(ip | ~netmask); |
404 inaddr.s_addr = htonl(ip | ~netmask); |
405 _broadcast_list[i] = inaddr.s_addr; |
405 _broadcast_list[i] = inaddr.s_addr; |
406 i++; |
406 i++; |
|
407 if (i == MAX_INTERFACES) break; |
407 } |
408 } |
408 if (read < 0) { |
409 if (read < 0) { |
409 break; |
410 break; |
410 } |
411 } |
411 *output += read; |
412 *output += read; |
429 if (!(ifa->ifa_flags & IFF_BROADCAST)) continue; |
430 if (!(ifa->ifa_flags & IFF_BROADCAST)) continue; |
430 if (ifa->ifa_broadaddr == NULL) continue; |
431 if (ifa->ifa_broadaddr == NULL) continue; |
431 if (ifa->ifa_broadaddr->sa_family != AF_INET) continue; |
432 if (ifa->ifa_broadaddr->sa_family != AF_INET) continue; |
432 _broadcast_list[i] = ((struct sockaddr_in*)ifa->ifa_broadaddr)->sin_addr.s_addr; |
433 _broadcast_list[i] = ((struct sockaddr_in*)ifa->ifa_broadaddr)->sin_addr.s_addr; |
433 i++; |
434 i++; |
|
435 if (i == MAX_INTERFACES) break; |
434 } |
436 } |
435 freeifaddrs(ifap); |
437 freeifaddrs(ifap); |
436 |
438 |
437 #else /* not HAVE_GETIFADDRS */ |
439 #else /* not HAVE_GETIFADDRS */ |
438 SOCKET sock; |
440 SOCKET sock; |
468 * 255.255.255.255. |
470 * 255.255.255.255. |
469 */ |
471 */ |
470 _broadcast_list[i++] = |
472 _broadcast_list[i++] = |
471 ifo[j].iiAddress.AddressIn.sin_addr.s_addr | |
473 ifo[j].iiAddress.AddressIn.sin_addr.s_addr | |
472 ~ifo[j].iiNetmask.AddressIn.sin_addr.s_addr; |
474 ~ifo[j].iiNetmask.AddressIn.sin_addr.s_addr; |
|
475 if (i == MAX_INTERFACES) break; |
473 } |
476 } |
474 #else |
477 #else |
475 ifconf.ifc_len = sizeof(buf); |
478 ifconf.ifc_len = sizeof(buf); |
476 ifconf.ifc_buf = buf; |
479 ifconf.ifc_buf = buf; |
477 if (ioctl(sock, SIOCGIFCONF, &ifconf) == -1) { |
480 if (ioctl(sock, SIOCGIFCONF, &ifconf) == -1) { |
491 if (ioctl(sock, SIOCGIFFLAGS, &r) != -1 && |
494 if (ioctl(sock, SIOCGIFFLAGS, &r) != -1 && |
492 r.ifr_flags & IFF_BROADCAST && |
495 r.ifr_flags & IFF_BROADCAST && |
493 ioctl(sock, SIOCGIFBRDADDR, &r) != -1) { |
496 ioctl(sock, SIOCGIFBRDADDR, &r) != -1) { |
494 _broadcast_list[i++] = |
497 _broadcast_list[i++] = |
495 ((struct sockaddr_in*)&r.ifr_broadaddr)->sin_addr.s_addr; |
498 ((struct sockaddr_in*)&r.ifr_broadaddr)->sin_addr.s_addr; |
|
499 if (i == MAX_INTERFACES) break; |
496 } |
500 } |
497 } |
501 } |
498 |
502 |
499 p += sizeof(struct ifreq); |
503 p += sizeof(struct ifreq); |
500 #if defined(AF_LINK) && !defined(SUNOS) |
504 #if defined(AF_LINK) && !defined(SUNOS) |