|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patch geoip-include-ipv6.patch for geoip Bug #59124Patch version 2012-06-15 11:37 UTC Return to Bug #59124 | Download this patchThis patch is obsolete Obsoleted by patches:
Developer: dominic.benson@thirdlight.com
diff -rupN geoip-1.0.8.orig/geoip.c geoip-1.0.8/geoip.c
--- geoip-1.0.8.orig/geoip.c 1970-01-01 10:13:08.000000000 +0100
+++ geoip-1.0.8/geoip.c 2012-06-15 11:49:23.913007687 +0100
@@ -42,8 +42,11 @@ zend_function_entry geoip_functions[] =
PHP_FE(geoip_database_info, NULL)
#define GEOIPDEF(php_func, c_func, db_type) \
PHP_FE(php_func, NULL)
+#define GEOIPMULTIDEF(php_func, c_func, db_type, c_func_v6, db_type_v6) \
+ PHP_FE(php_func, NULL)
#include "geoip.def"
#undef GEOIPDEF
+#undef GEOIPMULTIDEF
PHP_FE(geoip_continent_code_by_name, NULL)
PHP_FE(geoip_org_by_name, NULL)
PHP_FE(geoip_record_by_name, NULL)
@@ -119,6 +122,10 @@ PHP_MINIT_FUNCTION(geoip)
/* For database type constants */
REGISTER_LONG_CONSTANT("GEOIP_COUNTRY_EDITION", GEOIP_COUNTRY_EDITION, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("GEOIP_COUNTRY_EDITION_V4", GEOIP_COUNTRY_EDITION, CONST_CS | CONST_PERSISTENT);
+#if LIBGEOIP_VERSION >= 1004005
+ REGISTER_LONG_CONSTANT("GEOIP_COUNTRY_EDITION_V6", GEOIP_COUNTRY_EDITION_V6, CONST_CS | CONST_PERSISTENT);
+#endif
REGISTER_LONG_CONSTANT("GEOIP_REGION_EDITION_REV0", GEOIP_REGION_EDITION_REV0, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("GEOIP_CITY_EDITION_REV0", GEOIP_CITY_EDITION_REV0, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("GEOIP_ORG_EDITION", GEOIP_ORG_EDITION, CONST_CS | CONST_PERSISTENT);
@@ -313,10 +320,50 @@ PHP_FUNCTION(geoip_database_info)
RETURN_STRING((char*)return_code, 1); \
\
}
+
+#define GEOIPMULTIDEF(php_func, c_func, db_type, c_func_v6, db_type_v6) \
+ PHP_FUNCTION(php_func) \
+ { \
+ GeoIP * gi; \
+ char * hostname = NULL; \
+ const char * return_code; \
+ int arglen; \
+ \
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) { \
+ return; \
+ } \
+ \
+ if (GeoIP_db_avail(db_type)) { \
+ gi = GeoIP_open_type(db_type, GEOIP_STANDARD); \
+ } else { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Required database not available at %s.", GeoIPDBFileName[db_type]); \
+ return; \
+ } \
+ \
+ return_code = c_func(gi, hostname); \
+ GeoIP_delete(gi); \
+ if (return_code != NULL) { \
+ RETURN_STRING((char*)return_code, 1); \
+ } \
+ if (GeoIP_db_avail(db_type_v6)) { \
+ gi = GeoIP_open_type(db_type_v6, GEOIP_STANDARD); \
+ return_code = c_func_v6(gi, hostname); \
+ GeoIP_delete(gi); \
+ if (return_code != NULL) { \
+ RETURN_STRING((char*)return_code, 1); \
+ } \
+ } \
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Host %s not found", hostname); \
+ RETURN_FALSE; \
+ \
+ }
+
#include "geoip.def"
#undef GEOIPDEF
+#undef GEOIPMULTIDEF
/* }}} */
+
/* {{{ proto string geoip_continent_code_by_name( string hostname )
Returns the Continent name found in the GeoIP Database */
PHP_FUNCTION(geoip_continent_code_by_name)
@@ -339,6 +386,13 @@ PHP_FUNCTION(geoip_continent_code_by_nam
id = GeoIP_id_by_name(gi, hostname);
GeoIP_delete(gi);
+#if LIBGEOIP_VERSION >= 1004005
+ if (id == 0 && GeoIP_db_avail(GEOIP_COUNTRY_EDITION_V6)) {
+ gi = GeoIP_open_type(GEOIP_COUNTRY_EDITION_V6, GEOIP_STANDARD);
+ id = GeoIP_id_by_name_v6(gi, hostname);
+ GeoIP_delete(gi);
+ }
+#endif
if (id == 0) {
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Host %s not found", hostname);
RETURN_FALSE;
diff -rupN geoip-1.0.8.orig/geoip.def geoip-1.0.8/geoip.def
--- geoip-1.0.8.orig/geoip.def 1970-01-01 10:13:08.000000000 +0100
+++ geoip-1.0.8/geoip.def 2012-06-14 18:12:41.028882473 +0100
@@ -17,12 +17,20 @@
*/
/* GEOIPDEF(php_func, c_func, db_type) */
-GEOIPDEF(geoip_country_code_by_name, GeoIP_country_code_by_name, GEOIP_COUNTRY_EDITION)
-GEOIPDEF(geoip_country_code3_by_name, GeoIP_country_code3_by_name, GEOIP_COUNTRY_EDITION)
-GEOIPDEF(geoip_country_name_by_name, GeoIP_country_name_by_name, GEOIP_COUNTRY_EDITION)
+GEOIPDEF(geoip_country_code_by_name_v4, GeoIP_country_code_by_name, GEOIP_COUNTRY_EDITION)
+GEOIPDEF(geoip_country_code3_by_name_v4, GeoIP_country_code3_by_name, GEOIP_COUNTRY_EDITION)
+GEOIPDEF(geoip_country_name_by_name_v4, GeoIP_country_name_by_name, GEOIP_COUNTRY_EDITION)
-#if LIBGEOIP_VERSION >= 1004005 && FALSE
+#if LIBGEOIP_VERSION >= 1004005
GEOIPDEF(geoip_country_code_by_name_v6, GeoIP_country_code_by_name_v6, GEOIP_COUNTRY_EDITION_V6)
GEOIPDEF(geoip_country_code3_by_name_v6, GeoIP_country_code3_by_name_v6, GEOIP_COUNTRY_EDITION_V6)
GEOIPDEF(geoip_country_name_by_name_v6, GeoIP_country_name_by_name_v6, GEOIP_COUNTRY_EDITION_V6)
-#endif
\ No newline at end of file
+
+GEOIPMULTIDEF(geoip_country_code_by_name, GeoIP_country_code_by_name, GEOIP_COUNTRY_EDITION, GeoIP_country_code_by_name_v6, GEOIP_COUNTRY_EDITION_V6)
+GEOIPMULTIDEF(geoip_country_code3_by_name, GeoIP_country_code3_by_name, GEOIP_COUNTRY_EDITION, GeoIP_country_code3_by_name_v6, GEOIP_COUNTRY_EDITION_V6)
+GEOIPMULTIDEF(geoip_country_name_by_name, GeoIP_country_name_by_name, GEOIP_COUNTRY_EDITION, GeoIP_country_name_by_name_v6, GEOIP_COUNTRY_EDITION_V6)
+#else
+GEOIPDEF(geoip_country_code_by_name, GeoIP_country_code_by_name, GEOIP_COUNTRY_EDITION)
+GEOIPDEF(geoip_country_code3_by_name, GeoIP_country_code3_by_name, GEOIP_COUNTRY_EDITION)
+GEOIPDEF(geoip_country_name_by_name, GeoIP_country_name_by_name, GEOIP_COUNTRY_EDITION)
+#endif
diff -rupN geoip-1.0.8.orig/php_geoip.h geoip-1.0.8/php_geoip.h
--- geoip-1.0.8.orig/php_geoip.h 1970-01-01 10:13:08.000000000 +0100
+++ geoip-1.0.8/php_geoip.h 2012-06-14 19:23:12.629468140 +0100
@@ -49,8 +49,11 @@ PHP_MINFO_FUNCTION(geoip);
PHP_FUNCTION(geoip_database_info);
#define GEOIPDEF(php_func, c_func, db_type) \
PHP_FUNCTION(php_func);
+#define GEOIPMULTIDEF(php_func, c_func, db_type, c_func_v6, db_type_v6) \
+PHP_FUNCTION(php_func);
#include "geoip.def"
#undef GEOIPDEF
+#undef GEOIPMULTIDEF
PHP_FUNCTION(geoip_continent_code_by_name);
PHP_FUNCTION(geoip_org_by_name);
PHP_FUNCTION(geoip_record_by_name);
|
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Dec 06 08:00:01 2025 UTC |