diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-04-07 14:24:12 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-05-28 11:40:35 +0200 |
commit | 705b7d5c1b2af9f0fa3bb9923867aada5b973550 (patch) | |
tree | 741ba648726cbe07e1540617e71a575c02a90e5c | |
parent | 1b95eab27c9ec973d8994caaaa694a4ec3557935 (diff) | |
download | NetworkManager-705b7d5c1b2af9f0fa3bb9923867aada5b973550.tar.gz |
device: turn off "unmanaged unless IFF_UP externally" for veth
We currently don't manage a veth inside a container despite we should because
it's an externally configured software interface and thus waits for IFF_UP.
Given veths are prevented from being managed outside of a container by an udev
rule anyway it's safe to lift the external IFF_UP requirement for them.
(cherry picked from commit bcc79cc0eb1172a51a25741cf61be6ae493672fb)
-rw-r--r-- | src/devices/nm-device-veth.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/devices/nm-device-veth.c b/src/devices/nm-device-veth.c index 6a05cc3214..30994971ec 100644 --- a/src/devices/nm-device-veth.c +++ b/src/devices/nm-device-veth.c @@ -96,6 +96,15 @@ get_peer (NMDeviceVeth *self) return priv->peer; } +static gboolean +can_unmanaged_external_down (NMDevice *self) +{ + /* Unless running in a container, an udev rule causes these to be + * unmanaged. If there's no udev then we're probably in a container + * and should IFF_UP and configure the veth ourselves even if we + * didn't create it. */ + return FALSE; +} /**************************************************************/ @@ -140,12 +149,15 @@ static void nm_device_veth_class_init (NMDeviceVethClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); g_type_class_add_private (klass, sizeof (NMDeviceVethPrivate)); object_class->get_property = get_property; object_class->dispose = dispose; + device_class->can_unmanaged_external_down = can_unmanaged_external_down; + /* properties */ g_object_class_install_property (object_class, PROP_PEER, |