networkctl: always use DHCP message serialized in JSON desciption

Now the interface description by networkd always contains DHCP message
(of course when there is a bound DHCP lease). Let's use it.
This commit is contained in:
Yu Watanabe
2026-05-17 01:31:42 +09:00
parent c5bcbb4c85
commit 7f2c6185fe
4 changed files with 3 additions and 27 deletions
-5
View File
@@ -1,6 +1,5 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-dhcp-lease.h"
#include "sd-hwdb.h"
#include "sd-netlink.h"
@@ -212,7 +211,6 @@ int dump_gateways(sd_netlink *rtnl, sd_hwdb *hwdb, Table *table, int ifindex) {
int dump_addresses(
sd_netlink *rtnl,
sd_dhcp_message *message,
sd_dhcp_lease *lease,
Table *table,
int ifindex) {
@@ -233,9 +231,6 @@ int dump_addresses(
if (dhcp_message_get_option_address(message, SD_DHCP_OPTION_SERVER_IDENTIFIER, &server_address) < 0)
/* The message should be BOOTP, let's fallback to the siaddr field. */
server_address.s_addr = message->header.siaddr;
} else if (lease) {
(void) sd_dhcp_lease_get_address(lease, &dhcp4_address);
(void) sd_dhcp_lease_get_server_identifier(lease, &server_address);
}
FOREACH_ARRAY(local, local_addrs, n) {
+1 -1
View File
@@ -8,4 +8,4 @@
int dump_list(Table *table, const char *key, char * const *l);
int ieee_oui(sd_hwdb *hwdb, const struct ether_addr *mac, char **ret);
int dump_gateways(sd_netlink *rtnl, sd_hwdb *hwdb, Table *table, int ifindex);
int dump_addresses(sd_netlink *rtnl, sd_dhcp_message *message, sd_dhcp_lease *lease, Table *table, int ifindex);
int dump_addresses(sd_netlink *rtnl, sd_dhcp_message *message, Table *table, int ifindex);
+1 -20
View File
@@ -2,7 +2,6 @@
#include "sd-device.h"
#include "sd-dhcp-client-id.h"
#include "sd-dhcp-lease.h"
#include "sd-dhcp-protocol.h"
#include "sd-hwdb.h"
#include "sd-netlink.h"
@@ -24,7 +23,6 @@
#include "json-util.h"
#include "macvlan-util.h"
#include "netif-util.h"
#include "network-internal.h"
#include "networkctl.h"
#include "networkctl-description.h"
#include "networkctl-dump-util.h"
@@ -242,7 +240,6 @@ static int link_status_one(
const char *driver = NULL, *path = NULL, *vendor = NULL, *model = NULL, *link = NULL,
*on_color_operational, *off_color_operational, *on_color_setup, *off_color_setup, *on_color_online;
_cleanup_free_ int *carrier_bound_to = NULL, *carrier_bound_by = NULL;
_cleanup_(sd_dhcp_lease_unrefp) sd_dhcp_lease *lease = NULL;
_cleanup_(table_unrefp) Table *table = NULL;
int r;
@@ -294,11 +291,6 @@ static int link_status_one(
if (r == -ENOMEM)
return log_oom();
char lease_file[STRLEN("/run/systemd/netif/leases/") + DECIMAL_STR_MAX(int)];
xsprintf(lease_file, "/run/systemd/netif/leases/%i", info->ifindex);
(void) dhcp_lease_load(&lease, lease_file);
r = format_config_files(&network_dropins, network);
if (r < 0)
return r;
@@ -780,7 +772,7 @@ static int link_status_one(
return r;
}
r = dump_addresses(rtnl, info->dhcp_message, lease, table, info->ifindex);
r = dump_addresses(rtnl, info->dhcp_message, table, info->ifindex);
if (r < 0)
return r;
@@ -849,17 +841,6 @@ static int link_status_one(
if (r < 0)
return table_log_add_error(r);
}
} else if (lease) {
const char *tz;
r = sd_dhcp_lease_get_timezone(lease, &tz);
if (r >= 0) {
r = table_add_many(table,
TABLE_FIELD, "Time Zone",
TABLE_STRING, tz);
if (r < 0)
return table_log_add_error(r);
}
}
if (sd_dhcp_client_id_is_set(&info->dhcp_client_id)) {
+1 -1
View File
@@ -94,7 +94,7 @@ int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) {
if (r < 0)
return table_log_add_error(r);
r = dump_addresses(rtnl, /* message= */ NULL, /* lease= */ NULL, table, /* ifindex= */ 0);
r = dump_addresses(rtnl, /* message= */ NULL, table, /* ifindex= */ 0);
if (r < 0)
return r;