+#else
+ struct ip_mreq mreq;
+ struct ifreq ifreq;
+
+ memset(&mreq, 0, sizeof(mreq));
+
+ if ((!if_indextoname(idx, ifreq.ifr_name))) {
+ avahi_log_warn("Can't find iface name for iface index %i:%s\n", idx, strerror(errno));
+ return -1;
+ }
+
+ if (ioctl(fd, SIOCGIFADDR, &ifreq) < 0) {
+ avahi_log_warn("SIOCGIFADDR failed: %s", strerror(errno));
+ return -1;
+ }
+
+ memcpy(&mreq.imr_interface,
+ &((struct sockaddr_in *) &ifreq.ifr_addr)->sin_addr,
+ sizeof(struct in_addr));
+#endif
+ mdns_mcast_group_ipv4 (&sa);
+ mreq.imr_multiaddr = sa.sin_addr;
+