]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce dhcp4_update_mac()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 2 Oct 2020 11:29:57 +0000 (20:29 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 6 Oct 2020 17:50:50 +0000 (02:50 +0900)
src/network/networkd-dhcp4.c
src/network/networkd-dhcp4.h
src/network/networkd-link.c

index 91abe888cb3b0a9aa31d049536e94d58c2f5b4dd..c8f4f4bf61560056821131088a7f31cb355d3698 100644 (file)
@@ -1182,7 +1182,7 @@ int dhcp4_set_promote_secondaries(Link *link) {
         return 0;
 }
 
-int dhcp4_set_client_identifier(Link *link) {
+static int dhcp4_set_client_identifier(Link *link) {
         int r;
 
         assert(link);
@@ -1431,6 +1431,25 @@ int dhcp4_configure(Link *link) {
         return dhcp4_set_client_identifier(link);
 }
 
+int dhcp4_update_mac(Link *link) {
+        int r;
+
+        assert(link);
+
+        if (!link->dhcp_client)
+                return 0;
+
+        r = sd_dhcp_client_set_mac(link->dhcp_client, (const uint8_t *) &link->mac, sizeof (link->mac), ARPHRD_ETHER);
+        if (r < 0)
+                return r;
+
+        r = dhcp4_set_client_identifier(link);
+        if (r < 0)
+                return r;
+
+        return 0;
+}
+
 int link_deserialize_dhcp4(Link *link, const char *dhcp4_address) {
         union in_addr_union address;
         int r;
index 5fe1cb323cbabea670bcfb810563bc9a12638b96..ee3b4f1288ae1291fa3ab4b4c3f1814c87644931 100644 (file)
@@ -18,7 +18,7 @@ typedef enum DHCPClientIdentifier {
 } DHCPClientIdentifier;
 
 int dhcp4_configure(Link *link);
-int dhcp4_set_client_identifier(Link *link);
+int dhcp4_update_mac(Link *link);
 int dhcp4_set_promote_secondaries(Link *link);
 
 int link_deserialize_dhcp4(Link *link, const char *dhcp4_address);
index 5682a1447b63b7569ae48928adf3309b103d4387..59a0166cab6b5c353d2a960e4b900b548f51a589 100644 (file)
@@ -3039,18 +3039,9 @@ int link_update(Link *link, sd_netlink_message *m) {
                 if (r < 0)
                         return log_link_warning_errno(link, r, "Could not update MAC address in IPv4LL client: %m");
 
-                if (link->dhcp_client) {
-                        r = sd_dhcp_client_set_mac(link->dhcp_client,
-                                                   (const uint8_t *) &link->mac,
-                                                   sizeof (link->mac),
-                                                   ARPHRD_ETHER);
-                        if (r < 0)
-                                return log_link_warning_errno(link, r, "Could not update MAC address in DHCP client: %m");
-
-                        r = dhcp4_set_client_identifier(link);
-                        if (r < 0)
-                                return log_link_warning_errno(link, r, "Could not set DHCP client identifier: %m");
-                }
+                r = dhcp4_update_mac(link);
+                if (r < 0)
+                        return log_link_warning_errno(link, r, "Could not update MAC address in DHCP client: %m");
 
                 if (link->dhcp6_client) {
                         const DUID* duid = link_get_duid(link);