diff options
author | jtc <jtc@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2008-06-13 13:54:06 +0000 |
---|---|---|
committer | jtc <jtc@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2008-06-13 13:54:06 +0000 |
commit | 0a743a69242fab662b66eb12fd6d1376881b3b99 (patch) | |
tree | 3c6e54d492376eb664b8f901c9f2ee9cda3d5932 | |
parent | 0b367a2cc1e37d7401183dd2377192754bc2a1c7 (diff) | |
download | ATCD-0a743a69242fab662b66eb12fd6d1376881b3b99.tar.gz |
ChangeLogTag: Fri Jun 13 13:40:39 UTC 2008 J.T. Conklin <jtc@acorntoolworks.com>
-rw-r--r-- | ACE/ChangeLog | 25 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp | 86 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/BSD_Network_Interface_Monitor.h | 63 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Bytes_Received_Monitor.cpp | 2 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Bytes_Received_Monitor.h | 4 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Bytes_Sent_Monitor.cpp | 2 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Bytes_Sent_Monitor.h | 4 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Makefile.am | 4 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Packets_Received_Monitor.cpp | 2 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Packets_Received_Monitor.h | 4 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Packets_Sent_Monitor.cpp | 2 | ||||
-rw-r--r-- | ACE/ace/Monitor_Control/Packets_Sent_Monitor.h | 4 |
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: |