Build system: Check for the "if_indextoname" function.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Mon, 5 Apr 2010 14:22:30 +0000 (16:22 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Mon, 5 Apr 2010 14:22:30 +0000 (16:22 +0200)
Use this information rather than hard-coding "if Linux …"

configure.in
src/network.c

index b5ce781..f3206cb 100644 (file)
@@ -477,7 +477,7 @@ AC_HEADER_TIME
 # Checks for library functions.
 #
 AC_PROG_GCC_TRADITIONAL
-AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog sysconf)
+AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog sysconf if_indextoname)
 
 AC_FUNC_STRERROR_R
 
index 6d0381b..9cb8c38 100644 (file)
@@ -1653,7 +1653,7 @@ static int network_set_interface (const sockent_t *se, const struct addrinfo *ai
                }
        }
 
-#if KERNEL_LINUX
+#if defined(HAVE_IF_INDEXTONAME) && HAVE_IF_INDEXTONAME && defined(SO_BINDTODEVICE)
        if (se->interface != 0)
        {
                char interface_name[IFNAMSIZ];
@@ -1673,7 +1673,7 @@ static int network_set_interface (const sockent_t *se, const struct addrinfo *ai
                        return (-1);
                }
        }
-#endif
+#endif /* HAVE_IF_INDEXTONAME && SO_BINDTODEVICE */
 
        return (0);
 } /* }}} network_set_interface */
@@ -1798,7 +1798,7 @@ static int network_bind_socket (int fd, const struct addrinfo *ai, const int int
                }
        }
 
-#if KERNEL_LINUX
+#if defined(HAVE_IF_INDEXTONAME) && HAVE_IF_INDEXTONAME && defined(SO_BINDTODEVICE)
        /* if a specific interface was set, bind the socket to it. But to avoid
         * possible problems with multicast routing, only do that for non-multicast
         * addresses */
@@ -1821,7 +1821,7 @@ static int network_bind_socket (int fd, const struct addrinfo *ai, const int int
                        return (-1);
                }
        }
-#endif
+#endif /* HAVE_IF_INDEXTONAME && SO_BINDTODEVICE */
 
        return (0);
 } /* int network_bind_socket */