summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-07-07 22:25:01 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-07-07 22:25:01 +0000
commit3b20263e347f469d811dbf69473c59ff71fdc318 (patch)
tree9e1256e2c88d8f151615c6ccdadb8aba1a489d4b
parent24c018e5ac6a7d06c12cb8ee861b01a42d804fd7 (diff)
downloadATCD-3b20263e347f469d811dbf69473c59ff71fdc318.tar.gz
ChangeLogTag: Tue Jul 7 22:21:03 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--ACE/ChangeLog22
-rw-r--r--ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp4
-rw-r--r--ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp4
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Received_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.cpp125
-rw-r--r--ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h71
-rw-r--r--ACE/ace/Monitor_Control/Monitor_Control.mpc1
-rw-r--r--ACE/ace/Monitor_Control/Packets_Received_Monitor.h4
-rw-r--r--ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp4
-rw-r--r--ACE/ace/Monitor_Control/Packets_Sent_Monitor.h4
12 files changed, 241 insertions, 10 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index c63fd77186f..158acd62191 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,25 @@
+Tue Jul 7 22:21:03 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.cpp:
+ * ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h:
+
+ New files, defining a monitor for FreeBSD.
+
+ * ace/Monitor_Control/Bytes_Received_Monitor.cpp:
+ * ace/Monitor_Control/BSD_Network_Interface_Monitor.h:
+ * ace/Monitor_Control/Monitor_Control.mpc:
+ * ace/Monitor_Control/Bytes_Sent_Monitor.h:
+ * ace/Monitor_Control/Packets_Sent_Monitor.h:
+ * ace/Monitor_Control/Bytes_Received_Monitor.h:
+ * ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp:
+ * ace/Monitor_Control/Packets_Received_Monitor.h:
+ * ace/Monitor_Control/Packets_Sent_Monitor.cpp:
+
+ New files added to MPC project and existing monitors
+ patched with NetBSD/OpenBSD-related changes. Thanks to
+ Boyan Kasarov <bkasarov at gmail dot com> for submitting
+ these changes.
+
Tue Jul 7 12:57:30 UTC 2009 Olli Savia <ops@iki.fi>
* ace/FoxReactor/FoxReactor.cpp:
diff --git a/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp
index 8f6b3564da0..3d9d191a797 100644
--- a/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp
@@ -2,7 +2,7 @@
#include "ace/Monitor_Control/BSD_Network_Interface_Monitor.h"
-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#if defined (__NetBSD__) || defined (__OpenBSD__)
#include "ace/Log_Msg.h"
#include "ace/OS_NS_stdio.h"
@@ -119,4 +119,4 @@ namespace ACE
ACE_END_VERSIONED_NAMESPACE_DECL
-#endif /* defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) */
+#endif /* 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
index 19a8e7c2fbc..d9c1944599b 100644
--- a/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h
+++ b/ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h
@@ -23,7 +23,7 @@
#include "ace/Monitor_Control/Monitor_Control_export.h"
-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#if defined (__NetBSD__) || defined (__OpenBSD__)
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
@@ -63,7 +63,7 @@ namespace ACE
ACE_END_VERSIONED_NAMESPACE_DECL
-#endif /* defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) */
+#endif /* defined (__NetBSD__) || defined (__OpenBSD__) */
#include /**/ "ace/post.h"
diff --git a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp
index dc951403f47..9fdc1e0ce0c 100644
--- a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp
@@ -24,8 +24,10 @@ namespace ACE
/// Scan format for /proc/net/dev
#elif defined (ACE_HAS_KSTAT)
, Solaris_Network_Interface_Monitor (ACE_TEXT ("rbytes"))
-#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__)
, BSD_Network_Interface_Monitor (ACE_TEXT ("ibytes"))
+#elif defined (__FreeBSD__)
+ , FreeBSD_Network_Interface_Monitor (ACE_TEXT ("ibytes"))
#endif
{}
diff --git a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h
index 88b54a5c604..cbb188b92f7 100644
--- a/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h
+++ b/ACE/ace/Monitor_Control/Bytes_Received_Monitor.h
@@ -56,8 +56,10 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
-#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__)
, public BSD_Network_Interface_Monitor
+#elif defined (__FreeBSD__)
+ , public FreeBSD_Network_Interface_Monitor
#else
, public Null_Network_Interface_Monitor
#endif
diff --git a/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h b/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h
index 7f894093742..d25346a6e14 100644
--- a/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h
+++ b/ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h
@@ -56,8 +56,10 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
-#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__)
, public BSD_Network_Interface_Monitor
+#elif defined (__FreeBSD__)
+ , public FreeBSD_Network_Interface_Monitor
#else
, public Null_Network_Interface_Monitor
#endif
diff --git a/ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.cpp b/ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.cpp
new file mode 100644
index 00000000000..6c163bcb50b
--- /dev/null
+++ b/ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.cpp
@@ -0,0 +1,125 @@
+// $Id$
+
+#include "ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h"
+
+#if defined (__FreeBSD__)
+
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_stdio.h"
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <sys/time.h>
+#include <net/if.h>
+#include <net/if_mib.h>
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+namespace ACE
+{
+ namespace Monitor_Control
+ {
+ FreeBSD_Network_Interface_Monitor::FreeBSD_Network_Interface_Monitor (
+ const ACE_TCHAR *lookup_str)
+ : value_ (0UL),
+ start_ (0UL),
+ lookup_str_ (lookup_str)
+ {
+ this->init();
+ }
+
+ void
+ FreeBSD_Network_Interface_Monitor::update_i (void)
+ {
+ this->fetch(this->value_);
+ this->value_ -= this->start_;
+ }
+
+ void
+ FreeBSD_Network_Interface_Monitor::clear_impl (void)
+ {
+ this->init();
+ }
+
+ void
+ FreeBSD_Network_Interface_Monitor::init (void)
+ {
+ this->fetch(this->start_);
+ this->value_ = 0UL;
+ }
+
+ void
+ FreeBSD_Network_Interface_Monitor::fetch (ACE_UINT64& value) const
+ {
+ ACE_UINT64 count = 0;
+
+ int req_name[5];
+ int ifcount;
+ size_t ifcount_len = sizeof(ifcount);
+
+ req_name[0] = CTL_NET;
+ req_name[1] = PF_LINK;
+ req_name[2] = NETLINK_GENERIC;
+ req_name[3] = IFMIB_SYSTEM;
+ req_name[4] = IFMIB_IFCOUNT;
+
+ if (::sysctl(req_name, 5, &ifcount, &ifcount_len, (void *)0, 0) == -1)
+ {
+ ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) %p\n"),
+ ACE_TEXT("sysctl failed")));
+
+ return;
+ }
+
+ for (int i = 1; i <= ifcount; i++)
+ {
+ int name[6];
+ struct ifmibdata ifmd;
+ size_t len = sizeof(ifmd);
+
+ name[0] = CTL_NET;
+ name[1] = PF_LINK;
+ name[2] = NETLINK_GENERIC;
+ name[3] = IFMIB_IFDATA;
+ name[4] = i;
+ name[5] = IFDATA_GENERAL;
+
+ if(::sysctl(name, 6, &ifmd, &len, (void *)0, 0) == -1)
+ {
+ ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) %p\n"),
+ ACE_TEXT("sysctl failed")));
+
+ break;
+ }
+
+ struct if_data * const ifi = &ifmd.ifmd_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;
+ }
+
+ } // for
+
+ value = count;
+ }
+ }
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#endif /* defined (__FreeBSD__) */
+
diff --git a/ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h b/ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h
new file mode 100644
index 00000000000..7f3cb04c9e7
--- /dev/null
+++ b/ACE/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h
@@ -0,0 +1,71 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file BSD_Network_Interface_Monitor.h
+ *
+ * $Id$
+ *
+ * @author Boyan Kasarov
+ */
+//=============================================================================
+
+#ifndef FREEBSD_NETWORK_INTERFACE_MONITOR_H
+#define FREEBSD_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__)
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+namespace ACE
+{
+ namespace Monitor_Control
+ {
+ /**
+ * @class FreeBSD_Network_Interface_Monitor
+ *
+ * @brief Mixin class for network interface monitors compiled on
+ * FreeBSD machines.
+ */
+ class MONITOR_CONTROL_Export FreeBSD_Network_Interface_Monitor
+ {
+ protected:
+ FreeBSD_Network_Interface_Monitor (const ACE_TCHAR *lookup_str);
+
+ /// Platform-specific implementation.
+ void update_i (void);
+
+ /// Platform-specific reset.
+ void clear_impl (void);
+
+ protected:
+ ACE_UINT64 value_;
+
+ private:
+ void init (void);
+ void fetch (ACE_UINT64& value) const;
+
+ ACE_UINT64 start_;
+ ACE_CString lookup_str_;
+ };
+ }
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#endif /* defined (__FreeBSD__) */
+
+#include /**/ "ace/post.h"
+
+#endif // FREEBSD_NETWORK_INTERFACE_MONITOR_H
+
diff --git a/ACE/ace/Monitor_Control/Monitor_Control.mpc b/ACE/ace/Monitor_Control/Monitor_Control.mpc
index 3efb0bae9a6..47ce67beba7 100644
--- a/ACE/ace/Monitor_Control/Monitor_Control.mpc
+++ b/ACE/ace/Monitor_Control/Monitor_Control.mpc
@@ -14,6 +14,7 @@ project(Monitor_Control) : acelib, ace_etcl_parser, ace_output, install {
Constraint_Interpreter.cpp
Constraint_Visitor.cpp
CPU_Load_Monitor.cpp
+ FreeBSD_Network_Interface_Monitor.cpp
Linux_Network_Interface_Monitor.cpp
Memory_Usage_Monitor.cpp
Monitor_Group.cpp
diff --git a/ACE/ace/Monitor_Control/Packets_Received_Monitor.h b/ACE/ace/Monitor_Control/Packets_Received_Monitor.h
index b4e7c4a2654..7edbff58439 100644
--- a/ACE/ace/Monitor_Control/Packets_Received_Monitor.h
+++ b/ACE/ace/Monitor_Control/Packets_Received_Monitor.h
@@ -56,8 +56,10 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
-#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__)
, public BSD_Network_Interface_Monitor
+#elif defined (__FreeBSD__)
+ , public FreeBSD_Network_Interface_Monitor
#else
, public Null_Network_Interface_Monitor
#endif
diff --git a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp
index 6dc7f62f99e..8c1ef6831ea 100644
--- a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp
+++ b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp
@@ -24,8 +24,10 @@ namespace ACE
/// Scan format for /proc/net/dev
#elif defined (ACE_HAS_KSTAT)
, Solaris_Network_Interface_Monitor (ACE_TEXT ("opackets"))
-#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__)
, BSD_Network_Interface_Monitor (ACE_TEXT ("opackets"))
+#elif defined (__FreeBSD__)
+ , FreeBSD_Network_Interface_Monitor (ACE_TEXT ("opackets"))
#endif
{}
diff --git a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h
index 0db9549051f..b8494a6b166 100644
--- a/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h
+++ b/ACE/ace/Monitor_Control/Packets_Sent_Monitor.h
@@ -56,8 +56,10 @@ namespace ACE
, public Linux_Network_Interface_Monitor
#elif defined (ACE_HAS_KSTAT)
, public Solaris_Network_Interface_Monitor
-#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__)
, public BSD_Network_Interface_Monitor
+#elif defined (__FreeBSD__)
+ , public FreeBSD_Network_Interface_Monitor
#else
, public Null_Network_Interface_Monitor
#endif