From: Aki Tuomi Date: Fri, 21 Apr 2017 19:11:17 +0000 (+0300) Subject: geoipbackend: Support city databases in region lookup X-Git-Tag: rec-4.1.0-alpha1~146^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F5266%2Fhead;p=thirdparty%2Fpdns.git geoipbackend: Support city databases in region lookup City database contains region information as well. Fixes #5255 and #4122 --- diff --git a/modules/geoipbackend/geoipbackend.cc b/modules/geoipbackend/geoipbackend.cc index b26f2249e8..799c6d4423 100644 --- a/modules/geoipbackend/geoipbackend.cc +++ b/modules/geoipbackend/geoipbackend.cc @@ -576,6 +576,14 @@ bool GeoIPBackend::queryRegion(string &ret, GeoIPLookup* gl, const string &ip, c ret = valueOrEmpty(gir->region); return true; } + } else if (gi.first == GEOIP_CITY_EDITION_REV0 || + gi.first == GEOIP_CITY_EDITION_REV1) { + GeoIPRecord *gir = GeoIP_record_by_addr(gi.second.get(), ip.c_str()); + if (gir) { + ret = valueOrEmpty(gir->region); + gl->netmask = gir->netmask; + return true; + } } return false; } @@ -588,6 +596,14 @@ bool GeoIPBackend::queryRegionV6(string &ret, GeoIPLookup* gl, const string &ip, ret = valueOrEmpty(gir->region); return true; } + } else if (gi.first == GEOIP_CITY_EDITION_REV0_V6 || + gi.first == GEOIP_CITY_EDITION_REV1_V6) { + GeoIPRecord *gir = GeoIP_record_by_addr_v6(gi.second.get(), ip.c_str()); + if (gir) { + ret = valueOrEmpty(gir->region); + gl->netmask = gir->netmask; + return true; + } } return false; }