]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: tests for link_find_address()
authorJames Coglan <james@neighbourhood.ie>
Tue, 25 Jun 2024 14:36:37 +0000 (15:36 +0100)
committerJames Coglan <james@neighbourhood.ie>
Mon, 22 Jul 2024 12:18:44 +0000 (13:18 +0100)
src/resolve/test-resolved-link.c

index 56094ad0093d59b606f13ea2a49d42eaa067b2be..981c846d117368da3dccbf236d3ae332c1f68c10 100644 (file)
@@ -97,4 +97,37 @@ TEST(link_relevant) {
         link_address_free(address);
 }
 
+/* ================================================================
+ * link_find_address()
+ * ================================================================ */
+
+TEST(link_find_address) {
+        Manager manager = {};
+        LinkAddress *v4addr = NULL, *v6addr = NULL, *ret_addr = NULL;
+        _cleanup_(link_freep) Link *link = NULL;
+
+        union in_addr_union ipv4 = { .in.s_addr = htobe32(0xc0a84301) };
+        union in_addr_union ipv6 = { .in6.s6_addr = { 0xf2, 0x34, 0x32, 0x2e, 0xb8, 0x25, 0x38, 0x35, 0x2f, 0xd7, 0xdb, 0x7b, 0x28, 0x7e, 0x60, 0xbb } };
+
+        ASSERT_OK(link_new(&manager, &link, 1));
+        ASSERT_NOT_NULL(link);
+
+        ASSERT_OK(link_address_new(link, &v4addr, AF_INET, &ipv4, &ipv4));
+        ASSERT_NOT_NULL(v4addr);
+        ASSERT_OK(link_address_new(link, &v6addr, AF_INET6, &ipv6, &ipv6));
+        ASSERT_NOT_NULL(v6addr);
+
+        ret_addr = link_find_address(link, AF_INET, &ipv4);
+        ASSERT_TRUE(ret_addr == v4addr);
+
+        ret_addr = link_find_address(link, AF_INET6, &ipv6);
+        ASSERT_TRUE(ret_addr == v6addr);
+
+        ret_addr = link_find_address(link, AF_INET6, &ipv4);
+        ASSERT_NULL(ret_addr);
+
+        link_address_free(v4addr);
+        link_address_free(v6addr);
+}
+
 DEFINE_TEST_MAIN(LOG_DEBUG)