static void tf_geoip_maxminddb_call(LogTemplateFunction *self, gpointer s, const LogTemplateInvokeArgs *args, GString *result) { GString **argv = (GString **) args->bufs->pdata; TFMaxMindDBState *state = (TFMaxMindDBState *) s; int _gai_error, mmdb_error; MMDB_lookup_result_s mmdb_result = MMDB_lookup_string(state->database, argv[0]->str, &_gai_error, &mmdb_error); if (!mmdb_result.found_entry) { mmdb_problem_to_error(_gai_error, mmdb_error, "tflookup"); return; } MMDB_entry_data_s entry_data; mmdb_error = MMDB_aget_value(&mmdb_result.entry, &entry_data, (const char *const* const)state->entry_path); if (mmdb_error != MMDB_SUCCESS) { mmdb_problem_to_error(0, mmdb_error, "tfget_value"); return; } if (entry_data.has_data) append_mmdb_entry_data_to_gstring(result, &entry_data); return; }
static gboolean _mmdb_load_entry_data_list(GeoIPParser *self, const gchar *input, MMDB_entry_data_list_s **entry_data_list) { int _gai_error, mmdb_error; MMDB_lookup_result_s result = MMDB_lookup_string(self->database, input, &_gai_error, &mmdb_error); if (!result.found_entry) { mmdb_problem_to_error(_gai_error, mmdb_error, "lookup"); return FALSE; } mmdb_error = MMDB_get_entry_data_list(&result.entry, entry_data_list); if (MMDB_SUCCESS != mmdb_error) { msg_debug("GeoIP2: MMDB_get_entry_data_list", evt_tag_str("error", MMDB_strerror(mmdb_error))); return FALSE; } return TRUE; }