From d07570b2dad62b582f39310f4abea036060f85a0 Mon Sep 17 00:00:00 2001
From: Beniamino Galvani <bgalvani@redhat.com>
Date: Thu, 18 Jan 2018 11:43:09 +0100
Subject: [PATCH] device: skip IP configuration phase for external devices

We already avoid committing the IP configuration for external devices
(see commit 60334a2893fe). However, we still start DHCP/IPv6-autoconf
and, especially, we change sysctl values of the device.

To be sure that no action is taken on the device, return early from
the IP configuration phase, as in the method=disabled/ignore case.

https://bugzilla.redhat.com/show_bug.cgi?id=1530288
(cherry picked from commit 22f32a16f5aa0a24fd124ad5788959936e22acff)
(cherry picked from commit a169247b7dda0c27707861e6cbc808ecfd4c5e85)
---
 src/devices/nm-device.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index babef21ad..b3b31ea45 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -8159,6 +8159,12 @@ nm_device_activate_stage3_ip4_start (NMDevice *self)

	g_assert (priv->ip4_state == IP_WAIT);

+	if (nm_device_sys_iface_state_is_external (self)) {
+		_set_ip_state (self, AF_INET, IP_DONE);
+		check_ip_state (self, FALSE);
+		return TRUE;
+	}
+
	_set_ip_state (self, AF_INET, IP_CONF);
	ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip4_config_start (self, &ip4_config, &failure_reason);
	if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {
@@ -8200,6 +8206,12 @@ nm_device_activate_stage3_ip6_start (NMDevice *self)

	g_assert (priv->ip6_state == IP_WAIT);

+	if (nm_device_sys_iface_state_is_external (self)) {
+		_set_ip_state (self, AF_INET6, IP_DONE);
+		check_ip_state (self, FALSE);
+		return TRUE;
+	}
+
	_set_ip_state (self, AF_INET6, IP_CONF);
	ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip6_config_start (self, &ip6_config, &failure_reason);
	if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {
--
2.14.3
