summaryrefslogtreecommitdiffstats
path: root/recipes-containers/lxc/files/lxc-let-lxc-start-support-wlan-phys.patch
blob: 9146fd07726ce69387dd2dd488e65975d674c64a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
From 4acc7a24e098445de502a6f59a8b3dff2cd8536d Mon Sep 17 00:00:00 2001
From: fli <fupan.li@windriver.com>
Date: Thu, 21 Apr 2016 19:07:10 -0700
Subject: [PATCH] lxc: let lxc-start support wlan phys

The commit: e5848d395cb <netdev_move_by_index: support wlan> only
made netdev_move_by_name support wlan, instead of netdev_move_by_index.

Given netdev_move_by_name is a wrapper of netdev_move_by_index, so here
replacing all of the call to lxc_netdev_move_by_index with lxc_netdev_move_by_name
to let lxc-start support wlan phys.

Signed-off-by: fli <fupan.li@windriver.com>
---
 src/lxc/conf.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 034bdff..bcba0f1 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -2623,6 +2623,7 @@ void restore_phys_nics_to_netns(int netnsfd, struct lxc_conf *conf)
 {
 	int i, ret, oldfd;
 	char path[MAXPATHLEN];
+	char ifname[IFNAMSIZ]; 
 
 	if (netnsfd < 0)
 		return;
@@ -2643,9 +2644,13 @@ void restore_phys_nics_to_netns(int netnsfd, struct lxc_conf *conf)
 	}
 	for (i=0; i<conf->num_savednics; i++) {
 		struct saved_nic *s = &conf->saved_nics[i];
-		if (lxc_netdev_move_by_index(s->ifindex, 1, NULL))
-			WARN("Error moving nic index:%d back to host netns",
-					s->ifindex);
+		/* retrieve the name of the interface */
+		if (!if_indextoname(s->ifindex, ifname)) {
+			WARN("no interface corresponding to index '%d'", s->ifindex);
+			continue;
+		}
+		if (lxc_netdev_move_by_name(ifname, 1, NULL))
+			WARN("Error moving nic name:%s back to host netns", ifname);
 	}
 	if (setns(oldfd, 0) != 0)
 		SYSERROR("Failed to re-enter monitor's netns");
@@ -3208,6 +3213,7 @@ int lxc_assign_network(struct lxc_list *network, pid_t pid)
 {
 	struct lxc_list *iterator;
 	struct lxc_netdev *netdev;
+	char ifname[IFNAMSIZ];
 	int am_root = (getuid() == 0);
 	int err;
 
@@ -3228,7 +3234,13 @@ int lxc_assign_network(struct lxc_list *network, pid_t pid)
 		if (!netdev->ifindex)
 			continue;
 
-		err = lxc_netdev_move_by_index(netdev->ifindex, pid, NULL);
+		/* retrieve the name of the interface */
+		if (!if_indextoname(netdev->ifindex, ifname)) {
+			ERROR("no interface corresponding to index '%d'", netdev->ifindex);
+			return -1;
+		}
+
+		err = lxc_netdev_move_by_name(ifname, pid, NULL);
 		if (err) {
 			ERROR("failed to move '%s' to the container : %s",
 			      netdev->link, strerror(-err));
-- 
2.7.4