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)