mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 04:50:30 +01:00
dhcp: abort DHCP on devices without MAC address early
Internal DHCPv4 client requires a valid MAC address for functioning.
Just always require a MAC address to start DHCP, both v4 and v6.
We have no MAC address for example on Layer3 devices like tun or wireguard.
Also, before "0a797bdc2a systemd/dhcp: fix assertion starting DHCP
client without MAC address", if we tired to start sd_dhcp_client without
setting a MAC address, an assertion was triggered.
(cherry picked from commit e8fa75ce06)
This commit is contained in:
parent
0a797bdc2a
commit
a4c3ebed07
1 changed files with 17 additions and 0 deletions
|
|
@ -178,6 +178,7 @@ client_start (NMDhcpManager *self,
|
|||
NMDhcpManagerPrivate *priv;
|
||||
NMDhcpClient *client;
|
||||
gboolean success = FALSE;
|
||||
gsize hwaddr_len;
|
||||
|
||||
g_return_val_if_fail (NM_IS_DHCP_MANAGER (self), NULL);
|
||||
g_return_val_if_fail (ifindex > 0, NULL);
|
||||
|
|
@ -185,6 +186,22 @@ client_start (NMDhcpManager *self,
|
|||
g_return_val_if_fail (!dhcp_client_id || g_bytes_get_size (dhcp_client_id) >= 2, NULL);
|
||||
g_return_val_if_fail (!error || !*error, NULL);
|
||||
|
||||
if (!hwaddr) {
|
||||
nm_utils_error_set (error,
|
||||
NM_UTILS_ERROR_UNKNOWN,
|
||||
"missing MAC address");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
hwaddr_len = g_bytes_get_size (hwaddr);
|
||||
if ( hwaddr_len == 0
|
||||
|| hwaddr_len > NM_UTILS_HWADDR_LEN_MAX) {
|
||||
nm_utils_error_set (error,
|
||||
NM_UTILS_ERROR_UNKNOWN,
|
||||
"invalid MAC address");
|
||||
g_return_val_if_reached (NULL) ;
|
||||
}
|
||||
|
||||
priv = NM_DHCP_MANAGER_GET_PRIVATE (self);
|
||||
|
||||
nm_assert (priv->client_factory);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue