summaryrefslogtreecommitdiff
path: root/ext/sockets/multicast.c
diff options
context:
space:
mode:
authorGustavo André dos Santos Lopes <cataphract@php.net>2011-07-11 08:29:39 +0000
committerGustavo André dos Santos Lopes <cataphract@php.net>2011-07-11 08:29:39 +0000
commitb9b749b70409e26d7b2fd6d92b3e9175455a5574 (patch)
treec297b2c9b389e4a37d7a8ab41bc5adfd570c20d1 /ext/sockets/multicast.c
parentf214fd4f7db216a9c97b32dbf4427f6c5b8a640d (diff)
downloadphp-git-b9b749b70409e26d7b2fd6d92b3e9175455a5574.tar.gz
- Further fix for bug #55111 (compilation failure of ext/sockets in Mac OS X).
Diffstat (limited to 'ext/sockets/multicast.c')
-rw-r--r--ext/sockets/multicast.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/sockets/multicast.c b/ext/sockets/multicast.c
index 49e9c5cf73..a9d1ea11ee 100644
--- a/ext/sockets/multicast.c
+++ b/ext/sockets/multicast.c
@@ -423,8 +423,8 @@ int php_if_index_to_addr4(unsigned if_index, php_socket *php_sock, struct in_add
#define ifr_ifindex ifr_index
#endif
- if_req.ifr_ifindex = if_index;
#if defined(SIOCGIFNAME)
+ if_req.ifr_ifindex = if_index;
if (ioctl(php_sock->bsd_socket, SIOCGIFNAME, &if_req) == -1) {
#elif defined(HAVE_IF_INDEXTONAME)
if (if_indextoname(if_index, if_req.ifr_name) == NULL) {
@@ -503,14 +503,25 @@ int php_add4_to_if_index(struct in_addr *addr, php_socket *php_sock, unsigned *i
if ((((struct sockaddr*)&cur_req->ifr_addr)->sa_family == AF_INET) &&
(((struct sockaddr_in*)&cur_req->ifr_addr)->sin_addr.s_addr ==
addr->s_addr)) {
+#if defined(SIOCGIFINDEX)
if (ioctl(php_sock->bsd_socket, SIOCGIFINDEX, (char*)cur_req)
== -1) {
+#elif defined(HAVE_IF_NAMETOINDEX)
+ unsigned index_tmp;
+ if ((index_tmp = if_nametoindex(cur_req->ifr_name)) == 0) {
+#else
+#error Neither SIOCGIFINDEX nor if_nametoindex are available
+#endif
php_error_docref(NULL TSRMLS_CC, E_WARNING,
"Error converting interface name to index: error %d",
errno);
goto err;
} else {
+#if defined(SIOCGIFINDEX)
*if_index = cur_req->ifr_ifindex;
+#else
+ *if_index = index_tmp;
+#endif
efree(buf);
return SUCCESS;
}