static void test_rr_lookup(sd_bus *bus, const char *name, uint16_t type, const char *result) { _cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL, *reply = NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_free_ char *m = NULL; int r; /* If the name starts with a dot, we prefix one to three random labels */ if (startswith(name, ".")) { prefix_random(name + 1, &m); name = m; } assert_se(sd_bus_message_new_method_call( bus, &req, "org.freedesktop.resolve1", "/org/freedesktop/resolve1", "org.freedesktop.resolve1.Manager", "ResolveRecord") >= 0); assert_se(sd_bus_message_append(req, "isqqt", 0, name, DNS_CLASS_IN, type, UINT64_C(0)) >= 0); r = sd_bus_call(bus, req, SD_RESOLVED_QUERY_TIMEOUT_USEC, &error, &reply); if (r < 0) { assert_se(result); assert_se(sd_bus_error_has_name(&error, result)); log_info("[OK] %s/%s resulted in <%s>.", name, dns_type_to_string(type), error.name); } else { assert_se(!result); log_info("[OK] %s/%s succeeded.", name, dns_type_to_string(type)); } }
void prefix_random_t(void) { int i; struct prefix p; sput_fail_unless(prefix_random(&p_allones_67, &p, 60), "Too short plen for random prefix"); prefix_random(&p_allones_67_can, &p, 67); sput_fail_if(prefix_cmp(&p_allones_67_can, &p), "Only one possible random prefix"); bool success = true; for(i = 0; i < 20; i++) { prefix_random(&p_allones_67, &p, 70); if(!prefix_contains(&p_allones_67, &p)) { success = false; break; } } sput_fail_unless(success, "Random prefix is in src prefix"); }
static void test_hostname_lookup(sd_bus *bus, const char *name, int family, const char *result) { _cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL, *reply = NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_free_ char *m = NULL; const char *af; int r; af = family == AF_UNSPEC ? "AF_UNSPEC" : af_to_name(family); /* If the name starts with a dot, we prefix one to three random labels */ if (startswith(name, ".")) { prefix_random(name + 1, &m); name = m; } assert_se(sd_bus_message_new_method_call( bus, &req, "org.freedesktop.resolve1", "/org/freedesktop/resolve1", "org.freedesktop.resolve1.Manager", "ResolveHostname") >= 0); assert_se(sd_bus_message_append(req, "isit", 0, name, family, UINT64_C(0)) >= 0); r = sd_bus_call(bus, req, SD_RESOLVED_QUERY_TIMEOUT_USEC, &error, &reply); if (r < 0) { assert_se(result); assert_se(sd_bus_error_has_name(&error, result)); log_info("[OK] %s/%s resulted in <%s>.", name, af, error.name); } else { assert_se(!result); log_info("[OK] %s/%s succeeded.", name, af); } }