diff options
author | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-07-11 08:29:39 +0000 |
---|---|---|
committer | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-07-11 08:29:39 +0000 |
commit | b9b749b70409e26d7b2fd6d92b3e9175455a5574 (patch) | |
tree | c297b2c9b389e4a37d7a8ab41bc5adfd570c20d1 /ext/sockets/multicast.c | |
parent | f214fd4f7db216a9c97b32dbf4427f6c5b8a640d (diff) | |
download | php-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.c | 13 |
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; } |