summaryrefslogtreecommitdiffstats
path: root/src/network/networkd-dhcp4.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2024-09-15 19:42:05 +0200
committerDaan De Meyer <daan.j.demeyer@gmail.com>2024-09-17 21:03:59 +0200
commitfc956a397300e71129618c7461ce4af88275302d (patch)
tree8d9258fc94cbec5e412d650e18651fe08d7810c2 /src/network/networkd-dhcp4.c
parentMerge pull request #34457 from poettering/uki-with-many-testcase (diff)
downloadsystemd-fc956a397300e71129618c7461ce4af88275302d.tar.xz
systemd-fc956a397300e71129618c7461ce4af88275302d.zip
network/dhcp4: use device_get_property_bool() at link_needs_dhcp_broadcast()
No functional change, just refactoring.
Diffstat (limited to '')
-rw-r--r--src/network/networkd-dhcp4.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
index 0a784553d0..ecda55e5be 100644
--- a/src/network/networkd-dhcp4.c
+++ b/src/network/networkd-dhcp4.c
@@ -6,6 +6,7 @@
#include <linux/if_arp.h>
#include "alloc-util.h"
+#include "device-private.h"
#include "dhcp-client-internal.h"
#include "hostname-setup.h"
#include "hostname-util.h"
@@ -1428,27 +1429,33 @@ static int dhcp4_set_request_address(Link *link) {
}
static bool link_needs_dhcp_broadcast(Link *link) {
- const char *val;
int r;
assert(link);
assert(link->network);
/* Return the setting in DHCP[4].RequestBroadcast if specified. Otherwise return the device property
- * ID_NET_DHCP_BROADCAST setting, which may be set for interfaces requiring that the DHCPOFFER message
- * is being broadcast because they can't handle unicast messages while not fully configured.
- * If neither is set or a failure occurs, return false, which is the default for this flag.
- */
+ * ID_NET_DHCP_BROADCAST setting, which may be set for interfaces requiring that the DHCPOFFER
+ * message is being broadcast because they can't handle unicast messages while not fully configured.
+ * If neither is set or a failure occurs, return false, which is the default for this flag. */
+
r = link->network->dhcp_broadcast;
- if (r < 0 && link->dev && sd_device_get_property_value(link->dev, "ID_NET_DHCP_BROADCAST", &val) >= 0) {
- r = parse_boolean(val);
- if (r < 0)
- log_link_debug_errno(link, r, "DHCPv4 CLIENT: Failed to parse ID_NET_DHCP_BROADCAST, ignoring: %m");
- else
- log_link_debug(link, "DHCPv4 CLIENT: Detected ID_NET_DHCP_BROADCAST='%d'.", r);
+ if (r >= 0)
+ return r;
+
+ if (!link->dev)
+ return false;
+ r = device_get_property_bool(link->dev, "ID_NET_DHCP_BROADCAST");
+ if (r < 0) {
+ if (r != -ENOENT)
+ log_link_warning_errno(link, r, "DHCPv4 CLIENT: Failed to get or parse ID_NET_DHCP_BROADCAST, ignoring: %m");
+
+ return false;
}
- return r == true;
+
+ log_link_debug(link, "DHCPv4 CLIENT: Detected ID_NET_DHCP_BROADCAST='%d'.", r);
+ return r;
}
static bool link_dhcp4_ipv6_only_mode(Link *link) {