diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/maxmind_db.h | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/maxmind_db.h')
-rw-r--r-- | epan/maxmind_db.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/epan/maxmind_db.h b/epan/maxmind_db.h new file mode 100644 index 00000000..ed488243 --- /dev/null +++ b/epan/maxmind_db.h @@ -0,0 +1,119 @@ +/** @file + * Maxmind database support + * + * Copyright 2018, Gerald Combs <gerald@wireshark.org> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef __MAXMIND_DB_H__ +#define __MAXMIND_DB_H__ + +#include <epan/prefs.h> +#include <wsutil/inet_ipv4.h> +#include <wsutil/inet_ipv6.h> +#include "ws_symbol_export.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct _mmdb_lookup_t { + gboolean found; + const char *country; + const char *country_iso; + const char *city; + guint32 as_number; + const char *as_org; + double latitude; + double longitude; + guint16 accuracy; /** Accuracy radius in kilometers. */ +} mmdb_lookup_t; + +/** + * Init / reset function called from prefs_reset + */ +WS_DLL_LOCAL void maxmind_db_pref_init(module_t *nameres); + +/** + * Cleanup function called from prefs_cleanup + */ +WS_DLL_LOCAL void maxmind_db_pref_cleanup(void); + +WS_DLL_LOCAL void maxmind_db_pref_apply(void); + +/** + * Look up an IPv4 address in a database + * + * @param addr IPv4 address to look up + * + * @return The database entry if found, else NULL. + */ +WS_DLL_PUBLIC WS_RETNONNULL const mmdb_lookup_t *maxmind_db_lookup_ipv4(const ws_in4_addr *addr); + +/** + * Look up an IPv6 address in a database + * + * @param addr IPv6 address to look up + * + * @return The database entry if found, else NULL. + */ +WS_DLL_PUBLIC WS_RETNONNULL const mmdb_lookup_t *maxmind_db_lookup_ipv6(const ws_in6_addr *addr); + +/** + * Get all configured paths + * + * @return String with all paths separated by a path separator + */ +WS_DLL_PUBLIC gchar *maxmind_db_get_paths(void); + +/** + * Process outstanding requests. + * + * @return True if any new addresses were resolved. + */ +WS_DLL_LOCAL gboolean maxmind_db_lookup_process(void); + +/** + * Checks whether the lookup result was successful and has valid coordinates. + */ +static inline gboolean maxmind_db_has_coords(const mmdb_lookup_t *result) +{ + return result && result->found && + result->longitude != DBL_MAX && result->latitude != DBL_MAX; +} + +/** + * Select whether lookups should be performed synchronously. + * Default is asynchronous lookups. + * + * @param synchronous Whether maxmind lookups should be synchronous. + * + * XXX - if we ever have per-session host name etc. information, we + * should probably have the "resolve synchronously or asynchronously" + * flag be per-session, set with an epan API. + */ +WS_DLL_PUBLIC void maxmind_db_set_synchrony(gboolean synchronous); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __MAXMIND_DB_H__ */ + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 4 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=4 tabstop=8 expandtab: + * :indentSize=4:tabSize=8:noTabs=true: + */ |