[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: Multiple netif device channels
On Wed, Jan 26, 2005 at 08:36:34PM +0000, Mark Williamson wrote: > > Ok, an update on the matter. The reason no interface appeared in the domU > > netif backend was because xend wasn't actually configuring the domain as a > > backend. The reason being that xend was setting the backend configuration > > flags /after/ constructing the domain image [1], so nothing was happening. > > Ah. Do you have a patch for this we could apply? Yep, patch attached. Also includes a change to make specifying the backend domain more user friendly. > > With that changed, a vif appears in the netif backend when the other domU > > is started up. However, no actual network connection can be made between > > the domains; ping just responds back with a destination host unreachable > > error. > > Have you tried the hack Andy suggested (giving the backend domain access to a > PCI device it has no drivers for) so that the backend domain will be > privileged? If you don't elevate its privilege level some how it will > definitely not be able to function as a backend. Yay. Tried that (pointed the backend domain to the unused onboard audio controller :) and it worked perfectly. One thing though; all backend interfaces have the same mac address, FE:FF:FF:FF:FF:FF. I see that Keir committed this change, along with a note about problems with bridging with the previous code. If i modify the code such that i can specify an explicit backend vif mac address to xend, and then that gets passed into the backend (with fe:ff:ff:ff:ff:ff being sent if no explicit one is given), what would be the best way to go about avoiding the problems mentioned when doing so? In case you're wondering why i need this change, it's because i need some way to distingush the vif's in the backend domain, so that i can configure them easily with the linux hotplug system (since, obviously, xend is neither running in the domain, nor can the dom0 instance configure the interface) > > Seperately, although still connected to networking, the netfront driver has > > code in it that prevents it from loading in a backend domain as well as the > > initial domain. That should probably be reduced down to just checking for > > the initial domain. > > Yes, this can probably be safely removed now. Does removing the backend > check > work for you? Seems to work fine. Tried it out after i finally got the inter-domU networking working. No problems appeared with front only, back only or front-and-back configurations. Patch attached for this as well. > Thanks for working with us on this. No probs. Had a good time working through the code to figure out what was going on. J -- Jody Belka knew (at) pimb (dot) org diff -durN tools.orig/python/xen/xend/XendDomainInfo.py tools/python/xen/xend/XendDomainInfo.py --- tools.orig/python/xen/xend/XendDomainInfo.py 2005-01-27 01:06:28.840379840 +0100 +++ tools/python/xen/xend/XendDomainInfo.py 2005-01-25 16:20:44.000000000 +0100 @@ -449,9 +449,9 @@ self.init_domain() self.configure_console() + self.configure_backends() self.construct_image() self.configure_restart() - self.configure_backends() deferred = self.configure() def cberr(err): self.destroy() diff -durN tools.orig/python/xen/xend/server/netif.py tools/python/xen/xend/server/netif.py --- tools.orig/python/xen/xend/server/netif.py 2005-01-25 10:09:39.000000000 +0100 +++ tools/python/xen/xend/server/netif.py 2005-01-27 01:19:29.043770896 +0100 @@ -140,7 +140,8 @@ self.ipaddr = self._get_config_ipaddr(config) or [] try: - self.backendDomain = int(sxp.child_value(config, 'backend', '0')) + xd = get_component('xen.xend.XendDomain') + self.backendDomain = int(xd.domain_lookup(sxp.child_value(config, 'backend', '0')).id) except: raise XendError('invalid backend domain') @@ -161,7 +162,8 @@ bridge = sxp.child_value(config, 'bridge') script = sxp.child_value(config, 'script') ipaddr = self._get_config_ipaddr(config) - backendDomain = sxp.child_value(config, 'backend', '0') + xd = get_component('xen.xend.XendDomain') + backendDomain = str(xd.domain_lookup(sxp.child_value(config, 'backend', '0')).id) if (mac is not None) and (mac != self.mac): raise XendError("cannot change mac") if (backendDomain is not None) and (backendDomain != str(self.backendDomain)): diff -durN linux-2.6.10-xen-sparse.orig/drivers/xen/netfront/netfront.c linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c --- linux-2.6.10-xen-sparse.orig/drivers/xen/netfront/netfront.c 2005-01-27 01:02:55.724778336 +0100 +++ linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c 2005-01-27 01:03:07.039058304 +0100 @@ -1295,8 +1295,7 @@ { int err = 0; - if ( (xen_start_info.flags & SIF_INITDOMAIN) || - (xen_start_info.flags & SIF_NET_BE_DOMAIN) ) + if ( xen_start_info.flags & SIF_INITDOMAIN ) return 0; IPRINTK("Initialising virtual ethernet driver.\n");
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |