ip-tunnel: merge branch 'bg/ip-tunnel-cloned-mac-rh1832170'

https://bugzilla.redhat.com/show_bug.cgi?id=1832170
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/503
(cherry picked from commit 2d8c87e22e)
(cherry picked from commit f50ed7a25e)
(cherry picked from commit bef2f8a4dd)
This commit is contained in:
Beniamino Galvani 2020-05-15 10:21:15 +02:00
commit b4fedfc57c
3 changed files with 17 additions and 4 deletions

View file

@ -875,4 +875,8 @@ gboolean nm_utils_connection_is_adhoc_wpa (NMConnection *connection);
const char *nm_utils_wifi_freq_to_band (guint32 freq); const char *nm_utils_wifi_freq_to_band (guint32 freq);
/*****************************************************************************/
gboolean _nm_ip_tunnel_mode_is_layer2 (NMIPTunnelMode mode);
#endif #endif

View file

@ -305,6 +305,14 @@ nm_setting_ip_tunnel_get_flags (NMSettingIPTunnel *setting)
/*****************************************************************************/ /*****************************************************************************/
gboolean
_nm_ip_tunnel_mode_is_layer2 (NMIPTunnelMode mode)
{
return NM_IN_SET (mode,
NM_IP_TUNNEL_MODE_GRETAP,
NM_IP_TUNNEL_MODE_IP6GRETAP);
}
static gboolean static gboolean
verify (NMSetting *setting, NMConnection *connection, GError **error) verify (NMSetting *setting, NMConnection *connection, GError **error)
{ {
@ -458,9 +466,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
} }
if ( nm_connection_get_setting_wired (connection) if ( nm_connection_get_setting_wired (connection)
&& !NM_IN_SET (priv->mode, && !_nm_ip_tunnel_mode_is_layer2 (priv->mode)) {
NM_IP_TUNNEL_MODE_GRETAP,
NM_IP_TUNNEL_MODE_IP6GRETAP)) {
g_set_error (error, g_set_error (error,
NM_CONNECTION_ERROR, NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY, NM_CONNECTION_ERROR_INVALID_PROPERTY,

View file

@ -970,13 +970,16 @@ set_property (GObject *object, guint prop_id,
static NMActStageReturn static NMActStageReturn
act_stage1_prepare (NMDevice *device, NMDeviceStateReason *out_failure_reason) 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);
NMActStageReturn ret; NMActStageReturn ret;
ret = NM_DEVICE_CLASS (nm_device_ip_tunnel_parent_class)->act_stage1_prepare (device, out_failure_reason); ret = NM_DEVICE_CLASS (nm_device_ip_tunnel_parent_class)->act_stage1_prepare (device, out_failure_reason);
if (ret != NM_ACT_STAGE_RETURN_SUCCESS) if (ret != NM_ACT_STAGE_RETURN_SUCCESS)
return ret; return ret;
if (!nm_device_hw_addr_set_cloned (device, nm_device_get_applied_connection (device), FALSE)) if ( _nm_ip_tunnel_mode_is_layer2 (priv->mode)
&& !nm_device_hw_addr_set_cloned (device, nm_device_get_applied_connection (device), FALSE))
return NM_ACT_STAGE_RETURN_FAILURE; return NM_ACT_STAGE_RETURN_FAILURE;
return NM_ACT_STAGE_RETURN_SUCCESS; return NM_ACT_STAGE_RETURN_SUCCESS;