]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #17474 from yuwata/network-drop-link-deserialization-logic
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 27 Nov 2020 00:08:01 +0000 (09:08 +0900)
committerGitHub <noreply@github.com>
Fri, 27 Nov 2020 00:08:01 +0000 (09:08 +0900)
network: drop link deserialization logic

12 files changed:
1  2 
src/network/networkd-address.c
src/network/networkd-address.h
src/network/networkd-dhcp4.c
src/network/networkd-dhcp4.h
src/network/networkd-ipv4ll.c
src/network/networkd-ipv4ll.h
src/network/networkd-link.c
src/network/networkd-route.c
src/network/networkd-route.h
src/network/networkd-sysctl.c
src/shared/sysctl-util.c
test/test-network/systemd-networkd-tests.py

Simple merge
Simple merge
index 3983b335277ab1dffc4e9876b5b306b4ffd6498d,c20e2e2b0a1f6ee9f67932a98c9235f910b648d5..a521822a50ead4c5584f375c3e16f58a8b618859
@@@ -1268,27 -1217,17 +1217,27 @@@ static int dhcp4_set_client_identifier(
                                                      duid->raw_data_len > 0 ? duid->raw_data : NULL,
                                                      duid->raw_data_len);
                  if (r < 0)
-                         return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set DUID: %m");
+                         return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to set DUID: %m");
                  break;
          }
 -        case DHCP_CLIENT_ID_MAC:
 +        case DHCP_CLIENT_ID_MAC: {
 +                const uint8_t *hw_addr = link->hw_addr.addr.bytes;
 +                size_t hw_addr_len = link->hw_addr.length;
 +
 +                if (link->iftype == ARPHRD_INFINIBAND && hw_addr_len == INFINIBAND_ALEN) {
 +                        /* set_client_id expects only last 8 bytes of an IB address */
 +                        hw_addr += INFINIBAND_ALEN - 8;
 +                        hw_addr_len -= INFINIBAND_ALEN - 8;
 +                }
 +
                  r = sd_dhcp_client_set_client_id(link->dhcp_client,
 -                                                 ARPHRD_ETHER,
 -                                                 (const uint8_t *) &link->mac,
 -                                                 sizeof(link->mac));
 +                                                 link->iftype,
 +                                                 hw_addr,
 +                                                 hw_addr_len);
                  if (r < 0)
-                         return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set client ID: %m");
+                         return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to set client ID: %m");
                  break;
 +        }
          default:
                  assert_not_reached("Unknown client identifier type.");
          }
@@@ -1326,20 -1269,21 +1279,22 @@@ int dhcp4_configure(Link *link) 
          if (!link_dhcp4_enabled(link))
                  return 0;
  
-         r = dhcp4_set_promote_secondaries(link);
-         if (r < 0)
-                 return r;
+         if (!link->dhcp_client) {
+                 r = sd_dhcp_client_new(&link->dhcp_client, link->network->dhcp_anonymize);
+                 if (r < 0)
+                         return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to allocate DHCP4 client: %m");
  
-         r = dhcp4_init(link);
-         if (r < 0)
-                 return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to initialize DHCP4 client: %m");
+                 r = sd_dhcp_client_attach_event(link->dhcp_client, link->manager->event, 0);
+                 if (r < 0)
+                         return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to attach event to DHCP4 client: %m");
+         }
  
          r = sd_dhcp_client_set_mac(link->dhcp_client,
 -                                   (const uint8_t *) &link->mac,
 -                                   sizeof (link->mac), ARPHRD_ETHER);
 +                                   link->hw_addr.addr.bytes,
 +                                   link->bcast_addr.length > 0 ? link->bcast_addr.addr.bytes : NULL,
 +                                   link->hw_addr.length, link->iftype);
          if (r < 0)
-                 return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set MAC address: %m");
+                 return log_link_warning_errno(link, r, "DHCP4 CLIENT: Failed to set MAC address: %m");
  
          r = sd_dhcp_client_set_ifindex(link->dhcp_client, link->ifindex);
          if (r < 0)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge