src/util/virsexpr.c
src/util/virscsi.c
src/util/virsocketaddr.c
-src/util/virstatslinux.c
+src/util/virstats.c
src/util/virstorageencryption.c
src/util/virstoragefile.c
src/util/virstring.c
util/virseclabel.c util/virseclabel.h \
util/virsexpr.c util/virsexpr.h \
util/virsocketaddr.h util/virsocketaddr.c \
- util/virstatslinux.c util/virstatslinux.h \
+ util/virstats.c util/virstats.h \
util/virstorageencryption.c util/virstorageencryption.h \
util/virstoragefile.c util/virstoragefile.h \
util/virstring.h util/virstring.c \
linuxNodeGetCPUStats;
linuxNodeInfoCPUPopulate;
-# util/virstatslinux.h
-linuxDomainInterfaceStats;
-
# Let emacs know we want case-insensitive sorting
# Local Variables:
# sort-fold-case: t
virSocketAddrSetIPv4Addr;
virSocketAddrSetPort;
+# util/virstats.h
+virNetInterfaceStats;
# util/virstorageencryption.h
virStorageEncryptionFormat;
#include "virnetdevveth.h"
#include "nodeinfo.h"
#include "viruuid.h"
-#include "virstatslinux.h"
+#include "virstats.h"
#include "virhook.h"
#include "virfile.h"
#include "virpidfile.h"
}
if (ret == 0)
- ret = linuxDomainInterfaceStats(path, stats);
+ ret = virNetInterfaceStats(path, stats);
else
virReportError(VIR_ERR_INVALID_ARG,
_("Invalid path, '%s' is not a known interface"), path);
#include "virlog.h"
#include "vircommand.h"
#include "viruri.h"
-#include "virstatslinux.h"
+#include "virstats.h"
#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_OPENVZ
}
if (ret == 0)
- ret = linuxDomainInterfaceStats(path, stats);
+ ret = virNetInterfaceStats(path, stats);
else
virReportError(VIR_ERR_INVALID_ARG,
_("invalid path, '%s' is not a known interface"), path);
#include "datatypes.h"
#include "virbuffer.h"
#include "nodeinfo.h"
-#include "virstatslinux.h"
+#include "virstats.h"
#include "capabilities.h"
#include "viralloc.h"
#include "viruuid.h"
return ret;
}
-#ifdef __linux__
static int
qemuDomainInterfaceStats(virDomainPtr dom,
const char *path,
}
if (ret == 0)
- ret = linuxDomainInterfaceStats(path, stats);
+ ret = virNetInterfaceStats(path, stats);
else
virReportError(VIR_ERR_INVALID_ARG,
_("invalid path, '%s' is not a known interface"), path);
virObjectUnlock(vm);
return ret;
}
-#else
-static int
-qemuDomainInterfaceStats(virDomainPtr dom ATTRIBUTE_UNUSED,
- const char *path ATTRIBUTE_UNUSED,
- struct _virDomainInterfaceStats *stats ATTRIBUTE_UNUSED)
-{
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("interface stats not implemented on this platform"));
- return -1;
-}
-#endif
static int
qemuDomainSetInterfaceParameters(virDomainPtr dom,
#include "uml_conf.h"
#include "virbuffer.h"
#include "nodeinfo.h"
-#include "virstatslinux.h"
+#include "virstats.h"
#include "capabilities.h"
#include "viralloc.h"
#include "viruuid.h"
--- /dev/null
+/*
+ * virstats.c: Block and network stats.
+ *
+ * Copyright (C) 2007-2010 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Richard W.M. Jones <rjones@redhat.com>
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <regex.h>
+
+#include "virerror.h"
+#include "datatypes.h"
+#include "virstats.h"
+#include "viralloc.h"
+#include "virfile.h"
+
+#define VIR_FROM_THIS VIR_FROM_STATS_LINUX
+
+
+/*-------------------- interface stats --------------------*/
+/* Just reads the named interface, so not Xen or QEMU-specific.
+ * NB. Caller must check that libvirt user is trying to query
+ * the interface of a domain they own. We do no such checking.
+ */
+#ifdef __linux__
+int
+virNetInterfaceStats(const char *path,
+ struct _virDomainInterfaceStats *stats)
+{
+ int path_len;
+ FILE *fp;
+ char line[256], *colon;
+
+ fp = fopen("/proc/net/dev", "r");
+ if (!fp) {
+ virReportSystemError(errno, "%s",
+ _("Could not open /proc/net/dev"));
+ return -1;
+ }
+
+ path_len = strlen(path);
+
+ while (fgets(line, sizeof(line), fp)) {
+ long long dummy;
+ long long rx_bytes;
+ long long rx_packets;
+ long long rx_errs;
+ long long rx_drop;
+ long long tx_bytes;
+ long long tx_packets;
+ long long tx_errs;
+ long long tx_drop;
+
+ /* The line looks like:
+ * " eth0:..."
+ * Split it at the colon.
+ */
+ colon = strchr(line, ':');
+ if (!colon) continue;
+ *colon = '\0';
+ if (colon-path_len >= line &&
+ STREQ(colon-path_len, path)) {
+ /* IMPORTANT NOTE!
+ * /proc/net/dev vif<domid>.nn sees the network from the point
+ * of view of dom0 / hypervisor. So bytes TRANSMITTED by dom0
+ * are bytes RECEIVED by the domain. That's why the TX/RX fields
+ * appear to be swapped here.
+ */
+ if (sscanf(colon+1,
+ "%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld",
+ &tx_bytes, &tx_packets, &tx_errs, &tx_drop,
+ &dummy, &dummy, &dummy, &dummy,
+ &rx_bytes, &rx_packets, &rx_errs, &rx_drop,
+ &dummy, &dummy, &dummy, &dummy) != 16)
+ continue;
+
+ stats->rx_bytes = rx_bytes;
+ stats->rx_packets = rx_packets;
+ stats->rx_errs = rx_errs;
+ stats->rx_drop = rx_drop;
+ stats->tx_bytes = tx_bytes;
+ stats->tx_packets = tx_packets;
+ stats->tx_errs = tx_errs;
+ stats->tx_drop = tx_drop;
+ VIR_FORCE_FCLOSE(fp);
+
+ return 0;
+ }
+ }
+ VIR_FORCE_FCLOSE(fp);
+
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("/proc/net/dev: Interface not found"));
+ return -1;
+}
+#else
+int
+virNetInterfaceStats(const char *path ATTRIBUTE_UNUSED,
+ struct _virDomainInterfaceStats *stats ATTRIBUTE_UNUSED)
+{
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("interface stats not implemented on this platform"));
+ return -1;
+}
+
+#endif /* __linux__ */
--- /dev/null
+/*
+ * virstats.h: Block and network stats.
+ *
+ * Copyright (C) 2007 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Richard W.M. Jones <rjones@redhat.com>
+ */
+
+#ifndef __STATS_LINUX_H__
+# define __STATS_LINUX_H__
+
+# include "internal.h"
+
+extern int virNetInterfaceStats(const char *path,
+ struct _virDomainInterfaceStats *stats);
+
+#endif /* __STATS_LINUX_H__ */
+++ /dev/null
-/*
- * virstatslinux.c: Linux block and network stats.
- *
- * Copyright (C) 2007-2010 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * Richard W.M. Jones <rjones@redhat.com>
- */
-
-#include <config.h>
-
-/* This file only applies on Linux. */
-#ifdef __linux__
-
-# include <stdio.h>
-# include <stdlib.h>
-# include <fcntl.h>
-# include <string.h>
-# include <unistd.h>
-# include <regex.h>
-
-# include "virerror.h"
-# include "datatypes.h"
-# include "virstatslinux.h"
-# include "viralloc.h"
-# include "virfile.h"
-
-# define VIR_FROM_THIS VIR_FROM_STATS_LINUX
-
-
-/*-------------------- interface stats --------------------*/
-/* Just reads the named interface, so not Xen or QEMU-specific.
- * NB. Caller must check that libvirt user is trying to query
- * the interface of a domain they own. We do no such checking.
- */
-
-int
-linuxDomainInterfaceStats(const char *path,
- struct _virDomainInterfaceStats *stats)
-{
- int path_len;
- FILE *fp;
- char line[256], *colon;
-
- fp = fopen("/proc/net/dev", "r");
- if (!fp) {
- virReportSystemError(errno, "%s",
- _("Could not open /proc/net/dev"));
- return -1;
- }
-
- path_len = strlen(path);
-
- while (fgets(line, sizeof(line), fp)) {
- long long dummy;
- long long rx_bytes;
- long long rx_packets;
- long long rx_errs;
- long long rx_drop;
- long long tx_bytes;
- long long tx_packets;
- long long tx_errs;
- long long tx_drop;
-
- /* The line looks like:
- * " eth0:..."
- * Split it at the colon.
- */
- colon = strchr(line, ':');
- if (!colon) continue;
- *colon = '\0';
- if (colon-path_len >= line &&
- STREQ(colon-path_len, path)) {
- /* IMPORTANT NOTE!
- * /proc/net/dev vif<domid>.nn sees the network from the point
- * of view of dom0 / hypervisor. So bytes TRANSMITTED by dom0
- * are bytes RECEIVED by the domain. That's why the TX/RX fields
- * appear to be swapped here.
- */
- if (sscanf(colon+1,
- "%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld",
- &tx_bytes, &tx_packets, &tx_errs, &tx_drop,
- &dummy, &dummy, &dummy, &dummy,
- &rx_bytes, &rx_packets, &rx_errs, &rx_drop,
- &dummy, &dummy, &dummy, &dummy) != 16)
- continue;
-
- stats->rx_bytes = rx_bytes;
- stats->rx_packets = rx_packets;
- stats->rx_errs = rx_errs;
- stats->rx_drop = rx_drop;
- stats->tx_bytes = tx_bytes;
- stats->tx_packets = tx_packets;
- stats->tx_errs = tx_errs;
- stats->tx_drop = tx_drop;
- VIR_FORCE_FCLOSE(fp);
-
- return 0;
- }
- }
- VIR_FORCE_FCLOSE(fp);
-
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("/proc/net/dev: Interface not found"));
- return -1;
-}
-
-#endif /* __linux__ */
+++ /dev/null
-/*
- * virstatslinux.h: Linux block and network stats.
- *
- * Copyright (C) 2007 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * Richard W.M. Jones <rjones@redhat.com>
- */
-
-#ifndef __STATS_LINUX_H__
-# define __STATS_LINUX_H__
-
-# ifdef __linux__
-
-# include "internal.h"
-
-extern int linuxDomainInterfaceStats(const char *path,
- struct _virDomainInterfaceStats *stats);
-
-# endif /* __linux__ */
-
-#endif /* __STATS_LINUX_H__ */
#include "xen_driver.h"
#include "xen_hypervisor.h"
#include "xs_internal.h"
-#include "virstatslinux.h"
+#include "virstats.h"
#include "block_stats.h"
#include "xend_internal.h"
#include "virbuffer.h"
return -1;
}
- return linuxDomainInterfaceStats(path, stats);
+ return virNetInterfaceStats(path, stats);
#else
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("/proc/net/dev: Interface not found"));
#include <string.h>
#include <sys/utsname.h>
-#include "virstatslinux.h"
+#include "virstats.h"
#include "internal.h"
#include "xen/block_stats.h"
#include "testutils.h"