On 09/15/14 10:48, Francesco Romani wrote:
This patch implements the VIR_DOMAIN_STATS_INTERFACE
group of statistics.
Signed-off-by: Francesco Romani <fromani(a)redhat.com>
---
include/libvirt/libvirt.h.in | 1 +
src/libvirt.c | 14 +++++++
src/qemu/qemu_driver.c | 89 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 104 insertions(+)
+static int
+qemuDomainGetStatsInterface(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
+ virDomainObjPtr dom,
+ virDomainStatsRecordPtr record,
+ int *maxparams,
+ unsigned int privflags ATTRIBUTE_UNUSED)
+{
+ size_t i;
+ struct _virDomainInterfaceStats tmp;
+
+ QEMU_ADD_COUNT_PARAM(record, maxparams, "net", dom->def->nnets);
+
+ /* Check the path is one of the domain's network interfaces. */
+ for (i = 0; i < dom->def->nnets; i++) {
+ memset(&tmp, 0, sizeof(tmp));
+
+ if (virNetInterfaceStats(dom->def->nets[i]->ifname, &tmp) < 0)
{
+ virResetLastError();
+ continue;
+ }
We could change the order of these two lines, so that we at least get a
list of interfaces in case the stats are not available.
+
+ QEMU_ADD_NAME_PARAM(record, maxparams,
+ "net", i, dom->def->nets[i]->ifname);
+
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "rx.bytes", tmp.rx_bytes);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "rx.pkts", tmp.rx_packets);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "rx.errs", tmp.rx_errs);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "rx.drop", tmp.rx_drop);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "tx.bytes", tmp.tx_bytes);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "tx.pkts", tmp.tx_packets);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "tx.errs", tmp.tx_errs);
+ QEMU_ADD_NET_PARAM(record, maxparams, i,
+ "tx.drop", tmp.tx_drop);
+ }
+
+ return 0;
+}
+
+#undef QEMU_ADD_NET_PARAM
+
+#undef QEMU_ADD_NAME_PARAM
+
+#undef QEMU_ADD_COUNT_PARAM
typedef int
(*qemuDomainGetStatsFunc)(virQEMUDriverPtr driver,
ACK with the change, although we should add docs that state that stats
groups that return "arrays" of stats may have individual elements
missing in case stats are not available.
Peter