diff --git a/changes/feature23237 b/changes/feature23237 new file mode 100644 index 0000000000..261577261c --- /dev/null +++ b/changes/feature23237 @@ -0,0 +1,4 @@ + o Minor features (controller): + - Added new GETINFO targets ip-to-country/{ipv4,ipv6}-available, so + controllers can tell whether the geoip databases are loaded. + Closes ticket 23237. diff --git a/src/or/geoip.c b/src/or/geoip.c index 65d00b8659..3944b2cf69 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -1665,6 +1665,15 @@ getinfo_helper_geoip(control_connection_t *control_conn, sa_family_t family; tor_addr_t addr; question += strlen("ip-to-country/"); + + if (!strcmp(question, "ipv4-available") || + !strcmp(question, "ipv6-available")) { + family = !strcmp(question, "ipv4-available") ? AF_INET : AF_INET6; + const int available = geoip_is_loaded(family); + tor_asprintf(answer, "%d", !! available); + return 0; + } + family = tor_addr_parse(&addr, question); if (family != AF_INET && family != AF_INET6) { *errmsg = "Invalid address family";