linger.l_linger = 0;
ret = _wapi_setsockopt (sock, system_level, system_name, &linger, sizeof (linger));
break;
+ case SocketOptionName_MulticastInterface:
+#ifndef HOST_WIN32
+#ifdef HAVE_STRUCT_IP_MREQN
+ int_val = GUINT32_FROM_BE (int_val);
+ if ((int_val & 0xff000000) == 0) {
+ /* int_val is interface index */
+ struct ip_mreqn mreq = {{0}};
+ mreq.imr_ifindex = int_val;
+ ret = _wapi_setsockopt (sock, system_level, system_name, (char *) &mreq, sizeof (mreq));
+ break;
+ }
+ int_val = GUINT32_TO_BE (int_val);
+#endif /* HAVE_STRUCT_IP_MREQN */
+#endif /* HOST_WIN32 */
+ /* int_val is in_addr */
+ ret = _wapi_setsockopt (sock, system_level, system_name, (char *) &int_val, sizeof (int_val));
+ break;
case SocketOptionName_DontFragment:
#ifdef HAVE_IP_MTU_DISCOVER
/* Fiddle with the value slightly if we're