diff options
Diffstat (limited to 'ext/sockets/multicast.h')
-rw-r--r-- | ext/sockets/multicast.h | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/ext/sockets/multicast.h b/ext/sockets/multicast.h index f46a6a8f61..81a1bca799 100644 --- a/ext/sockets/multicast.h +++ b/ext/sockets/multicast.h @@ -18,17 +18,43 @@ /* $Id$ */ -#if defined(MCAST_JOIN_GROUP) && \ - (!defined(PHP_WIN32) || (_WIN32_WINNT >= 0x600 && SOCKETS_ENABLE_VISTA_API)) && \ - !defined(__APPLE__) -#define RFC3678_API 1 +#if defined(MCAST_JOIN_GROUP) && !defined(__APPLE__) +# define RFC3678_API 1 /* has block/unblock and source membership, in this case for both IPv4 and IPv6 */ -#define HAS_MCAST_EXT 1 +# define HAS_MCAST_EXT 1 #elif defined(IP_ADD_SOURCE_MEMBERSHIP) && !defined(__APPLE__) /* has block/unblock and source membership, but only for IPv4 */ -#define HAS_MCAST_EXT 1 +# define HAS_MCAST_EXT 1 #endif +#ifndef RFC3678_API +# define PHP_MCAST_JOIN_GROUP IP_ADD_MEMBERSHIP +# define PHP_MCAST_LEAVE_GROUP IP_DROP_MEMBERSHIP +# ifdef HAS_MCAST_EXT +# define PHP_MCAST_BLOCK_SOURCE IP_BLOCK_SOURCE +# define PHP_MCAST_UNBLOCK_SOURCE IP_UNBLOCK_SOURCE +# define PHP_MCAST_JOIN_SOURCE_GROUP IP_ADD_SOURCE_MEMBERSHIP +# define PHP_MCAST_LEAVE_SOURCE_GROUP IP_DROP_SOURCE_MEMBERSHIP +# endif +#else +# define PHP_MCAST_JOIN_GROUP MCAST_JOIN_GROUP +# define PHP_MCAST_LEAVE_GROUP MCAST_LEAVE_GROUP +# define PHP_MCAST_BLOCK_SOURCE MCAST_BLOCK_SOURCE +# define PHP_MCAST_UNBLOCK_SOURCE MCAST_UNBLOCK_SOURCE +# define PHP_MCAST_JOIN_SOURCE_GROUP MCAST_JOIN_SOURCE_GROUP +# define PHP_MCAST_LEAVE_SOURCE_GROUP MCAST_LEAVE_SOURCE_GROUP +#endif + +int php_do_setsockopt_ip_mcast(php_socket *php_sock, + int level, + int optname, + zval **arg4 TSRMLS_DC); + +int php_do_setsockopt_ipv6_mcast(php_socket *php_sock, + int level, + int optname, + zval **arg4 TSRMLS_DC); + int php_if_index_to_addr4( unsigned if_index, php_socket *php_sock, @@ -39,6 +65,8 @@ int php_add4_to_if_index( php_socket *php_sock, unsigned *if_index TSRMLS_DC); +int php_string_to_if_index(const char *val, unsigned *out TSRMLS_DC); + int php_mcast_join( php_socket *sock, int level, |