[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [patch] xen udev rule interfering with openvpn
On Sat, May 12, 2012 at 7:53 AM, Teck Choon Giam <giamteckchoon@xxxxxxxxx> wrote: > On Fri, May 11, 2012 at 10:53 PM, Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> > wrote: >> Ian Campbell writes ("Re: [Xen-devel] [patch] xen udev rule interfering with >> openvpn"): >>> libxl/xend: name tap devices vifX.Y-emu >> >> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > > This is my backport version which excludes the following: > > Lastly also move libxl__device_* to a better place in the header, otherwise > the > comment about evgen stuff isn't next to the associated functions (noticed jsut > because I was going to add nic_devname near to the setdefault functions) > > I have tested with xm and xl with and without vifname set in domU > config for hvmdomain and pvdomain. Sorry, when re-test one of the test case failed... xm create hvmdomain with vifname set. I must have missed certain test case :( Kindest regards, Giam Teck Choon > > For your review and comments please. > > Thanks. > > Kindest regards, > Giam Teck Choon > > > > > libxl/xend: name tap devices vifX.Y-emu > > This prevents the udev scripts from operating on other tap devices (e.g. > openvpn etc) > > Correct the documentation for the "vifname" option which suggested it applied > to HVM tap devices only, which is not the case. > > Reported by Michael Young. > > Also fix the use of vifname with emulated devices. This is slightly complex. > The current hotplug scripts rely on being able to parse the "tapX.Y" (now > "vifX.Y-emu") name in order to locate the xenstore backend dir relating to the > corresponding vif. This is because we cannot inject our own environment vars > into the tap hotplug events. However this means that if the tap is initially > named with a user specified name (which will not match the expected scheme) we > fail to do anything useful with the device. So now we create the initial tap > device with the standard "vifX.Y-emu" name and the hotplug script will handle > the rename to the desired name. This is also how PV vif devices work -- they > are always created by netback with the name vifX.Y and renamed in the script. > > xen-unstable changeset: 25290:7a6dcecb1781 > Signed-off-by: Giam Teck Choon <giamteckchoon@xxxxxxxxx> > --- > tools/hotplug/Linux/vif-common.sh | 15 +++++++++++++-- > tools/hotplug/Linux/xen-backend.rules | 2 +- > tools/libxl/libxl_dm.c | 17 ++++++----------- > tools/python/xen/xend/image.py | 6 +----- > 4 files changed, 21 insertions(+), 19 deletions(-) > > diff --git a/tools/hotplug/Linux/vif-common.sh > b/tools/hotplug/Linux/vif-common.sh > index c9c5d41..fff22bb 100644 > --- a/tools/hotplug/Linux/vif-common.sh > +++ b/tools/hotplug/Linux/vif-common.sh > @@ -85,12 +85,23 @@ elif [ "$type_if" = tap ]; then > : ${INTERFACE:?} > > # Get xenbus_path from device name. > - # The name is built like that: "tap${domid}.${devid}". > - dev_=${dev#tap} > + # The name is built like that: "vif${domid}.${devid}-emu". > + dev_=${dev#vif} > + dev_=${dev_%-emu} > domid=${dev_%.*} > devid=${dev_#*.} > > XENBUS_PATH="/local/domain/0/backend/vif/$domid/$devid" > + vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "") > + if [ "$vifname" ] > + then > + vifname="${vifname}-emu" > + if [ "$command" == "add" ] && ! ip link show "$vifname" >&/dev/null > + then > + do_or_die ip link set "$dev" name "$vifname" > + fi > + dev="$vifname" > + fi > fi > > ip=${ip:-} > diff --git a/tools/hotplug/Linux/xen-backend.rules > b/tools/hotplug/Linux/xen-backend.rules > index 40f2658..405387f 100644 > --- a/tools/hotplug/Linux/xen-backend.rules > +++ b/tools/hotplug/Linux/xen-backend.rules > @@ -13,4 +13,4 @@ KERNEL=="blktap-control", > NAME="xen/blktap-2/control", MODE="0600" > KERNEL=="gntdev", NAME="xen/%k", MODE="0600" > KERNEL=="pci_iomul", NAME="xen/%k", MODE="0600" > KERNEL=="tapdev[a-z]*", NAME="xen/blktap-2/tapdev%m", MODE="0600" > -SUBSYSTEM=="net", KERNEL=="tap*", ACTION=="add", > RUN+="/etc/xen/scripts/vif-setup $env{ACTION} type_if=tap" > +SUBSYSTEM=="net", KERNEL=="vif*-emu", ACTION=="add", > RUN+="/etc/xen/scripts/vif-setup $env{ACTION} type_if=tap" > diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c > index 1ffcc90..2c030ca 100644 > --- a/tools/libxl/libxl_dm.c > +++ b/tools/libxl/libxl_dm.c > @@ -134,11 +134,9 @@ static char ** > libxl_build_device_model_args_old(libxl__gc *gc, > char *smac = libxl__sprintf(gc, > "%02x:%02x:%02x:%02x:%02x:%02x", > vifs[i].mac[0], > vifs[i].mac[1], vifs[i].mac[2], > vifs[i].mac[3], > vifs[i].mac[4], vifs[i].mac[5]); > - char *ifname; > - if (!vifs[i].ifname) > - ifname = libxl__sprintf(gc, "tap%d.%d", > info->domid, vifs[i].devid); > - else > - ifname = vifs[i].ifname; > + const char *ifname = libxl__sprintf(gc, "vif%d.%d-emu", > + info->domid, > + vifs[i].devid); > flexarray_vappend(dm_args, > "-net", libxl__sprintf(gc, > "nic,vlan=%d,macaddr=%s,model=%s", > vifs[i].devid, > smac, vifs[i].model), > @@ -271,12 +269,9 @@ static char ** > libxl_build_device_model_args_new(libxl__gc *gc, > char *smac = libxl__sprintf(gc, > "%02x:%02x:%02x:%02x:%02x:%02x", > vifs[i].mac[0], > vifs[i].mac[1], vifs[i].mac[2], > vifs[i].mac[3], > vifs[i].mac[4], vifs[i].mac[5]); > - char *ifname; > - if (!vifs[i].ifname) { > - ifname = libxl__sprintf(gc, "tap%d.%d", > info->domid, vifs[i].devid); > - } else { > - ifname = vifs[i].ifname; > - } > + const char *ifname = libxl__sprintf(gc, "vif%d.%d-emu", > + info->domid, > + vifs[i].devid); > flexarray_append(dm_args, "-net"); > flexarray_append(dm_args, libxl__sprintf(gc, > "nic,vlan=%d,macaddr=%s,model=%s", > vifs[i].devid, smac, vifs[i].model)); > diff --git a/tools/python/xen/xend/image.py b/tools/python/xen/xend/image.py > index f1464ac..3c8d80c 100644 > --- a/tools/python/xen/xend/image.py > +++ b/tools/python/xen/xend/image.py > @@ -917,11 +917,7 @@ class HVMImageHandler(ImageHandler): > ret.append("-net") > ret.append("nic,vlan=%d,macaddr=%s,model=%s" % > (nics, mac, model)) > - vifname = devinfo.get('vifname') > - if vifname: > - vifname = "tap-" + vifname > - else: > - vifname = "tap%d.%d" % (self.vm.getDomid(), nics-1) > + vifname = "vif%d.%d-emu" % (self.vm.getDomid(), nics-1) > ret.append("-net") > ret.append("tap,vlan=%d,ifname=%s,bridge=%s" % > (nics, vifname, bridge)) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |