blob: 68eaca780181b398c277d65c4d1c9b25a0792a50 [file]
/* SPDX-License-Identifier: BSD-3-Clause */
#include "slirp.h"
static SlirpCb callbacks;
int main(void)
{
struct in_addr addr = { .s_addr = htonl(0x01010101) };
struct in6_addr addr6 = IN6ADDR_LOOPBACK_INIT;
const char *valid[] = { "example.org", "example.net", NULL };
const char *invalid[] = { "bad..domain", NULL };
SlirpConfig cfg = {
.version = SLIRP_CONFIG_VERSION_MAX,
.advertised_nameservers = &addr,
.advertised_nameservers_len = 1,
.advertised_nameservers6 = &addr6,
.advertised_nameservers6_len = 1,
};
Slirp *s = slirp_new(&cfg, &callbacks, NULL);
uint8_t *search;
size_t search_len;
g_assert_nonnull(s);
g_assert_true(s->advertised_nameservers != &addr);
g_assert_true(s->advertised_nameservers6 != &addr6);
g_assert_cmpmem(s->advertised_nameservers, sizeof(addr), &addr, sizeof(addr));
g_assert_cmpmem(s->advertised_nameservers6, sizeof(addr6), &addr6, sizeof(addr6));
g_assert_cmpint(slirp_set_advertised_nameservers(s, 1, NULL), ==, -1);
g_assert_cmpuint(s->advertised_nameservers_len, ==, 1);
g_assert_cmpint(slirp_set_advertised_nameservers(s, 1, s->advertised_nameservers), ==, 0);
g_assert_cmpint(slirp_set_advertised_nameservers6(s, 1, s->advertised_nameservers6), ==, 0);
slirp_set_vdomainname(s, "example.org");
slirp_set_vdomainname(s, slirp_get_vdomainname(s));
g_assert_cmpstr(slirp_get_vdomainname(s), ==, "example.org");
g_assert_cmpint(slirp_set_vdnssearch(s, valid), ==, 0);
search = s->vdnssearch;
search_len = s->vdnssearch_len;
g_assert_cmpint(slirp_set_vdnssearch(s, invalid), <, 0);
g_assert_true(search == s->vdnssearch);
g_assert_cmpuint(s->vdnssearch_len, ==, search_len);
g_assert_cmpint(slirp_set_vdnssearch(s, valid), ==, 0);
g_assert_cmpint(slirp_set_vdnssearch(s, NULL), ==, 0);
g_assert_null(s->vdnssearch);
g_assert_cmpuint(s->vdnssearch_len, ==, 0);
g_assert_cmpint(slirp_set_advertised_nameservers(s, 0, NULL), ==, 0);
g_assert_cmpint(slirp_set_advertised_nameservers6(s, 0, NULL), ==, 0);
g_assert_null(s->advertised_nameservers);
g_assert_null(s->advertised_nameservers6);
slirp_set_vnameserver(s, addr);
slirp_set_vnameserver6(s, addr6);
slirp_set_disable_dns(s, true);
g_assert_cmpmem(&s->vnameserver_addr, sizeof(addr), &addr, sizeof(addr));
g_assert_cmpmem(&s->vnameserver_addr6, sizeof(addr6), &addr6, sizeof(addr6));
g_assert_true(s->disable_dns);
g_assert_cmpuint(slirp_get_vnetwork(s).s_addr, ==, cfg.vnetwork.s_addr);
slirp_cleanup(s);
cfg.version = 6;
s = slirp_new(&cfg, &callbacks, NULL);
g_assert_cmpuint(s->advertised_nameservers_len, ==, 0);
g_assert_cmpuint(s->advertised_nameservers6_len, ==, 0);
slirp_cleanup(s);
return 0;
}