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: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=54e98604f72c9bacaf8565f6d986ee11fd9f01a1;p=pdns 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 b26f2249e..799c6d442 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; }