mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-09 07:08:02 +02:00
ip-tunnel: set cloned-mac-address only for layer2 tunnel devices
For ip-tunnel modes that encapsulate layer2 packets (gretap and ip6gretap) we allow the presence of an ethernet setting in the connection and honor the cloned-mac-address specified in it. For all other modes, the ethernet setting is removed during normalization, but a value different from 'preserve' could be set via global default. The kernel doesn't allow setting a MAC for layer3 devices, don't do it. (cherry picked from commit0494a84878) (cherry picked from commit78ed14166c)
This commit is contained in:
parent
d0f275e7f5
commit
d69d92c658
1 changed files with 19 additions and 1 deletions
|
|
@ -890,6 +890,23 @@ can_reapply_change (NMDevice *device,
|
||||||
error);
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static NMActStageReturn
|
||||||
|
act_stage1_prepare (NMDevice *device, NMDeviceStateReason *out_failure_reason)
|
||||||
|
{
|
||||||
|
NMDeviceIPTunnel *self = NM_DEVICE_IP_TUNNEL (device);
|
||||||
|
NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE (self);
|
||||||
|
|
||||||
|
if ( _nm_ip_tunnel_mode_is_layer2 (priv->mode)
|
||||||
|
&& !nm_device_hw_addr_set_cloned (device,
|
||||||
|
nm_device_get_applied_connection (device),
|
||||||
|
FALSE)) {
|
||||||
|
*out_failure_reason = NM_DEVICE_STATE_REASON_CONFIG_FAILED;
|
||||||
|
return NM_ACT_STAGE_RETURN_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NM_ACT_STAGE_RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -1039,7 +1056,8 @@ nm_device_ip_tunnel_class_init (NMDeviceIPTunnelClass *klass)
|
||||||
NM_LINK_TYPE_IPIP,
|
NM_LINK_TYPE_IPIP,
|
||||||
NM_LINK_TYPE_SIT);
|
NM_LINK_TYPE_SIT);
|
||||||
|
|
||||||
device_class->act_stage1_prepare_set_hwaddr_ethernet = TRUE;
|
|
||||||
|
device_class->act_stage1_prepare = act_stage1_prepare;
|
||||||
device_class->link_changed = link_changed;
|
device_class->link_changed = link_changed;
|
||||||
device_class->can_reapply_change = can_reapply_change;
|
device_class->can_reapply_change = can_reapply_change;
|
||||||
device_class->complete_connection = complete_connection;
|
device_class->complete_connection = complete_connection;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue