Merge branch 'collectd-4.5' into collectd-4.6
[collectd.git] / src / tcpconns.c
index 4772c7c..f576b68 100644 (file)
@@ -20,7 +20,8 @@
  **/
 
 /**
- * Code within `__OpenBSD__' blocks is provided under the following license:
+ * Code within `HAVE_LIBKVM_NLIST' blocks is provided under the following
+ * license:
  *
  * $collectd: parts of tcpconns.c, 2008/08/08 03:48:30 Michael Stapelberg $
  * $OpenBSD: inet.c,v 1.100 2007/06/19 05:28:30 ray Exp $
@@ -58,7 +59,7 @@
 #include "common.h"
 #include "plugin.h"
 
-#if !KERNEL_LINUX && !HAVE_SYSCTLBYNAME && !__OpenBSD__
+#if !KERNEL_LINUX && !HAVE_SYSCTLBYNAME && !HAVE_LIBKVM_NLIST
 # error "No applicable input method."
 #endif
 
@@ -94,7 +95,8 @@
 # include <netinet/tcp_var.h>
 /* #endif HAVE_SYSCTLBYNAME */
 
-#elif __OpenBSD__
+/* This is for OpenBSD and possibly NetBSD. */
+#elif HAVE_LIBKVM_NLIST
 # include <sys/queue.h>
 # include <sys/socket.h>
 # include <net/route.h>
 # include <arpa/inet.h>
 # include <nlist.h>
 # include <kvm.h>
-#endif /* __OpenBSD__ */
+#endif /* HAVE_LIBKVM_NLIST */
 
 #if KERNEL_LINUX
 static const char *tcp_state[] =
@@ -154,7 +156,7 @@ static const char *tcp_state[] =
 # define TCP_STATE_MAX 10
 /* #endif HAVE_SYSCTLBYNAME */
 
-#elif __OpenBSD__
+#elif HAVE_LIBKVM_NLIST
 static const char *tcp_state[] =
 {
   "CLOSED",
@@ -174,102 +176,10 @@ static kvm_t *kvmd;
 static u_long      inpcbtable_off = 0;
 struct inpcbtable *inpcbtable_ptr = NULL;
 
-#if 0
-static struct nlist nl[] = { /* {{{ */
-#define N_MBSTAT        0
-        { "_mbstat" },
-#define N_IPSTAT        1
-        { "_ipstat" },
-#define N_TCBTABLE      2
-        { "_tcbtable" },
-#define N_TCPSTAT       3
-        { "_tcpstat" },
-#define N_UDBTABLE      4
-        { "_udbtable" },
-#define N_UDPSTAT       5
-        { "_udpstat" },
-#define N_IFNET         6
-        { "_ifnet" },
-#define N_ICMPSTAT      7
-        { "_icmpstat" },
-#define N_RTSTAT        8
-        { "_rtstat" },
-#define N_UNIXSW        9
-        { "_unixsw" },
-#define N_RTREE         10
-        { "_rt_tables"},
-#define N_FILE          11
-        { "_file" },
-#define N_IGMPSTAT      12
-        { "_igmpstat" },
-#define N_MRTPROTO      13
-        { "_ip_mrtproto" },
-#define N_MRTSTAT       14
-        { "_mrtstat" },
-#define N_MFCHASHTBL    15
-        { "_mfchashtbl" },
-#define N_MFCHASH       16
-        { "_mfchash" },
-        { "_viftable" },
-#define N_AHSTAT        18
-        { "_ahstat"},
-#define N_ESPSTAT       19
-        { "_espstat"},
-#define N_IP4STAT       20
-        { "_ipipstat"},
-#define N_DDPSTAT       21
-        { "_ddpstat"},
-#define N_DDPCB         22
-        { "_ddpcb"},
-#define N_ETHERIPSTAT   23
-        { "_etheripstat"},
-#define N_IP6STAT       24
-        { "_ip6stat" },
-#define N_ICMP6STAT     25
-        { "_icmp6stat" },
-#define N_PIM6STAT      26
-        { "_pim6stat" },
-#define N_MRT6PROTO     27
-        { "_ip6_mrtproto" },
-#define N_MRT6STAT      28
-        { "_mrt6stat" },
-#define N_MF6CTABLE     29
-        { "_mf6ctable" },
-#define N_MIF6TABLE     30
-        { "_mif6table" },
-#define N_MBPOOL        31
-        { "_mbpool" },
-#define N_MCLPOOL       32
-        { "_mclpool" },
-#define N_IPCOMPSTAT    33
-        { "_ipcompstat" },
-#define N_RIP6STAT      34
-        { "_rip6stat" },
-#define N_CARPSTAT      35
-        { "_carpstats" },
-#define N_RAWIPTABLE    36
-        { "_rawcbtable" },
-#define N_RAWIP6TABLE   37
-        { "_rawin6pcbtable" },
-#define N_PFSYNCSTAT    38
-        { "_pfsyncstats" },
-#define N_PIMSTAT       39
-        { "_pimstat" },
-#define N_AF2RTAFIDX    40
-        { "_af2rtafidx" },
-#define N_RTBLIDMAX     41
-        { "_rtbl_id_max" },
-#define N_RTMASK        42
-        { "_mask_rnhead" },
-
-        { "" }
-}; /* }}} struct nlist nl[] */
-#endif /* 0 */
-
 # define TCP_STATE_LISTEN 1
 # define TCP_STATE_MIN 1
 # define TCP_STATE_MAX 10
-#endif /* __OpenBSD__ */
+#endif /* HAVE_LIBKVM_NLIST */
 
 #define PORT_COLLECT_LOCAL  0x01
 #define PORT_COLLECT_REMOTE 0x02
@@ -303,7 +213,6 @@ static void conn_submit_port_entry (port_entry_t *pe)
 
   vl.values = values;
   vl.values_len = 1;
-  vl.time = time (NULL);
   sstrncpy (vl.host, hostname_g, sizeof (vl.host));
   sstrncpy (vl.plugin, "tcpconns", sizeof (vl.plugin));
   sstrncpy (vl.type, "tcp_connections", sizeof (vl.type));
@@ -312,7 +221,7 @@ static void conn_submit_port_entry (port_entry_t *pe)
       || (pe->flags & PORT_COLLECT_LOCAL))
   {
     ssnprintf (vl.plugin_instance, sizeof (vl.plugin_instance),
-       "%hu-local", pe->port);
+       "%"PRIu16"-local", pe->port);
 
     for (i = 1; i <= TCP_STATE_MAX; i++)
     {
@@ -327,7 +236,7 @@ static void conn_submit_port_entry (port_entry_t *pe)
   if (pe->flags & PORT_COLLECT_REMOTE)
   {
     ssnprintf (vl.plugin_instance, sizeof (vl.plugin_instance),
-       "%hu-remote", pe->port);
+       "%"PRIu16"-remote", pe->port);
 
     for (i = 1; i <= TCP_STATE_MAX; i++)
     {
@@ -393,7 +302,7 @@ static void conn_reset_port_entry (void)
       port_entry_t *next = pe->next;
 
       DEBUG ("tcpconns plugin: Removing temporary entry "
-         "for listening port %hu", pe->port);
+         "for listening port %"PRIu16, pe->port);
 
       if (prev == NULL)
        port_list_head = next;
@@ -424,8 +333,8 @@ static int conn_handle_ports (uint16_t port_local, uint16_t port_remote, uint8_t
 #endif
      )
   {
-    NOTICE ("tcpconns plugin: Ignoring connection with unknown state 0x%02x.",
-       state);
+    NOTICE ("tcpconns plugin: Ignoring connection with "
+       "unknown state 0x%02"PRIx8".", state);
     return (-1);
   }
 
@@ -437,7 +346,7 @@ static int conn_handle_ports (uint16_t port_local, uint16_t port_remote, uint8_t
       pe->flags |= PORT_IS_LISTENING;
   }
 
-  DEBUG ("tcpconns plugin: Connection %hu <-> %hu (%s)",
+  DEBUG ("tcpconns plugin: Connection %"PRIu16" <-> %"PRIu16" (%s)",
       port_local, port_remote, tcp_state[state]);
 
   pe = conn_get_port_entry (port_local, 0 /* no create */);
@@ -531,8 +440,8 @@ static int conn_read_file (const char *file)
 #elif HAVE_SYSCTLBYNAME
 /* #endif HAVE_SYSCTLBYNAME */
 
-#elif __OpenBSD__
-#endif /* __OpenBSD__ */
+#elif HAVE_LIBKVM_NLIST
+#endif /* HAVE_LIBKVM_NLIST */
 
 static int conn_config (const char *key, const char *value)
 {
@@ -675,7 +584,8 @@ static int conn_read (void)
        && ((inp->inp_vflag & INP_IPV6) == 0))
       continue;
 
-    conn_handle_ports (inp->inp_lport, inp->inp_fport, tp->t_state);
+    conn_handle_ports (ntohs (inp->inp_lport), ntohs (inp->inp_fport),
+       tp->t_state);
   } /* for (in_ptr) */
 
   in_orig = NULL;
@@ -688,7 +598,7 @@ static int conn_read (void)
 } /* int conn_read */
 /* #endif HAVE_SYSCTLBYNAME */
 
-#elif __OpenBSD__
+#elif HAVE_LIBKVM_NLIST
 static int kread (u_long addr, void *buf, int size)
 {
   int status;
@@ -743,7 +653,6 @@ static int conn_init (void)
 
 static int conn_read (void)
 {
-  u_long off = nl[2].n_value;
   struct inpcbtable table;
   struct inpcb *head;
   struct inpcb *next;
@@ -787,7 +696,7 @@ static int conn_read (void)
 
   return (0);
 }
-#endif /* __OpenBSD__ */
+#endif /* HAVE_LIBKVM_NLIST */
 
 void module_register (void)
 {
@@ -797,7 +706,7 @@ void module_register (void)
        plugin_register_init ("tcpconns", conn_init);
 #elif HAVE_SYSCTLBYNAME
        /* no initialization */
-#elif __OpenBSD__
+#elif HAVE_LIBKVM_NLIST
        plugin_register_init ("tcpconns", conn_init);
 #endif
        plugin_register_read ("tcpconns", conn_read);