mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-04 16:50:17 +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 "34af574d58 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.
This commit is contained in:
parent
34af574d58
commit
e8fa75ce06
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