Signed-off-by: Bogdan Purcareata <bogdan.purcareata(a)freescale.com>
---
src/lxc/lxc_container.c | 4 +++-
src/lxc/lxc_controller.c | 19 +++++++++++++++++++
src/lxc/lxc_hostdev.c | 1 +
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 002ba9e..e59bfdf 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -1551,7 +1551,6 @@ cleanup:
return ret;
}
-
static int lxcContainerSetupHostdevSubsys(virDomainDefPtr vmDef,
virDomainHostdevDefPtr def,
const char *dstprefix,
@@ -1582,6 +1581,9 @@ static int lxcContainerSetupHostdevCaps(virDomainDefPtr vmDef,
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
return lxcContainerSetupHostdevCapsMisc(vmDef, def, dstprefix, securityDriver);
+ case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
+ return 0; // case is handled in virLXCControllerMoveInterfaces
+
default:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported host device mode %s"),
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index cede445..ab488d8 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -1050,12 +1050,31 @@ cleanup2:
static int virLXCControllerMoveInterfaces(virLXCControllerPtr ctrl)
{
size_t i;
+ virDomainDefPtr def = ctrl->def;
for (i = 0 ; i < ctrl->nveths ; i++) {
if (virNetDevSetNamespace(ctrl->veths[i], ctrl->initpid) < 0)
return -1;
}
+ for (i = 0; i < def->nhostdevs; i ++) {
+ virDomainHostdevDefPtr hdev = def->hostdevs[i];
+
+ if (hdev->mode != VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES) {
+ continue;
+ }
+
+ virDomainHostdevCaps hdcaps = hdev->source.caps;
+
+ if (hdcaps.type != VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET) {
+ continue;
+ }
+
+ if (virNetDevSetNamespace(hdcaps.u.net.interface, ctrl->initpid) < 0) {
+ return -1;
+ }
+ }
+
return 0;
}
diff --git a/src/lxc/lxc_hostdev.c b/src/lxc/lxc_hostdev.c
index 33b0b60..53a1a31 100644
--- a/src/lxc/lxc_hostdev.c
+++ b/src/lxc/lxc_hostdev.c
@@ -307,6 +307,7 @@ int virLXCPrepareHostDevices(virLXCDriverPtr driver,
switch (dev->source.subsys.type) {
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE:
case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC:
+ case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET:
break;
default:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
--
1.7.11.7