Tree wide: Reformat with clang-format.
[collectd.git] / src / interface.c
index c0021d3..b7c6f90 100644 (file)
 #include "utils_ignorelist.h"
 
 #if HAVE_SYS_TYPES_H
-#  include <sys/types.h>
+#include <sys/types.h>
 #endif
 
 /* One cannot include both. This sucks. */
 #if HAVE_LINUX_IF_H
-#  include <linux/if.h>
+#include <linux/if.h>
 #elif HAVE_NET_IF_H
-#  include <net/if.h>
+#include <net/if.h>
 #endif
 
 #if HAVE_LINUX_NETDEVICE_H
-#  include <linux/netdevice.h>
+#include <linux/netdevice.h>
 #endif
 #if HAVE_IFADDRS_H
-#  include <ifaddrs.h>
+#include <ifaddrs.h>
 #endif
 
 #if HAVE_STATGRAB_H
-# include <statgrab.h>
+#include <statgrab.h>
 #endif
 
 #if HAVE_PERFSTAT
-# include <sys/protosw.h>
-# include <libperfstat.h>
+#include <libperfstat.h>
+#include <sys/protosw.h>
 #endif
 
 /*
@@ -62,9 +62,9 @@
  * of the configure script. -octo
  */
 #if KERNEL_LINUX
-# if !COLLECT_GETIFADDRS
-#  undef HAVE_GETIFADDRS
-# endif /* !COLLECT_GETIFADDRS */
+#if !COLLECT_GETIFADDRS
+#undef HAVE_GETIFADDRS
+#endif /* !COLLECT_GETIFADDRS */
 #endif /* KERNEL_LINUX */
 
 #if HAVE_PERFSTAT
@@ -73,20 +73,18 @@ static int nif;
 static int pnif;
 #endif /* HAVE_PERFSTAT */
 
-#if !HAVE_GETIFADDRS && !KERNEL_LINUX && !HAVE_LIBKSTAT && !HAVE_LIBSTATGRAB && !HAVE_PERFSTAT
-# error "No applicable input method."
+#if !HAVE_GETIFADDRS && !KERNEL_LINUX && !HAVE_LIBKSTAT &&                     \
+    !HAVE_LIBSTATGRAB && !HAVE_PERFSTAT
+#error "No applicable input method."
 #endif
 
 /*
  * (Module-)Global variables
  */
