support php extension
parent
a4dbaea49a
commit
08fe0c6e01
|
|
@ -36,6 +36,7 @@ const zend_fcall_info empty_fcall_info = { 0, NULL, NULL, NULL, NULL, 0, NULL, N
|
||||||
// Every user visible function must have an entry in fastcommon_functions[].
|
// Every user visible function must have an entry in fastcommon_functions[].
|
||||||
zend_function_entry fastcommon_functions[] = {
|
zend_function_entry fastcommon_functions[] = {
|
||||||
ZEND_FE(fastcommon_version, NULL)
|
ZEND_FE(fastcommon_version, NULL)
|
||||||
|
ZEND_FE(fastcommon_gethostaddrs, NULL)
|
||||||
{NULL, NULL, NULL} /* Must be the last line */
|
{NULL, NULL, NULL} /* Must be the last line */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -114,9 +115,12 @@ ZEND_FUNCTION(fastcommon_gethostaddrs)
|
||||||
char *if_alias_prefix;
|
char *if_alias_prefix;
|
||||||
int if_prefix_len;
|
int if_prefix_len;
|
||||||
int count;
|
int count;
|
||||||
|
int uniq_count;
|
||||||
|
int i;
|
||||||
int k;
|
int k;
|
||||||
int alias_count;
|
int alias_count;
|
||||||
char ip_addresses[FAST_MAX_LOCAL_IP_ADDRS][IP_ADDRESS_SIZE];
|
char ip_addresses[FAST_MAX_LOCAL_IP_ADDRS][IP_ADDRESS_SIZE];
|
||||||
|
char *uniq_ips[FAST_MAX_LOCAL_IP_ADDRS];
|
||||||
char *if_alias_prefixes[1];
|
char *if_alias_prefixes[1];
|
||||||
|
|
||||||
argc = ZEND_NUM_ARGS();
|
argc = ZEND_NUM_ARGS();
|
||||||
|
|
@ -137,8 +141,7 @@ ZEND_FUNCTION(fastcommon_gethostaddrs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (if_alias_prefix == NULL || if_prefix_len == 0)
|
if (if_alias_prefix == NULL || if_prefix_len == 0) {
|
||||||
{
|
|
||||||
alias_count = 0;
|
alias_count = 0;
|
||||||
if_alias_prefixes[0] = NULL;
|
if_alias_prefixes[0] = NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -148,16 +151,29 @@ ZEND_FUNCTION(fastcommon_gethostaddrs)
|
||||||
if_alias_prefixes[0] = if_alias_prefix;
|
if_alias_prefixes[0] = if_alias_prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gethostaddrs(if_alias_prefixes, alias_count, ip_addresses, \
|
count = 0;
|
||||||
|
if (gethostaddrs(if_alias_prefixes, alias_count, ip_addresses,
|
||||||
FAST_MAX_LOCAL_IP_ADDRS, &count) != 0)
|
FAST_MAX_LOCAL_IP_ADDRS, &count) != 0)
|
||||||
{
|
{
|
||||||
RETURN_BOOL(false);
|
RETURN_BOOL(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uniq_count = 0;
|
||||||
|
for (k=0; k<count; k++) {
|
||||||
|
for (i=0; i<uniq_count; i++) {
|
||||||
|
if (strcmp(ip_addresses[k], uniq_ips[i]) == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == uniq_count) { //not found
|
||||||
|
uniq_ips[uniq_count++] = ip_addresses[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
array_init(return_value);
|
array_init(return_value);
|
||||||
for (k=0; k<count; k++)
|
for (k=0; k<uniq_count; k++) {
|
||||||
{
|
add_index_string(return_value, k, uniq_ips[k], 1);
|
||||||
add_index_string(return_value, k, ip_addresses[k], 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ PHP_RSHUTDOWN_FUNCTION(fastcommon);
|
||||||
PHP_MINFO_FUNCTION(fastcommon);
|
PHP_MINFO_FUNCTION(fastcommon);
|
||||||
|
|
||||||
ZEND_FUNCTION(fastcommon_version);
|
ZEND_FUNCTION(fastcommon_version);
|
||||||
|
ZEND_FUNCTION(fastcommon_gethostaddrs);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ rm -rf %{buildroot}
|
||||||
mkdir -p %{buildroot}/usr/lib64/php/modules
|
mkdir -p %{buildroot}/usr/lib64/php/modules
|
||||||
mkdir -p %{buildroot}/etc/php.d
|
mkdir -p %{buildroot}/etc/php.d
|
||||||
cp -f .libs/fastcommon.so %{buildroot}/usr/lib64/php/modules/
|
cp -f .libs/fastcommon.so %{buildroot}/usr/lib64/php/modules/
|
||||||
cp -f fastcommon.ini %{buildroot}/etc/php.d/fastcommon.ini.sample
|
cp -f fastcommon.ini %{buildroot}/etc/php.d/fastcommon.ini
|
||||||
|
|
||||||
%post
|
%post
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo 'version: ' . fastcommon_version() . "\n";
|
||||||
|
var_dump(fastcommon_gethostaddrs());
|
||||||
|
|
||||||
Loading…
Reference in New Issue