On 28 Nov 2009, Ian Woodstock verbalised: > On Sat, Nov 28, 2009 at 5:06 PM, Nix <nix@xxxxxxxxxxxxx> wrote: >> (hm, the state UNKNOWN is sort of bizarre. It's up...) > > It's unknown because you're using the dummy device (which will just > send all bits to a deep dark hole) and we can't do things like check > the status of the interface/link etc. I just tried that by removing everything from the bridge. Still state UNKNOWN. > I suspect that's why libvirt won't let you connect to it, since > libvirt is looking for a "shared physical device" and there's not a > device in the bridge. Gah. So libvirt won't let me connect a bunch of devices to a bridge without that bridge being bridged to something already? So you can't have a pile of bridges with VMs on them *routed* to the rest of the net? >> It appears in the GUI, all right: as 'host device linux-net (not bridged)', >> greyed out and unselectable. Calling a bridge 'not bridged' is more than >> slightly bizarre. > > Actually I think this is correct. It's not bridged to a physical > device, it's plumbed to nothing. I don't want it bridged to a physical device. Why should libvirt require any such thing? It's not necessary to get packets out of it: all you need for *that* is a routing table entry. (The bridge has an IP address on the host and everything.) >> There's no iptables at all on this particular box (at least not yet, >> although it may turn up later on when I put Windows guests on here: I'm >> not having *them* running around free). >> > > So it sounds like the root of your issue now is that you're using > dummy network device. > Is that being done temporarily now because you don't have a network > plumbed in or is there some other use case? It was an emergency hack when I found virt-manager not noticing bridges that had nothing on them (it said 'not bridged'). I stuck the dummy device on it and it started working. However, this appears to have been transient. ... In the code, the only place where it checks if a bridge exists is in src/network/bridge_driver.c:networkFindActiveConfigs(), and it only bothers to check *that* if there's a config file in the NETWORK_STATE_DIR (/var/lib/libvirt/network): ,---- | for (i = 0 ; i < driver->networks.count ; i++) { | virNetworkObjPtr obj = driver->networks.objs[i]; | virNetworkDefPtr tmp; | char *config; | | virNetworkObjLock(obj); | | if ((config = virNetworkConfigFile(NULL, | NETWORK_STATE_DIR, | obj->def->name)) == NULL) { | virNetworkObjUnlock(obj); | continue; | } | | if (access(config, R_OK) < 0) { | VIR_FREE(config); | virNetworkObjUnlock(obj); | continue; | } | | /* Try and load the live config */ | tmp = virNetworkDefParseFile(NULL, config); | VIR_FREE(config); | if (tmp) { | obj->newDef = obj->def; | obj->def = tmp; | } | | /* If bridge exists, then mark it active */ | if (obj->def->bridge && | brHasBridge(driver->brctl, obj->def->bridge) == 0) { | obj->active = 1; `---- So, no, I don't see how this can possibly work without a config file, and you only get a config file by creating the bridge through libvirt. I wonder if any of the Dans can tell us what's going on? (It's not surprising I can't figure it out. My first name is wrong. ;) ) -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list