18#if defined(MCAST_JOIN_GROUP) && !defined(__APPLE__) && !defined(__FreeBSD__)
21# define HAS_MCAST_EXT 1
22#elif defined(IP_ADD_SOURCE_MEMBERSHIP) && !defined(__APPLE__)
24# define HAS_MCAST_EXT 1
28# define PHP_MCAST_JOIN_GROUP IP_ADD_MEMBERSHIP
29# define PHP_MCAST_LEAVE_GROUP IP_DROP_MEMBERSHIP
31# define PHP_MCAST_BLOCK_SOURCE IP_BLOCK_SOURCE
32# define PHP_MCAST_UNBLOCK_SOURCE IP_UNBLOCK_SOURCE
33# define PHP_MCAST_JOIN_SOURCE_GROUP IP_ADD_SOURCE_MEMBERSHIP
34# define PHP_MCAST_LEAVE_SOURCE_GROUP IP_DROP_SOURCE_MEMBERSHIP
37# define PHP_MCAST_JOIN_GROUP MCAST_JOIN_GROUP
38# define PHP_MCAST_LEAVE_GROUP MCAST_LEAVE_GROUP
39# define PHP_MCAST_BLOCK_SOURCE MCAST_BLOCK_SOURCE
40# define PHP_MCAST_UNBLOCK_SOURCE MCAST_UNBLOCK_SOURCE
41# define PHP_MCAST_JOIN_SOURCE_GROUP MCAST_JOIN_SOURCE_GROUP
42# define PHP_MCAST_LEAVE_SOURCE_GROUP MCAST_LEAVE_SOURCE_GROUP
58 struct in_addr *out_addr);
70 struct sockaddr *group,
72 unsigned int if_index);
77 struct sockaddr *group,
79 unsigned int if_index);
82int php_mcast_join_source(
85 struct sockaddr *group,
87 struct sockaddr *source,
89 unsigned int if_index);
91int php_mcast_leave_source(
94 struct sockaddr *group,
96 struct sockaddr *source,
98 unsigned int if_index);
100int php_mcast_block_source(
103 struct sockaddr *group,
105 struct sockaddr *source,
107 unsigned int if_index);
109int php_mcast_unblock_source(
112 struct sockaddr *group,
114 struct sockaddr *source,
116 unsigned int if_index);
zend_result php_add4_to_if_index(struct in_addr *addr, php_socket *php_sock, unsigned *if_index)
int php_mcast_join(php_socket *sock, int level, struct sockaddr *group, socklen_t group_len, unsigned int if_index)
zend_result php_if_index_to_addr4(unsigned if_index, php_socket *php_sock, struct in_addr *out_addr)
int php_mcast_leave(php_socket *sock, int level, struct sockaddr *group, socklen_t group_len, unsigned int if_index)
int php_do_setsockopt_ip_mcast(php_socket *php_sock, int level, int optname, zval *arg4)
zend_result php_string_to_if_index(const char *val, unsigned *out)
int php_do_setsockopt_ipv6_mcast(php_socket *php_sock, int level, int optname, zval *arg4)
ZEND_RESULT_CODE zend_result