From 77de62f96c16592844374769c84932dc7c75eef2 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 14 Feb 2024 13:27:00 +0900 Subject: [PATCH] network/dhcp6: use address_can_update() at one more place In address_can_update(), only prefix length is checked for IPv6 addresses. So, this should not change any behavior. --- src/network/networkd-address.c | 2 +- src/network/networkd-address.h | 2 ++ src/network/networkd-dhcp6.c | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index d1087c5f12..2aa8c88bb2 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -516,7 +516,7 @@ static int address_compare_func(const Address *a1, const Address *a2) { } } -static bool address_can_update(const Address *existing, const Address *requesting) { +bool address_can_update(const Address *existing, const Address *requesting) { assert(existing); assert(requesting); diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index cc2429094e..350d2f6b38 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -85,6 +85,8 @@ void link_get_address_states( extern const struct hash_ops address_hash_ops; +bool address_can_update(const Address *existing, const Address *requesting); + Address* address_ref(Address *address); Address* address_unref(Address *address); diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index eb1420be5c..de4588c93e 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -158,8 +158,7 @@ static int verify_dhcp6_address(Link *link, const Address *address) { } else log_level = LOG_DEBUG; - if (address->prefixlen == existing->prefixlen) - /* Currently, only conflict in prefix length is reported. */ + if (address_can_update(existing, address)) goto simple_log; if (existing->source == NETWORK_CONFIG_SOURCE_NDISC)