diff --git a/HISTORY b/HISTORY index 4e2c206..865427d 100644 --- a/HISTORY +++ b/HISTORY @@ -3,6 +3,7 @@ Version 1.22 2015-10-09 * export php function: fastcommon_get_first_local_ip * add function is_private_ip * add function get_next_local_ip + * export php function: fastcommon_get_next_local_ip Version 1.21 2015-09-14 * ini_file_reader support annotation function diff --git a/php-fastcommon/fastcommon.c b/php-fastcommon/fastcommon.c index 621c076..e932a02 100644 --- a/php-fastcommon/fastcommon.c +++ b/php-fastcommon/fastcommon.c @@ -43,6 +43,7 @@ const zend_fcall_info empty_fcall_info = { 0, NULL, NULL, NULL, NULL, 0, NULL, N ZEND_FE(fastcommon_simple_hash, NULL) ZEND_FE(fastcommon_get_line_distance_km, NULL) ZEND_FE(fastcommon_get_first_local_ip, NULL) + ZEND_FE(fastcommon_get_next_local_ip, NULL) {NULL, NULL, NULL} /* Must be the last line */ }; @@ -294,3 +295,43 @@ ZEND_FUNCTION(fastcommon_get_first_local_ip) RETURN_STRING(get_first_local_ip(), 1); } +/* +string fastcommon_get_next_local_ip(string previous_ip) +return the next local ip, false for fail +*/ +ZEND_FUNCTION(fastcommon_get_next_local_ip) +{ + int argc; + int previous_len; + char *previous_ip; + const char *next_ip; + + argc = ZEND_NUM_ARGS(); + if (argc != 1) { + logError("file: "__FILE__", line: %d, " + "fastcommon_get_next_local_ip parameters count: %d is invalid", + __LINE__, argc); + RETURN_BOOL(false); + } + + if (zend_parse_parameters(argc TSRMLS_CC, "s", &previous_ip, + &previous_len) == FAILURE) + { + logError("file: "__FILE__", line: %d, " + "zend_parse_parameters fail!", __LINE__); + RETURN_BOOL(false); + } + + if (previous_len == 0) + { + previous_ip = NULL; + } + next_ip = get_next_local_ip(previous_ip); + if (next_ip == NULL) + { + RETURN_BOOL(false); + } + + RETURN_STRING(next_ip , 1); +} + diff --git a/php-fastcommon/fastcommon.h b/php-fastcommon/fastcommon.h index 08ad44b..bb7f6ae 100644 --- a/php-fastcommon/fastcommon.h +++ b/php-fastcommon/fastcommon.h @@ -23,6 +23,7 @@ ZEND_FUNCTION(fastcommon_time33_hash); ZEND_FUNCTION(fastcommon_simple_hash); ZEND_FUNCTION(fastcommon_get_line_distance_km); ZEND_FUNCTION(fastcommon_get_first_local_ip); +ZEND_FUNCTION(fastcommon_get_next_local_ip); #ifdef __cplusplus } diff --git a/php-fastcommon/php-fastcommon.spec.in b/php-fastcommon/php-fastcommon.spec.in index d8340cb..3469f52 100644 --- a/php-fastcommon/php-fastcommon.spec.in +++ b/php-fastcommon/php-fastcommon.spec.in @@ -1,5 +1,5 @@ Name: php-fastcommon -Version: 1.0.2 +Version: 1.0.3 Release: 1%{?dist} Summary: The php extension for libfastcommon License: GPL @@ -9,8 +9,8 @@ Source: http://perso.orange.fr/sebastien.godard/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: libfastcommon >= 1.0.21 -Requires: libfastcommon >= 1.0.21 +BuildRequires: libfastcommon-devel >= 1.0.22 +Requires: libfastcommon >= 1.0.22 %description This package provides the php extension for libfastcommon diff --git a/php-fastcommon/test.php b/php-fastcommon/test.php index b27e8a9..ec8f023 100644 --- a/php-fastcommon/test.php +++ b/php-fastcommon/test.php @@ -7,3 +7,10 @@ $s = 'this is a test.'; echo 'simple_hash: ' . fastcommon_simple_hash($s) . "\n"; echo 'time33_hash: ' . fastcommon_time33_hash($s) . "\n"; +echo 'first local ip: ' . fastcommon_get_first_local_ip() . "\n"; + +$next_ip = null; +while (($next_ip=fastcommon_get_next_local_ip($next_ip))) +{ + echo "next local ip: $next_ip\n"; +}