mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 16:57:16 +01:00
49 lines
1.5 KiB
C
49 lines
1.5 KiB
C
|
#include "maxminddb_test_helper.h"
|
||
|
|
||
|
void run_tests(int mode, const char *mode_desc)
|
||
|
{
|
||
|
const char *filename = "MaxMind-DB-test-ipv4-28.mmdb";
|
||
|
const char *path = test_database_path(filename);
|
||
|
MMDB_s *mmdb = open_ok(path, mode, mode_desc);
|
||
|
free((void *)path);
|
||
|
|
||
|
const char *ip = "::abcd";
|
||
|
int gai_error, mmdb_error;
|
||
|
MMDB_lookup_result_s UNUSED(result) =
|
||
|
MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error);
|
||
|
|
||
|
cmp_ok(
|
||
|
mmdb_error, "==", MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR,
|
||
|
"MMDB_lookup_string sets mmdb_error to MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR when we try to look up an IPv6 address in an IPv4-only database");
|
||
|
|
||
|
struct addrinfo hints = {
|
||
|
.ai_family = AF_INET6,
|
||
|
.ai_flags = AI_NUMERICHOST
|
||
|
};
|
||
|
|
||
|
struct addrinfo *addresses;
|
||
|
gai_error = getaddrinfo("2001:db8:85a3:0:0:8a2e:370:7334", NULL,
|
||
|
&hints, &addresses);
|
||
|
if (gai_error) {
|
||
|
BAIL_OUT("getaddrinfo failed: %s", gai_strerror(gai_error));
|
||
|
}
|
||
|
|
||
|
mmdb_error = 0;
|
||
|
MMDB_lookup_sockaddr(mmdb, addresses->ai_addr, &mmdb_error);
|
||
|
|
||
|
cmp_ok(
|
||
|
mmdb_error, "==", MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR,
|
||
|
"MMDB_lookup_sockaddr sets mmdb_error to MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR when we try to look up an IPv6 address in an IPv4-only database");
|
||
|
|
||
|
freeaddrinfo(addresses);
|
||
|
MMDB_close(mmdb);
|
||
|
free(mmdb);
|
||
|
}
|
||
|
|
||
|
int main(void)
|
||
|
{
|
||
|
plan(NO_PLAN);
|
||
|
for_all_modes(&run_tests);
|
||
|
done_testing();
|
||
|
}
|