[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [patch] xen udev rule interfering with openvpn
El 17/04/2012, a las 11:26, Ian Campbell escribió: > On Mon, 2012-04-16 at 20:03 +0100, M A Young wrote: >> There is a Fedora bug report >> https://bugzilla.redhat.com/show_bug.cgi?id=812421 reporting that openvpn >> is having problems because of the line >> SUBSYSTEM=="net", KERNEL=="tap*", ACTION=="add", >> RUN+="/etc/xen/scripts/vif-setup $env{ACTION} type_if=tap" >> in /etc/udev/rules.d/xen-backend.rules which is causing the xen script to >> run when openvpn tries to use a tap device, causing it to fail. I have >> used the attached patch to solve this problem, by matching the form of the >> tap device that xen uses more exactly to avoid to openvpn case. A better >> long-term solution (suggested in one of the comments in the bug) might be >> to use a more specific name instead of "tap" so we have less chance of >> interfering with another application. > > This is a good start, I think we should do this for 4.2. > > Changing the name might be pretty simple though e.g. the following. > Works for me with xl but I didn't try xend (seems "obviously correct"?) > > I noticed that when vifname is set xend prepends "tap-" (presumably to > distinguish it from the vif device) whereas libxl does not, so I suspect > named vifs for HVM guests don't work so well, I fixed that while I was > there... > > Also at least for the libxl case we will likely not be running these > hotplug scripts via udev any more in 4.2, however I don't think there is > any harm in making this change first (iff we decide it is suitable for > 4.2). > > Ian. > > # HG changeset patch > # User Ian Campbell <ian.campbell@xxxxxxxxxx> > # Date 1334658366 -3600 > # Node ID de3e65d804cceab7291e2accc18d50ae8b816433 > # Parent 8d92d1f34921c8675d85c74aa36e319c9451f68f > libxl/xend: name tap devices with a xentap prefix > > This prevents the udev scripts from operating on other tap devices (e.g. > openvpn etc) > > Also add "xentap-" prefix to the tap device when an explicit name is given to > avoid a conflict with the vif device, which would otherwise have the same > name. > Likewise correct the documentation for this option which suggested it applied > to HVM tap devices only. > > Reported by Michael Young. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Roger Pau Monne <roger.pau@xxxxxxxxxx> I've already changed my hotplug series to match this change in the udev rules, so this has to go in before mine. > > diff -r 8d92d1f34921 -r de3e65d804cc > docs/misc/xl-network-configuration.markdown > --- a/docs/misc/xl-network-configuration.markdown Mon Apr 16 17:57:00 > 2012 +0100 > +++ b/docs/misc/xl-network-configuration.markdown Tue Apr 17 11:26:06 > 2012 +0100 > @@ -93,11 +93,14 @@ are: > > ### vifname > > -This keyword is valid for HVM guest devices with `type=ioemu` only. > +Specifies the backend device name for the virtual device. > > -Specifies the backend device name for an emulated device. The default > -is `tapDOMID.DEVID` where `DOMID` is the guest domain ID and `DEVID` > -is the device number. > +If the domain is an HVM domain then the associated emulated (tap) > +device will have a "xentap-" prefix added. > + > +The default name for the virtual device is `vifDOMID.DEVID` where > +`DOMID` is the guest domain ID and `DEVID` is the device > +number. Likewise the default tap name is `xentapDOMID.DEVID`. > > ### script > > diff -r 8d92d1f34921 -r de3e65d804cc tools/hotplug/Linux/vif-common.sh > --- a/tools/hotplug/Linux/vif-common.sh Mon Apr 16 17:57:00 2012 +0100 > +++ b/tools/hotplug/Linux/vif-common.sh Tue Apr 17 11:26:06 2012 +0100 > @@ -85,8 +85,8 @@ 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: "xentap${domid}.${devid}". > + dev_=${dev#xentap} > domid=${dev_%.*} > devid=${dev_#*.} > > diff -r 8d92d1f34921 -r de3e65d804cc tools/hotplug/Linux/xen-backend.rules > --- a/tools/hotplug/Linux/xen-backend.rules Mon Apr 16 17:57:00 2012 +0100 > +++ b/tools/hotplug/Linux/xen-backend.rules Tue Apr 17 11:26:06 2012 +0100 > @@ -13,4 +13,4 @@ KERNEL=="blktap-control", NAME="xen/blkt > 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=="xentap*", ACTION=="add", > RUN+="/etc/xen/scripts/vif-setup $env{ACTION} type_if=tap" > diff -r 8d92d1f34921 -r de3e65d804cc tools/libxl/libxl_dm.c > --- a/tools/libxl/libxl_dm.c Mon Apr 16 17:57:00 2012 +0100 > +++ b/tools/libxl/libxl_dm.c Tue Apr 17 11:26:06 2012 +0100 > @@ -212,9 +212,9 @@ static char ** libxl__build_device_model > char *ifname; > if (!vifs[i].ifname) > ifname = libxl__sprintf(gc, > - "tap%d.%d", domid, > vifs[i].devid); > + "xentap%d.%d", domid, > vifs[i].devid); > else > - ifname = vifs[i].ifname; > + ifname = libxl__sprintf(gc, "xentap-%s", vifs[i].ifname); > flexarray_vappend(dm_args, > "-net", libxl__sprintf(gc, > "nic,vlan=%d,macaddr=%s,model=%s", > vifs[i].devid, smac, > vifs[i].model), > @@ -451,10 +451,10 @@ static char ** libxl__build_device_model > LIBXL_MAC_FMT, LIBXL_MAC_BYTES(vifs[i].mac)); > char *ifname; > if (!vifs[i].ifname) { > - ifname = libxl__sprintf(gc, "tap%d.%d", > + ifname = libxl__sprintf(gc, "xentap%d.%d", > guest_domid, vifs[i].devid); > } else { > - ifname = vifs[i].ifname; > + ifname = libxl__sprintf(gc, "xentap-%s", vifs[i].ifname); > } > flexarray_append(dm_args, "-device"); > flexarray_append(dm_args, > diff -r 8d92d1f34921 -r de3e65d804cc tools/python/xen/xend/image.py > --- a/tools/python/xen/xend/image.py Mon Apr 16 17:57:00 2012 +0100 > +++ b/tools/python/xen/xend/image.py Tue Apr 17 11:26:06 2012 +0100 > @@ -921,7 +921,7 @@ class HVMImageHandler(ImageHandler): > if vifname: > vifname = "tap-" + vifname > else: > - vifname = "tap%d.%d" % (self.vm.getDomid(), nics-1) > + vifname = "xentap%d.%d" % (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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |