From 94dd2bab7c916ab0811abe74ab60ca2620e82fe1 Mon Sep 17 00:00:00 2001 From: James Coglan Date: Tue, 25 Jun 2024 15:14:08 +0100 Subject: [PATCH] resolved: tests for link_relevant() --- src/resolve/test-resolved-link.c | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/resolve/test-resolved-link.c b/src/resolve/test-resolved-link.c index dc748410e9..56094ad009 100644 --- a/src/resolve/test-resolved-link.c +++ b/src/resolve/test-resolved-link.c @@ -1,5 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include +#include + #include "netlink-internal.h" #include "resolved-link.h" #include "resolved-manager.h" @@ -42,4 +45,56 @@ TEST(link_process_rtnl) { ASSERT_OK(link_process_rtnl(link, msg)); } +/* ================================================================ + * link_relevant() + * ================================================================ */ + +TEST(link_relevant) { + Manager manager = {}; + LinkAddress *address = NULL; + _cleanup_(link_freep) Link *link = NULL; + + ASSERT_OK(link_new(&manager, &link, 1)); + ASSERT_NOT_NULL(link); + + link->flags = IFF_LOOPBACK; + ASSERT_FALSE(link_relevant(link, AF_INET, true)); + ASSERT_FALSE(link_relevant(link, AF_INET, false)); + + link->flags = IFF_UP; + ASSERT_FALSE(link_relevant(link, AF_INET, true)); + ASSERT_FALSE(link_relevant(link, AF_INET, false)); + + link->flags = IFF_UP | IFF_LOWER_UP; + ASSERT_FALSE(link_relevant(link, AF_INET, true)); + ASSERT_FALSE(link_relevant(link, AF_INET, false)); + + link->flags = IFF_UP | IFF_LOWER_UP | IFF_MULTICAST; + link->operstate = IF_OPER_UP; + + ASSERT_FALSE(link_relevant(link, AF_INET, true)); + ASSERT_FALSE(link_relevant(link, AF_INET, false)); + + union in_addr_union ip = { .in.s_addr = htobe32(0xc0a84301) }; + union in_addr_union bcast = { .in.s_addr = htobe32(0xc0a843ff) }; + + ASSERT_OK(link_address_new(link, &address, AF_INET, &ip, &bcast)); + ASSERT_NOT_NULL(address); + + ASSERT_TRUE(link_relevant(link, AF_INET, true)); + ASSERT_TRUE(link_relevant(link, AF_INET, false)); + + link->flags = IFF_UP | IFF_LOWER_UP; + ASSERT_FALSE(link_relevant(link, AF_INET, true)); + ASSERT_TRUE(link_relevant(link, AF_INET, false)); + + link->is_managed = true; + ASSERT_FALSE(link_relevant(link, AF_INET, false)); + + link->networkd_operstate = LINK_OPERSTATE_DEGRADED_CARRIER; + ASSERT_TRUE(link_relevant(link, AF_INET, false)); + + link_address_free(address); +} + DEFINE_TEST_MAIN(LOG_DEBUG) -- 2.25.1