From 07dcbacd60402016bec2e3797e37008df58e6a79 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 20 Apr 2009 15:46:03 +0200 Subject: [PATCH] only use struct ip_mreqn if it is detected * configure.ac: Make an explicit check for struct ip_mreqn. * gst/udp/gstudpnetutils.c: Use HAVE_IP_MREQN instead of the ad-hoc checks. --- configure.ac | 6 ++++++ gst/udp/gstudpnetutils.c | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index bb12f78d94..31cb7ac59c 100644 --- a/configure.ac +++ b/configure.ac @@ -179,6 +179,12 @@ dnl Check for mmap (needed by electricfence plugin) AC_FUNC_MMAP AM_CONDITIONAL(GST_HAVE_MMAP, test "x$ac_cv_func_mmap_fixed_mapped" == "xyes") +dnl Check for mmap (needed by electricfence plugin) + +AC_CHECK_TYPE([struct ip_mreqn], [ + AC_DEFINE(HAVE_IP_MREQN,, [Define if we have struct ip_mreqn])],, + [#include ]) + dnl *** checks for dependency libraries *** dnl GLib is required diff --git a/gst/udp/gstudpnetutils.c b/gst/udp/gstudpnetutils.c index 71828d3c7f..707f7fc72b 100644 --- a/gst/udp/gstudpnetutils.c +++ b/gst/udp/gstudpnetutils.c @@ -172,21 +172,21 @@ gst_udp_join_group (int sockfd, struct sockaddr_storage *addr, gchar * iface) switch (addr->ss_family) { case AF_INET: { -#if defined (G_OS_WIN32) || (defined (__SVR4) && defined (__sun)) - struct ip_mreq mreq4; -#else +#ifdef HAVE_IP_MREQN struct ip_mreqn mreq4; +#else + struct ip_mreq mreq4; #endif mreq4.imr_multiaddr.s_addr = ((struct sockaddr_in *) addr)->sin_addr.s_addr; -#if defined (G_OS_WIN32) || (defined (__SVR4) && defined (__sun)) - mreq4.imr_interface.s_addr = INADDR_ANY; -#else +#if HAVE_IP_MREQN if (iface) mreq4.imr_ifindex = if_nametoindex (iface); else mreq4.imr_ifindex = 0; /* Pick any. */ +#else + mreq4.imr_interface.s_addr = INADDR_ANY; #endif if ((ret =