summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjtc <jtc@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2008-06-13 13:54:06 +0000
committerjtc <jtc@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2008-06-13 13:54:06 +0000
commit0a743a69242fab662b66eb12fd6d1376881b3b99 (patch)
tree3c6e54d492376eb664b8f901c9f2ee9cda3d5932
parent0b367a2cc1e37d7401183dd2377192754bc2a1c7 (diff)
downloadATCD-0a743a69242fab662b66eb12fd6d1376881b3b99.tar.gz
ChangeLogTag: Fri Jun 13 13:40:39 UTC 2008 J.T. Conklin <jtc@acorntoolworks.com>
-rw-r--r--ACE/ChangeLog25
-rw-r--r--ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp86
-rw-r--r--ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h63
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp2
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Received_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Sent_Monitor.cpp2
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/Makefile.am4
-rw-r--r--ACE/ace/Monitor_Control/Packets_Received_Monitor.cpp2
-rw-r--r--ACE/ace/Monitor_Control/Packets_Received_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp2
-rw-r--r--ACE/ace/Monitor_Control/Packets_Sent_Monitor.h4
12 files changed, 202 insertions, 0 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index d4b2ad062ad..1c173023c2d 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,28 @@
+Fri Jun 13 13:40:39 UTC 2008 J.T. Conklin <jtc@acorntoolworks.com>
+
+ * ace/Monitor_Control/Makefile.am:
+
+ Add BSD_Network_Interface_Monitor.cpp and
+ Solaris_Network_Interface_Monitor.cpp to Headers_File section.
+
+ * ace/Monitor_Control/Bytes_Received_Monitor.cpp:
+ * ace/Monitor_Control/Bytes_Received_Monitor.h:
+ * ace/Monitor_Control/Bytes_Sent_Monitor.cpp:
+ * ace/Monitor_Control/Bytes_Sent_Monitor.h:
+ * ace/Monitor_Control/Packets_Received_Monitor.cpp:
+ * ace/Monitor_Control/Packets_Received_Monitor.h:
+ * ace/Monitor_Control/Packets_Sent_Monitor.cpp:
+ * ace/Monitor_Control/Packets_Sent_Monitor.h:
+
+ Inherit from BSD_Network_Interface_Monitor on FreeBSD,
+ NetBSD, and OpenBSD systems.
+
+ * ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp:
+ * ace/Monitor_Control/BSD_Network_Interface_Monitor.h:
+
+ New files, network interface monitor for systems with 4.4BSD
+ derived network stack.
+
Fri Jun 13 13:24:11 UTC 2008 Jeff Parsons <j.parsons@vanderbilt.edu>
* ace/Monitor_Control/Linux_Network_Interface_Monitor.cpp:
diff --git a/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp
new file mode 100644
index 00000000000..688588941cd
--- /dev/null
+++ b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp
@@ -0,0 +1,86 @@
+// $Id$
+
+#include "ace/Monitor_Control/BSD_Network_Interface_Monitor.h"
+
+#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_stdio.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <ifaddrs.h>
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+namespace ACE
+{
+ namespace Monitor_Control
+ {
+ BSD_Network_Interface_Monitor::BSD_Network_Interface_Monitor (
+ const ACE_TCHAR *lookup_str)
+ : value_ (0UL),
+ lookup_str_ (lookup_str)
+ {
+ }
+
+ void
+ BSD_Network_Interface_Monitor::update_i (void)
+ {
+ ACE_UINT64 count = 0;
+
+ int fd = socket (AF_INET, SOCK_DGRAM, 0);
+ if (fd == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("socket failed\n")));
+ return;
+ }
+
+ struct ifaddrs *ifa, *ifap;
+ if (getifaddrs (&ifap) < 0)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("getifaddrs failed\n")));
+ close (fd);
+ return;
+ }
+
+ char *p = NULL;
+ for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next)
+ {
+ if (p && strcmp (p, ifa->ifa_name) == 0)
+ continue;
+ p = ifa->ifa_name;
+
+ struct ifdatareq ifdr;
+ memset (&ifdr, 0, sizeof (ifdr));
+ strncpy (ifdr.ifdr_name, ifa->ifa_name, sizeof (ifdr));
+
+ if (ioctl (fd, SIOCGIFDATA, &ifdr) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("SIOCGIFDATA failed\n")));
+ }
+
+ struct if_data * const ifi = &ifdr.ifdr_data;
+
+ if (this->lookup_str_ == "ibytes") {
+ count += ifi->ifi_ibytes;
+ } else if (this->lookup_str_ == "ipackets") {
+ count += ifi->ifi_ipackets;
+ } else if (this->lookup_str_ == "obytes") {
+ count += ifi->ifi_obytes;
+ } else if (this->lookup_str_ == "opackets") {
+ count += ifi->ifi_opackets;
+ }
+ }
+
+ freeifaddrs (ifap);
+
+ close (fd);
+
+ value_ = count;
+ }
+ }
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#endif /* defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) */
diff --git a/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h
new file mode 100644
index 00000000000..639913bb81f
--- /dev/null
+++ b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file BSD_Network_Interface_Monitor.h
+ *
+ * $Id$
+ *
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef BSD_NETWORK_INTERFACE_MONITOR_H
+#define BSD_NETWORK_INTERFACE_MONITOR_H
+
+#include /**/ "ace/pre.h"
+
+#include "ace/SString.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Monitor_Control/Monitor_Control_export.h"
+
+#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+namespace ACE
+{
+ namespace Monitor_Control
+ {
+ /**
+ * @class BSD_Network_Interface_Monitor
+ *
+ * @brief Mixin class for network interface monitors compiled on
+ * *BSD machines.
+ */
+ class MONITOR_CONTROL_Export BSD_Network_Interface_Monitor
+ {
+ protected:
+ BSD_Network_Interface_Monitor (const ACE_TCHAR *lookup_str);
+
+ /// Platform-specific implementation.
+ void update_i (void);
+
+ protected:
+ ACE_UINT64 value_;
+
+ private:
+ ACE_CString lookup_str_;
+ };
+ }
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#endif /* defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) */
+
+#include /**/ "ace/post.h"
+
+#endif // BSD_NETWORK_INTERFACE_MONITOR_H
diff --git a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp
index d6b2f6704c7..31b4cd5d049 100644
--- a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp
@@ -24,6 +24,8 @@ namespace ACE
/// Scan format for /proc/net/dev
#elif defined (ACE_HAS_KSTAT)
, Solaris_Network_Interface_Monitor ("rbytes")
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , BSD_Network_Interface_Monitor ("ibytes")
#endif
{}
diff --git a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h
index d201de10c08..0deeb666ef9 100644
--- a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h
+++ b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h
@@ -29,6 +29,8 @@
#include "ace/Monitor_Control/Linux_Network_Interface_Monitor.h"
#elif defined (ACE_HAS_KSTAT)
#include "ace/Monitor_Control/Solaris_Network_Interface_Monitor.h"
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#include "ace/Monitor_Control/BSD_Network_Interface_Monitor.h"
#endif
#include "ace/Monitor_Control/Monitor_Control_export.h"
@@ -52,6 +54,8 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , public BSD_Network_Interface_Monitor
#endif
{
public:
diff --git a/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.cpp b/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.cpp
index d3a750053ba..aba31a77f8b 100644
--- a/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.cpp
@@ -24,6 +24,8 @@ namespace ACE
/// Scan format for /proc/net/dev
#elif defined (ACE_HAS_KSTAT)
, Solaris_Network_Interface_Monitor ("obytes")
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , BSD_Network_Interface_Monitor ("obytes")
#endif
{}
diff --git a/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h b/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h
index 9fc00ce92a8..3db5970744e 100644
--- a/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h
+++ b/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h
@@ -29,6 +29,8 @@
#include "ace/Monitor_Control/Linux_Network_Interface_Monitor.h"
#elif defined (ACE_HAS_KSTAT)
#include "ace/Monitor_Control/Solaris_Network_Interface_Monitor.h"
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#include "ace/Monitor_Control/BSD_Network_Interface_Monitor.h"
#endif
#include "ace/Monitor_Control/Monitor_Control_export.h"
@@ -52,6 +54,8 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , public BSD_Network_Interface_Monitor
#endif
{
public:
diff --git a/ACE/ace/Monitor_Control/Makefile.am b/ACE/ace/Monitor_Control/Makefile.am
index 1b0bc297280..8d6eb8ece99 100644
--- a/ACE/ace/Monitor_Control/Makefile.am
+++ b/ACE/ace/Monitor_Control/Makefile.am
@@ -27,6 +27,7 @@ libACE_Monitor_Control_la_CPPFLAGS = \
libACE_Monitor_Control_la_SOURCES = \
Auto_Update_Starter.cpp \
+ BSD_Network_Interface_Monitor.cpp \
Bytes_Received_Monitor.cpp \
Bytes_Sent_Monitor.cpp \
CPU_Load_Monitor.cpp \
@@ -39,6 +40,7 @@ libACE_Monitor_Control_la_SOURCES = \
Num_Threads_Monitor.cpp \
Packets_Received_Monitor.cpp \
Packets_Sent_Monitor.cpp \
+ Solaris_Network_Interface_Monitor.cpp \
Windows_Monitor.cpp \
Windows_Multi_Instance_Monitor.cpp
@@ -52,6 +54,7 @@ libACE_Monitor_Control_la_LIBADD = \
nobase_include_HEADERS = \
Auto_Update_Starter.h \
+ BSD_Network_Interface_Monitor.h \
Bytes_Received_Monitor.h \
Bytes_Sent_Monitor.h \
CPU_Load_Monitor.h \
@@ -67,6 +70,7 @@ nobase_include_HEADERS = \
Num_Threads_Monitor.h \
Packets_Received_Monitor.h \
Packets_Sent_Monitor.h \
+ Solaris_Network_Interface_Monitor.h \
Windows_Monitor.h \
Windows_Multi_Instance_Monitor.h
diff --git a/ACE/ace/Monitor_Control/Packets_Received_Monitor.cpp b/ACE/ace/Monitor_Control/Packets_Received_Monitor.cpp
index 9837d288171..4a3edc79615 100644
--- a/ACE/ace/Monitor_Control/Packets_Received_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/Packets_Received_Monitor.cpp
@@ -24,6 +24,8 @@ namespace ACE
/// Scan format for /proc/net/dev
#elif defined (ACE_HAS_KSTAT)
, Solaris_Network_Interface_Monitor ("ipackets")
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , BSD_Network_Interface_Monitor ("ipackets")
#endif
{}
diff --git a/ACE/ace/Monitor_Control/Packets_Received_Monitor.h b/ACE/ace/Monitor_Control/Packets_Received_Monitor.h
index b1b2b93bcdf..4db3269526f 100644
--- a/ACE/ace/Monitor_Control/Packets_Received_Monitor.h
+++ b/ACE/ace/Monitor_Control/Packets_Received_Monitor.h
@@ -29,6 +29,8 @@
#include "ace/Monitor_Control/Linux_Network_Interface_Monitor.h"
#elif defined (ACE_HAS_KSTAT)
#include "ace/Monitor_Control/Solaris_Network_Interface_Monitor.h"
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#include "ace/Monitor_Control/BSD_Network_Interface_Monitor.h"
#endif
#include "ace/Monitor_Control/Monitor_Control_export.h"
@@ -52,6 +54,8 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , public BSD_Network_Interface_Monitor
#endif
{
public:
diff --git a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp
index 7cf53c17913..afc500d3ce5 100644
--- a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp
@@ -24,6 +24,8 @@ namespace ACE
/// Scan format for /proc/net/dev
#elif defined (ACE_HAS_KSTAT)
, Solaris_Network_Interface_Monitor ("opackets")
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , BSD_Network_Interface_Monitor ("opackets")
#endif
{}
diff --git a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h
index ea8b8126c3f..4406f1e84d8 100644
--- a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h
+++ b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h
@@ -29,6 +29,8 @@
#include "ace/Monitor_Control/Linux_Network_Interface_Monitor.h"
#elif defined (ACE_HAS_KSTAT)
#include "ace/Monitor_Control/Solaris_Network_Interface_Monitor.h"
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#include "ace/Monitor_Control/BSD_Network_Interface_Monitor.h"
#endif
#include "ace/Monitor_Control/Monitor_Control_export.h"
@@ -52,6 +54,8 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
+#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+ , public BSD_Network_Interface_Monitor
#endif
{
public: