mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-04 08:04:04 +00:00
network: add connections counter to networks
Just as each physical device used by a network has a connections counter, now each network has a connections counter which is incremented once for each guest interface that connects using this network. The count is output in the live network XML, like this: <network connections='20'> ... </network> It is read-only, and for informational purposes only - it isn't used internally anywhere by libvirt.
This commit is contained in:
parent
4fee4e052a
commit
300bcdb63b
@ -15,8 +15,14 @@
|
||||
|
||||
<p>
|
||||
The root element required for all virtual networks is
|
||||
named <code>network</code> and has no attributes.
|
||||
The network XML format is available <span class="since">since 0.3.0</span>
|
||||
named <code>network</code> and has no configurable attributes
|
||||
(although <span class="since">since 0.10.0</span> there is one
|
||||
optional read-only attribute - when examining the live
|
||||
configuration of a network, the
|
||||
attribute <code>connections</code>, if present, specifies the
|
||||
number of guest interfaces currently connected via this
|
||||
network). The network XML format is
|
||||
available <span class="since">since 0.3.0</span>
|
||||
</p>
|
||||
|
||||
<h3><a name="elementsMetadata">General metadata</a></h3>
|
||||
@ -233,12 +239,22 @@
|
||||
</forward>
|
||||
...
|
||||
</pre>
|
||||
Additionally, <span class="since">since 0.9.10</span>, libvirt
|
||||
allows a shorthand for specifying all virtual interfaces
|
||||
associated with a single physical function, by using
|
||||
the <code><pf></code> subelement to call out the
|
||||
corresponding physical interface associated with multiple
|
||||
virtual interfaces:
|
||||
<p>
|
||||
<span class="since">since 0.10.0</span>,
|
||||
<code><interface></code> also has an optional read-only
|
||||
attribute - when examining the live configuration of a
|
||||
network, the attribute <code>connections</code>, if present,
|
||||
specifies the number of guest interfaces currently connected
|
||||
via this physical interface.
|
||||
</p>
|
||||
<p>
|
||||
Additionally, <span class="since">since 0.9.10</span>, libvirt
|
||||
allows a shorthand for specifying all virtual interfaces
|
||||
associated with a single physical function, by using
|
||||
the <code><pf></code> subelement to call out the
|
||||
corresponding physical interface associated with multiple
|
||||
virtual interfaces:
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<forward mode='passthrough'>
|
||||
|
@ -12,6 +12,11 @@
|
||||
<define name="network">
|
||||
|
||||
<element name="network">
|
||||
<optional>
|
||||
<attribute name="connections">
|
||||
<data type="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<interleave>
|
||||
|
||||
<!-- The name of the network, used to refer to it through the API
|
||||
@ -91,6 +96,11 @@
|
||||
<attribute name='dev'>
|
||||
<ref name='deviceName'/>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="connections">
|
||||
<data type="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
<optional>
|
||||
|
@ -1463,7 +1463,11 @@ char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags)
|
||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||
int ii;
|
||||
|
||||
virBufferAddLit(&buf, "<network>\n");
|
||||
virBufferAddLit(&buf, "<network");
|
||||
if (!(flags & VIR_NETWORK_XML_INACTIVE) && (def->connections > 0)) {
|
||||
virBufferAsprintf(&buf, " connections='%d'", def->connections);
|
||||
}
|
||||
virBufferAddLit(&buf, ">\n");
|
||||
virBufferEscapeString(&buf, " <name>%s</name>\n", def->name);
|
||||
|
||||
uuid = def->uuid;
|
||||
|
@ -156,6 +156,7 @@ struct _virNetworkDef {
|
||||
unsigned char uuid[VIR_UUID_BUFLEN];
|
||||
bool uuid_specified;
|
||||
char *name;
|
||||
int connections; /* # of guest interfaces connected to this network */
|
||||
|
||||
char *bridge; /* Name of bridge device */
|
||||
char *domain;
|
||||
|
@ -3005,6 +3005,10 @@ networkAllocateActualDevice(virDomainNetDefPtr iface)
|
||||
VIR_DEBUG("Using physical device %s, %d connections",
|
||||
dev->dev, dev->connections);
|
||||
}
|
||||
|
||||
netdef->connections++;
|
||||
VIR_DEBUG("Using network %s, %d connections",
|
||||
netdef->name, netdef->connections);
|
||||
ret = 0;
|
||||
cleanup:
|
||||
for (ii = 0; ii < num_virt_fns; ii++)
|
||||
@ -3117,6 +3121,9 @@ networkNotifyActualDevice(virDomainNetDefPtr iface)
|
||||
}
|
||||
|
||||
success:
|
||||
netdef->connections++;
|
||||
VIR_DEBUG("Using network %s, %d connections",
|
||||
netdef->name, netdef->connections);
|
||||
ret = 0;
|
||||
cleanup:
|
||||
if (network)
|
||||
@ -3205,6 +3212,9 @@ networkReleaseActualDevice(virDomainNetDefPtr iface)
|
||||
}
|
||||
|
||||
success:
|
||||
netdef->connections--;
|
||||
VIR_DEBUG("Releasing network %s, %d connections",
|
||||
netdef->name, netdef->connections);
|
||||
ret = 0;
|
||||
cleanup:
|
||||
if (network)
|
||||
|
Loading…
x
Reference in New Issue
Block a user