-static const char *config_keys[] =
-{
-       "Interface",
-       "IgnoreSelected",
-       "ReportInactive",
+static const char *config_keys[] = {
+    "Interface", "IgnoreSelected", "ReportInactive",
 };
-static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
+static int config_keys_num = STATIC_ARRAY_SIZE(config_keys);
 
 static ignorelist_t *ignorelist = NULL;
 
@@ -100,320 +98,301 @@ static int numif = 0;
 static _Bool unique_name = 0;
 #endif /* HAVE_LIBKSTAT */
 
-static int interface_config (const char *key, const char *value)
-{
-       if (ignorelist == NULL)
-               ignorelist = ignorelist_create (/* invert = */ 1);
-
-       if (strcasecmp (key, "Interface") == 0)
-       {
-               ignorelist_add (ignorelist, value);
-       }
-       else if (strcasecmp (key, "IgnoreSelected") == 0)
-       {
-               int invert = 1;
-               if (IS_TRUE (value))
-                       invert = 0;
-               ignorelist_set_invert (ignorelist, invert);
-       }
-       else if (strcasecmp (key, "ReportInactive") == 0)
-               report_inactive = IS_TRUE (value);
-       else if (strcasecmp (key, "UniqueName") == 0)
-       {
-               #ifdef HAVE_LIBKSTAT
-               if (IS_TRUE (value))
-                       unique_name = 1;
-               #else
-                       WARNING ("interface plugin: the \"UniqueName\" option is only valid on Solaris.");
-               #endif /* HAVE_LIBKSTAT */
-       }
-       else
-       {
-               return (-1);
-       }
-
-       return (0);
+static int interface_config(const char *key, const char *value) {
+  if (ignorelist == NULL)
+    ignorelist = ignorelist_create(/* invert = */ 1);
+
+  if (strcasecmp(key, "Interface") == 0) {
+    ignorelist_add(ignorelist, value);
+  } else if (strcasecmp(key, "IgnoreSelected") == 0) {
+    int invert = 1;
+    if (IS_TRUE(value))
+      invert = 0;
+    ignorelist_set_invert(ignorelist, invert);
+  } else if (strcasecmp(key, "ReportInactive") == 0)
+    report_inactive = IS_TRUE(value);
+  else if (strcasecmp(key, "UniqueName") == 0) {
+#ifdef HAVE_LIBKSTAT
+    if (IS_TRUE(value))
+      unique_name = 1;
+#else
+    WARNING("interface plugin: the \"UniqueName\" option is only valid on "
+            "Solaris.");
+#endif /* HAVE_LIBKSTAT */
+  } else {
+    return (-1);
+  }
+
+  return (0);
 }
 
 #if HAVE_LIBKSTAT
-static int interface_init (void)
-{
-       kstat_t *ksp_chain;
-
-       numif = 0;
-
-       if (kc == NULL)
-               return (-1);
-
-       for (numif = 0, ksp_chain = kc->kc_chain;
-                       (numif < MAX_NUMIF) && (ksp_chain != NULL);
-                       ksp_chain = ksp_chain->ks_next)
-       {
-               if (strncmp (ksp_chain->ks_class, "net", 3))
-                       continue;
-               if (ksp_chain->ks_type != KSTAT_TYPE_NAMED)
-                       continue;
-               if (kstat_read (kc, ksp_chain, NULL) == -1)
-                       continue;
-               if (get_kstat_value (ksp_chain, "obytes") == -1LL)
-                       continue;
-               ksp[numif++] = ksp_chain;
-       }
-
-       return (0);
+static int interface_init(void) {
+  kstat_t *ksp_chain;
+
+  numif = 0;
+
+  if (kc == NULL)
+    return (-1);
+
+  for (numif = 0, ksp_chain = kc->kc_chain;
+       (numif < MAX_NUMIF) && (ksp_chain != NULL);
+       ksp_chain = ksp_chain->ks_next) {
+    if (strncmp(ksp_chain->ks_class, "net", 3))
+      continue;
+    if (ksp_chain->ks_type != KSTAT_TYPE_NAMED)
+      continue;
+    if (kstat_read(kc, ksp_chain, NULL) == -1)
+      continue;
+    if (get_kstat_value(ksp_chain, "obytes") == -1LL)
+      continue;
+    ksp[numif++] = ksp_chain;
+  }
+
+  return (0);
 } /* int interface_init */
 #endif /* HAVE_LIBKSTAT */
 
-static void if_submit (const char *dev, const char *type,
-               derive_t rx,
-               derive_t tx)
-{
-       value_list_t vl = VALUE_LIST_INIT;
-       value_t values[] = {
-               { .derive = rx },
-               { .derive = tx },
-       };
-
-       if (ignorelist_match (ignorelist, dev) != 0)
-               return;
-
-       vl.values = values;
-       vl.values_len = STATIC_ARRAY_SIZE (values);
-       sstrncpy (vl.plugin, "interface", sizeof (vl.plugin));
-       sstrncpy (vl.plugin_instance, dev, sizeof (vl.plugin_instance));
-       sstrncpy (vl.type, type, sizeof (vl.type));
-
-       plugin_dispatch_values (&vl);
+static void if_submit(const char *dev, const char *type, derive_t rx,
+                      derive_t tx) {
+  value_list_t vl = VALUE_LIST_INIT;
+  value_t values[] = {
+      {.derive = rx}, {.derive = tx},
+  };
+
+  if (ignorelist_match(ignorelist, dev) != 0)
+    return;
+
+  vl.values = values;
+  vl.values_len = STATIC_ARRAY_SIZE(values);
+  sstrncpy(vl.plugin, "interface", sizeof(vl.plugin));
+  sstrncpy(vl.plugin_instance, dev, sizeof(vl.plugin_instance));
+  sstrncpy(vl.type, type, sizeof(vl.type));
+
+  plugin_dispatch_values(&vl);
 } /* void if_submit */
 
-static int interface_read (void)
-{
+static int interface_read(void) {
 #if HAVE_GETIFADDRS
-       struct ifaddrs *if_list;
+  struct ifaddrs *if_list;
 
 /* Darwin/Mac OS X and possible other *BSDs */
 #if HAVE_STRUCT_IF_DATA
-#  define IFA_DATA if_data
-#  define IFA_RX_BYTES ifi_ibytes
-#  define IFA_TX_BYTES ifi_obytes
-#  define IFA_RX_PACKT ifi_ipackets
-#  define IFA_TX_PACKT ifi_opackets
-#  define IFA_RX_ERROR ifi_ierrors
-#  define IFA_TX_ERROR ifi_oerrors
+#define IFA_DATA if_data
+#define IFA_RX_BYTES ifi_ibytes
+#define IFA_TX_BYTES ifi_obytes
+#define IFA_RX_PACKT ifi_ipackets
+#define IFA_TX_PACKT ifi_opackets
+#define IFA_RX_ERROR ifi_ierrors
+#define IFA_TX_ERROR ifi_oerrors
 /* #endif HAVE_STRUCT_IF_DATA */
 
 #elif HAVE_STRUCT_NET_DEVICE_STATS
-#  define IFA_DATA net_device_stats
-#  define IFA_RX_BYTES rx_bytes
-#  define IFA_TX_BYTES tx_bytes
-#  define IFA_RX_PACKT rx_packets
-#  define IFA_TX_PACKT tx_packets
-#  define IFA_RX_ERROR rx_errors
-#  define IFA_TX_ERROR tx_errors
+#define IFA_DATA net_device_stats
+#define IFA_RX_BYTES rx_bytes
+#define IFA_TX_BYTES tx_bytes
+#define IFA_RX_PACKT rx_packets
+#define IFA_TX_PACKT tx_packets
+#define IFA_RX_ERROR rx_errors
+#define IFA_TX_ERROR tx_errors
 #else
-#  error "No suitable type for `struct ifaddrs->ifa_data' found."
+#error "No suitable type for `struct ifaddrs->ifa_data' found."
 #endif
 
-       struct IFA_DATA *if_data;
+  struct IFA_DATA *if_data;
 
-       if (getifaddrs (&if_list) != 0)
-               return (-1);
+  if (getifaddrs(&if_list) != 0)
+    return (-1);
 
-       for (struct ifaddrs *if_ptr = if_list; if_ptr != NULL; if_ptr = if_ptr->ifa_next)
-       {
-               if (if_ptr->ifa_addr != NULL && if_ptr->ifa_addr->sa_family == AF_LINK) {
-                       if_data = (struct IFA_DATA *) if_ptr->ifa_data;
+  for (struct ifaddrs *if_ptr = if_list; if_ptr != NULL;
+       if_ptr = if_ptr->ifa_next) {
+    if (if_ptr->ifa_addr != NULL && if_ptr->ifa_addr->sa_family == AF_LINK) {
+      if_data = (struct IFA_DATA *)if_ptr->ifa_data;
 
-                       if (!report_inactive && if_data->IFA_RX_PACKT == 0 && if_data->IFA_TX_PACKT == 0)
-                               continue;
+      if (!report_inactive && if_data->IFA_RX_PACKT == 0 &&
+          if_data->IFA_TX_PACKT == 0)
+        continue;
 
-                       if_submit (if_ptr->ifa_name, "if_octets",
-                               if_data->IFA_RX_BYTES,
-                               if_data->IFA_TX_BYTES);
-                       if_submit (if_ptr->ifa_name, "if_packets",
-                               if_data->IFA_RX_PACKT,
-                               if_data->IFA_TX_PACKT);
-                       if_submit (if_ptr->ifa_name, "if_errors",
-                               if_data->IFA_RX_ERROR,
-                               if_data->IFA_TX_ERROR);
-               }
-       }
+      if_submit(if_ptr->ifa_name, "if_octets", if_data->IFA_RX_BYTES,
+                if_data->IFA_TX_BYTES);
+      if_submit(if_ptr->ifa_name, "if_packets", if_data->IFA_RX_PACKT,
+                if_data->IFA_TX_PACKT);
+      if_submit(if_ptr->ifa_name, "if_errors", if_data->IFA_RX_ERROR,
+                if_data->IFA_TX_ERROR);
+    }
+  }
 
-       freeifaddrs (if_list);
+  freeifaddrs(if_list);
 /* #endif HAVE_GETIFADDRS */
 
 #elif KERNEL_LINUX
-       FILE *fh;
-       char buffer[1024];
-       derive_t incoming, outgoing;
-       char *device;
-
-       char *dummy;
-       char *fields[16];
-       int numfields;
-
-       if ((fh = fopen ("/proc/net/dev", "r")) == NULL)
-       {
-               char errbuf[1024];
-               WARNING ("interface plugin: fopen: %s",
-                               sstrerror (errno, errbuf, sizeof (errbuf)));
-               return (-1);
-       }
-
-       while (fgets (buffer, 1024, fh) != NULL)
-       {
-               if (!(dummy = strchr(buffer, ':')))
-                       continue;
-               dummy[0] = '\0';
-               dummy++;
-
-               device = buffer;
-               while (device[0] == ' ')
-                       device++;
-
-               if (device[0] == '\0')
-                       continue;
-
-               numfields = strsplit (dummy, fields, 16);
-
-               if (numfields < 11)
-                       continue;
-
-               incoming = atoll (fields[1]);
-               outgoing = atoll (fields[9]);
-               if (!report_inactive && incoming == 0 && outgoing == 0)
-                       continue;
-
-               if_submit (device, "if_packets", incoming, outgoing);
-
-               incoming = atoll (fields[0]);
-               outgoing = atoll (fields[8]);
-               if_submit (device, "if_octets", incoming, outgoing);
-
-               incoming = atoll (fields[2]);
-               outgoing = atoll (fields[10]);
-               if_submit (device, "if_errors", incoming, outgoing);
-
-               incoming = atoll (fields[3]);
-               outgoing = atoll (fields[11]);
-               if_submit (device, "if_dropped", incoming, outgoing);
-       }
-
-       fclose (fh);
+  FILE *fh;
+  char buffer[1024];
+  derive_t incoming, outgoing;
+  char *device;
+
+  char *dummy;
+  char *fields[16];
+  int numfields;
+
+  if ((fh = fopen("/proc/net/dev", "r")) == NULL) {
+    char errbuf[1024];
+    WARNING("interface plugin: fopen: %s",
+            sstrerror(errno, errbuf, sizeof(errbuf)));
+    return (-1);
+  }
+
+  while (fgets(buffer, 1024, fh) != NULL) {
+    if (!(dummy = strchr(buffer, ':')))
+      continue;
+    dummy[0] = '\0';
+    dummy++;
+
+    device = buffer;
+    while (device[0] == ' ')
+      device++;
+
+    if (device[0] == '\0')
+      continue;
+
+    numfields = strsplit(dummy, fields, 16);
+
+    if (numfields < 11)
+      continue;
+
+    incoming = atoll(fields[1]);
+    outgoing = atoll(fields[9]);
+    if (!report_inactive && incoming == 0 && outgoing == 0)
+      continue;
+
+    if_submit(device, "if_packets", incoming, outgoing);
+
+    incoming = atoll(fields[0]);
+    outgoing = atoll(fields[8]);
+    if_submit(device, "if_octets", incoming, outgoing);
+
+    incoming = atoll(fields[2]);
+    outgoing = atoll(fields[10]);
+    if_submit(device, "if_errors", incoming, outgoing);
+
+    incoming = atoll(fields[3]);
+    outgoing = atoll(fields[11]);
+    if_submit(device, "if_dropped", incoming, outgoing);
+  }
+
+  fclose(fh);
 /* #endif KERNEL_LINUX */
 
 #elif HAVE_LIBKSTAT
-       derive_t rx;
-       derive_t tx;
-       char iname[DATA_MAX_NAME_LEN];
-
-       if (kc == NULL)
-               return (-1);
-
-       for (int i = 0; i < numif; i++)
-       {
-               if (kstat_read (kc, ksp[i], NULL) == -1)
-                       continue;
-
-               if (unique_name)
-                       ssnprintf(iname, sizeof(iname), "%s_%d_%s", ksp[i]->ks_module, ksp[i]->ks_instance, ksp[i]->ks_name);
-               else
-                       sstrncpy(iname, ksp[i]->ks_name, sizeof(iname));
-
-               /* try to get 64bit counters */
-               rx = get_kstat_value (ksp[i], "ipackets64");
-               tx = get_kstat_value (ksp[i], "opackets64");
-               /* or fallback to 32bit */
-               if (rx == -1LL)
-                       rx = get_kstat_value (ksp[i], "ipackets");
-               if (tx == -1LL)
-                       tx = get_kstat_value (ksp[i], "opackets");
-               if (!report_inactive && rx == 0 && tx == 0)
-                       continue;
-               if ((rx != -1LL) || (tx != -1LL))
-                       if_submit (iname, "if_packets", rx, tx);
-
-               /* try to get 64bit counters */
-               rx = get_kstat_value (ksp[i], "rbytes64");
-               tx = get_kstat_value (ksp[i], "obytes64");
-               /* or fallback to 32bit */
-               if (rx == -1LL)
-                       rx = get_kstat_value (ksp[i], "rbytes");
-               if (tx == -1LL)
-                       tx = get_kstat_value (ksp[i], "obytes");
-               if ((rx != -1LL) || (tx != -1LL))
-                       if_submit (iname, "if_octets", rx, tx);
-
-               /* no 64bit error counters yet */
-               rx = get_kstat_value (ksp[i], "ierrors");
-               tx = get_kstat_value (ksp[i], "oerrors");
-               if ((rx != -1LL) || (tx != -1LL))
-                       if_submit (iname, "if_errors", rx, tx);
-       }
+  derive_t rx;
+  derive_t tx;
+  char iname[DATA_MAX_NAME_LEN];
+
+  if (kc == NULL)
+    return (-1);
+
+  for (int i = 0; i < numif; i++) {
+    if (kstat_read(kc, ksp[i], NULL) == -1)
+      continue;
+
+    if (unique_name)
+      ssnprintf(iname, sizeof(iname), "%s_%d_%s", ksp[i]->ks_module,
+                ksp[i]->ks_instance, ksp[i]->ks_name);
+    else
+      sstrncpy(iname, ksp[i]->ks_name, sizeof(iname));
+
+    /* try to get 64bit counters */
+    rx = get_kstat_value(ksp[i], "ipackets64");
+    tx = get_kstat_value(ksp[i], "opackets64");
+    /* or fallback to 32bit */
+    if (rx == -1LL)
+      rx = get_kstat_value(ksp[i], "ipackets");
+    if (tx == -1LL)
+      tx = get_kstat_value(ksp[i], "opackets");
+    if (!report_inactive && rx == 0 && tx == 0)
+      continue;
+    if ((rx != -1LL) || (tx != -1LL))
+      if_submit(iname, "if_packets", rx, tx);
+
+    /* try to get 64bit counters */
+    rx = get_kstat_value(ksp[i], "rbytes64");
+    tx = get_kstat_value(ksp[i], "obytes64");
+    /* or fallback to 32bit */
+    if (rx == -1LL)
+      rx = get_kstat_value(ksp[i], "rbytes");
+    if (tx == -1LL)
+      tx = get_kstat_value(ksp[i], "obytes");
+    if ((rx != -1LL) || (tx != -1LL))
+      if_submit(iname, "if_octets", rx, tx);
+
+    /* no 64bit error counters yet */
+    rx = get_kstat_value(ksp[i], "ierrors");
+    tx = get_kstat_value(ksp[i], "oerrors");
+    if ((rx != -1LL) || (tx != -1LL))
+      if_submit(iname, "if_errors", rx, tx);
+  }
 /* #endif HAVE_LIBKSTAT */
 
 #elif defined(HAVE_LIBSTATGRAB)
-       sg_network_io_stats *ios;
-       int num;
+  sg_network_io_stats *ios;
+  int num;
 
-       ios = sg_get_network_io_stats (&num);
+  ios = sg_get_network_io_stats(&num);
 
-       for (int i = 0; i < num; i++) {
-               if (!report_inactive && ios[i].rx == 0 && ios[i].tx == 0)
-                       continue;
-               if_submit (ios[i].interface_name, "if_octets", ios[i].rx, ios[i].tx);
-       }
+  for (int i = 0; i < num; i++) {
+    if (!report_inactive && ios[i].rx == 0 && ios[i].tx == 0)
+      continue;
+    if_submit(ios[i].interface_name, "if_octets", ios[i].rx, ios[i].tx);
+  }
 /* #endif HAVE_LIBSTATGRAB */
 
 #elif defined(HAVE_PERFSTAT)
-       perfstat_id_t id;
-       int ifs;
-
-       if ((nif =  perfstat_netinterface(NULL, NULL, sizeof(perfstat_netinterface_t), 0)) < 0)
-       {
-               char errbuf[1024];
-               WARNING ("interface plugin: perfstat_netinterface: %s",
-                       sstrerror (errno, errbuf, sizeof (errbuf)));
-               return (-1);
-       }
-
-       if (pnif != nif || ifstat == NULL)
-       {
-               free(ifstat);
-               ifstat = malloc(nif * sizeof (*ifstat));
-       }
-       pnif = nif;
-
-       id.name[0]='\0';
-       if ((ifs = perfstat_netinterface(&id, ifstat, sizeof(perfstat_netinterface_t), nif)) < 0)
-       {
-               char errbuf[1024];
-               WARNING ("interface plugin: perfstat_netinterface (interfaces=%d): %s",
-                       nif, sstrerror (errno, errbuf, sizeof (errbuf)));
-               return (-1);
-       }
-
-       for (int i = 0; i < ifs; i++)
-       {
-               if (!report_inactive && ifstat[i].ipackets == 0 && ifstat[i].opackets == 0)
-                       continue;
-
-               if_submit (ifstat[i].name, "if_octets", ifstat[i].ibytes, ifstat[i].obytes);
-               if_submit (ifstat[i].name, "if_packets", ifstat[i].ipackets ,ifstat[i].opackets);
-               if_submit (ifstat[i].name, "if_errors", ifstat[i].ierrors, ifstat[i].oerrors );
-       }
+  perfstat_id_t id;
+  int ifs;
+
+  if ((nif = perfstat_netinterface(NULL, NULL, sizeof(perfstat_netinterface_t),
+                                   0)) < 0) {
+    char errbuf[1024];
+    WARNING("interface plugin: perfstat_netinterface: %s",
+            sstrerror(errno, errbuf, sizeof(errbuf)));
+    return (-1);
+  }
+
+  if (pnif != nif || ifstat == NULL) {
+    free(ifstat);
+    ifstat = malloc(nif * sizeof(*ifstat));
+  }
+  pnif = nif;
+
+  id.name[0] = '\0';
+  if ((ifs = perfstat_netinterface(&id, ifstat, sizeof(perfstat_netinterface_t),
+                                   nif)) < 0) {
+    char errbuf[1024];
+    WARNING("interface plugin: perfstat_netinterface (interfaces=%d): %s", nif,
+            sstrerror(errno, errbuf, sizeof(errbuf)));
+    return (-1);
+  }
+
+  for (int i = 0; i < ifs; i++) {
+    if (!report_inactive && ifstat[i].ipackets == 0 && ifstat[i].opackets == 0)
+      continue;
+
+    if_submit(ifstat[i].name, "if_octets", ifstat[i].ibytes, ifstat[i].obytes);
+    if_submit(ifstat[i].name, "if_packets", ifstat[i].ipackets,
+              ifstat[i].opackets);
+    if_submit(ifstat[i].name, "if_errors", ifstat[i].ierrors,
+              ifstat[i].oerrors);
+  }
 #endif /* HAVE_PERFSTAT */
 
-       return (0);
+  return (0);
 } /* int interface_read */
 
-void module_register (void)
-{
-       plugin_register_config ("interface", interface_config,
-                       config_keys, config_keys_num);
+void module_register(void) {
+  plugin_register_config("interface", interface_config, config_keys,
+                         config_keys_num);
 #if HAVE_LIBKSTAT
-       plugin_register_init ("interface", interface_init);
+  plugin_register_init("interface", interface_init);
 #endif
-       plugin_register_read ("interface", interface_read);
+  plugin_register_read("interface", interface_read);
 } /* void module_register */
-