[lxc-devel] [PATCH] lxc: let lxc-start support wlan phys

fupan fupan.li at windriver.com
Wed Dec 2 02:21:58 UTC 2015


On 12/01/2015 11:18 PM, Serge Hallyn wrote:
> Quoting fupan.li at windriver.com (fupan.li at windriver.com):
>> From: fli <fupan.li at windriver.com>
>>
>> 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: fupan li <fupan.li at windriver.com>
> Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
>
> We might want to mark move_by_index static and put in a comment saying
> this is now only meant to be used by move_by_name.  Maybe even rename
> lxc_netdev_move_by_index to just do_move_by_index(), then make a new
> lxc_netdev_move_by_index() function which does the if_indextoname()
> which the callers are now doing themselves.
I'd like to rename  lxc_netdev_move_by_index to  do_move_by_index()
and marks it as static, and only export lxc_netdev_move_by_name
as the unified public api.

Fupan
>
>> ---
>>   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 142444e..2ebf876 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");
>> @@ -3225,6 +3230,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;
>>   
>> @@ -3245,7 +3251,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));
>> -- 
>> 1.9.1
>>
>> _______________________________________________
>> lxc-devel mailing list
>> lxc-devel at lists.linuxcontainers.org
>> http://lists.linuxcontainers.org/listinfo/lxc-devel
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel



More information about the lxc-devel mailing list