]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkctl: display DHCPv4 server address 16213/head
authorSusant Sahani <ssahani@vmware.com>
Thu, 18 Jun 2020 15:01:21 +0000 (00:01 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 23 Jun 2020 10:13:06 +0000 (19:13 +0900)
src/network/networkctl.c

index 6d2bb110b4dda784cef258e062682ae826b23a00..8049912f437c9e75c59ab93f589f2859c5ccf075 100644 (file)
@@ -1,5 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 
+#include <arpa/inet.h>
 #include <getopt.h>
 #include <linux/if_addrlabel.h>
 #include <net/if.h>
@@ -958,12 +959,18 @@ static int dump_addresses(
                         return r;
 
                 if (local[i].family == AF_INET && in4_addr_equal(&local[i].address.in, &dhcp4_address)) {
-                        _cleanup_free_ char *p = NULL;
+                        struct in_addr server_address;
+                        char *p, s[INET_ADDRSTRLEN];
 
-                        p = pretty;
-                        pretty = strjoin(pretty , " (DHCP4)");
-                        if (!pretty)
+                        r = sd_dhcp_lease_get_server_identifier(lease, &server_address);
+                        if (r >= 0 && inet_ntop(AF_INET, &server_address, s, sizeof(s)))
+                                p = strjoin(pretty, " (DHCP4 via ", s, ")");
+                        else
+                                p = strjoin(pretty, " (DHCP4)");
+                        if (!p)
                                 return log_oom();
+
+                        free_and_replace(pretty, p);
                 }
 
                 r = strv_extendf(&buf, "%s%s%s",