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>
|
<p>
|
||||||
The root element required for all virtual networks is
|
The root element required for all virtual networks is
|
||||||
named <code>network</code> and has no attributes.
|
named <code>network</code> and has no configurable attributes
|
||||||
The network XML format is available <span class="since">since 0.3.0</span>
|
(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>
|
</p>
|
||||||
|
|
||||||
<h3><a name="elementsMetadata">General metadata</a></h3>
|
<h3><a name="elementsMetadata">General metadata</a></h3>
|
||||||
@ -233,12 +239,22 @@
|
|||||||
</forward>
|
</forward>
|
||||||
...
|
...
|
||||||
</pre>
|
</pre>
|
||||||
Additionally, <span class="since">since 0.9.10</span>, libvirt
|
<p>
|
||||||
allows a shorthand for specifying all virtual interfaces
|
<span class="since">since 0.10.0</span>,
|
||||||
associated with a single physical function, by using
|
<code><interface></code> also has an optional read-only
|
||||||
the <code><pf></code> subelement to call out the
|
attribute - when examining the live configuration of a
|
||||||
corresponding physical interface associated with multiple
|
network, the attribute <code>connections</code>, if present,
|
||||||
virtual interfaces:
|
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>
|
<pre>
|
||||||
...
|
...
|
||||||
<forward mode='passthrough'>
|
<forward mode='passthrough'>
|
||||||
|
@ -12,6 +12,11 @@
|
|||||||
<define name="network">
|
<define name="network">
|
||||||
|
|
||||||
<element name="network">
|
<element name="network">
|
||||||
|
<optional>
|
||||||
|
<attribute name="connections">
|
||||||
|
<data type="unsignedInt"/>
|
||||||
|
</attribute>
|
||||||
|
</optional>
|
||||||
<interleave>
|
<interleave>
|
||||||
|
|
||||||
<!-- The name of the network, used to refer to it through the API
|
<!-- The name of the network, used to refer to it through the API
|
||||||
@ -91,6 +96,11 @@
|
|||||||
<attribute name='dev'>
|
<attribute name='dev'>
|
||||||
<ref name='deviceName'/>
|
<ref name='deviceName'/>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
<optional>
|
||||||
|
<attribute name="connections">
|
||||||
|
<data type="unsignedInt"/>
|
||||||
|
</attribute>
|
||||||
|
</optional>
|
||||||
</element>
|
</element>
|
||||||
</zeroOrMore>
|
</zeroOrMore>
|
||||||
<optional>
|
<optional>
|
||||||
|
@ -1463,7 +1463,11 @@ char *virNetworkDefFormat(const virNetworkDefPtr def, unsigned int flags)
|
|||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
int ii;
|
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);
|
virBufferEscapeString(&buf, " <name>%s</name>\n", def->name);
|
||||||
|
|
||||||
uuid = def->uuid;
|
uuid = def->uuid;
|
||||||
|
@ -156,6 +156,7 @@ struct _virNetworkDef {
|
|||||||
unsigned char uuid[VIR_UUID_BUFLEN];
|
unsigned char uuid[VIR_UUID_BUFLEN];
|
||||||
bool uuid_specified;
|
bool uuid_specified;
|
||||||
char *name;
|
char *name;
|
||||||
|
int connections; /* # of guest interfaces connected to this network */
|
||||||
|
|
||||||
char *bridge; /* Name of bridge device */
|
char *bridge; /* Name of bridge device */
|
||||||
char *domain;
|
char *domain;
|
||||||
|
@ -3005,6 +3005,10 @@ networkAllocateActualDevice(virDomainNetDefPtr iface)
|
|||||||
VIR_DEBUG("Using physical device %s, %d connections",
|
VIR_DEBUG("Using physical device %s, %d connections",
|
||||||
dev->dev, dev->connections);
|
dev->dev, dev->connections);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
netdef->connections++;
|
||||||
|
VIR_DEBUG("Using network %s, %d connections",
|
||||||
|
netdef->name, netdef->connections);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
for (ii = 0; ii < num_virt_fns; ii++)
|
for (ii = 0; ii < num_virt_fns; ii++)
|
||||||
@ -3117,6 +3121,9 @@ networkNotifyActualDevice(virDomainNetDefPtr iface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
success:
|
success:
|
||||||
|
netdef->connections++;
|
||||||
|
VIR_DEBUG("Using network %s, %d connections",
|
||||||
|
netdef->name, netdef->connections);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
if (network)
|
if (network)
|
||||||
@ -3205,6 +3212,9 @@ networkReleaseActualDevice(virDomainNetDefPtr iface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
success:
|
success:
|
||||||
|
netdef->connections--;
|
||||||
|
VIR_DEBUG("Releasing network %s, %d connections",
|
||||||
|
netdef->name, netdef->connections);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
if (network)
|
if (network)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user