diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index dcd38eda15..7ab9e29dc7 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -3856,6 +3856,41 @@ int networkRegister(void) /********************************************************/ +/* A unified function to log network connections and disconnections */ + +static void +networkLogAllocation(virNetworkDefPtr netdef, + virDomainNetType actualType, + virNetworkForwardIfDefPtr dev, + virDomainNetDefPtr iface, + bool inUse) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + const char *verb = inUse ? "using" : "releasing"; + + if (!dev) { + VIR_INFO("MAC %s %s network %s (%d connections)", + virMacAddrFormat(&iface->mac, macStr), verb, + netdef->name, netdef->connections); + } else { + if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) { + VIR_INFO("MAC %s %s network %s (%d connections) " + "physical device %04x:%02x:%02x.%x (%d connections)", + virMacAddrFormat(&iface->mac, macStr), verb, + netdef->name, netdef->connections, + dev->device.pci.domain, dev->device.pci.bus, + dev->device.pci.slot, dev->device.pci.function, + dev->connections); + } else { + VIR_INFO("MAC %s %s network %s (%d connections) " + "physical device %s (%d connections)", + virMacAddrFormat(&iface->mac, macStr), verb, + netdef->name, netdef->connections, + dev->device.dev, dev->connections); + } + } +} + /* Private API to deal with logical switch capabilities. * These functions are exported so that other parts of libvirt can * call them, but are not part of the public API and not in the @@ -4236,23 +4271,8 @@ networkAllocateActualDevice(virDomainDefPtr dom, if (netdef) { netdef->connections++; - VIR_DEBUG("Using network %s, %d connections", - netdef->name, netdef->connections); - - if (dev) { - /* mark the allocation */ + if (dev) dev->connections++; - if (actualType != VIR_DOMAIN_NET_TYPE_HOSTDEV) { - VIR_DEBUG("Using physical device %s, %d connections", - dev->device.dev, dev->connections); - } else { - VIR_DEBUG("Using physical device %04x:%02x:%02x.%x, connections %d", - dev->device.pci.domain, dev->device.pci.bus, - dev->device.pci.slot, dev->device.pci.function, - dev->connections); - } - } - /* finally we can call the 'plugged' hook script if any */ if (networkRunHook(network, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_PLUGGED, @@ -4263,6 +4283,7 @@ networkAllocateActualDevice(virDomainDefPtr dom, dev->connections--; goto error; } + networkLogAllocation(netdef, actualType, dev, iface, true); } ret = 0; @@ -4388,10 +4409,6 @@ networkNotifyActualDevice(virDomainDefPtr dom, netdef->name, actualDev); goto error; } - - VIR_DEBUG("Using physical device %s, connections %d", - dev->device.dev, dev->connections + 1); - } else /* if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) */ { virDomainHostdevDefPtr hostdev; @@ -4441,20 +4458,12 @@ networkNotifyActualDevice(virDomainDefPtr dom, dev->device.pci.slot, dev->device.pci.function); goto error; } - - VIR_DEBUG("Using physical device %04x:%02x:%02x.%x, connections %d", - dev->device.pci.domain, dev->device.pci.bus, - dev->device.pci.slot, dev->device.pci.function, - dev->connections); } success: netdef->connections++; if (dev) dev->connections++; - VIR_DEBUG("Using network %s, %d connections", - netdef->name, netdef->connections); - /* finally we can call the 'plugged' hook script if any */ if (networkRunHook(network, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_PLUGGED, VIR_HOOK_SUBOP_BEGIN) < 0) { @@ -4464,6 +4473,7 @@ networkNotifyActualDevice(virDomainDefPtr dom, netdef->connections--; goto error; } + networkLogAllocation(netdef, actualType, dev, iface, true); ret = 0; cleanup: @@ -4475,6 +4485,7 @@ networkNotifyActualDevice(virDomainDefPtr dom, } + /* networkReleaseActualDevice: * @dom: domain definition that @iface belongs to * @iface: a domain's NetDef (interface definition) @@ -4559,10 +4570,6 @@ networkReleaseActualDevice(virDomainDefPtr dom, netdef->name, actualDev); goto error; } - - VIR_DEBUG("Releasing physical device %s, connections %d", - dev->device.dev, dev->connections - 1); - } else /* if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) */ { virDomainHostdevDefPtr hostdev; @@ -4594,11 +4601,6 @@ networkReleaseActualDevice(virDomainDefPtr dom, hostdev->source.subsys.u.pci.addr.function); goto error; } - - VIR_DEBUG("Releasing physical device %04x:%02x:%02x.%x, connections %d", - dev->device.pci.domain, dev->device.pci.bus, - dev->device.pci.slot, dev->device.pci.function, - dev->connections - 1); } success: @@ -4606,13 +4608,10 @@ networkReleaseActualDevice(virDomainDefPtr dom, netdef->connections--; if (dev) dev->connections--; - - VIR_DEBUG("Releasing network %s, %d connections", - netdef->name, netdef->connections); - /* finally we can call the 'unplugged' hook script if any */ networkRunHook(network, dom, iface, VIR_HOOK_NETWORK_OP_IFACE_UNPLUGGED, VIR_HOOK_SUBOP_BEGIN); + networkLogAllocation(netdef, actualType, dev, iface, false); } ret = 0; cleanup: