X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Finterface.c;h=806a336dfde09c814c9ab9f204e5770758251893;hb=0421d0d777f6df3cf78fd5366c82b0ed7adb9684;hp=308c48ffed46d21675391a295528e91cb539a890;hpb=3268a333e4f316d8b744e366df2d58781eabd2e7;p=collectd.git diff --git a/src/interface.c b/src/interface.c index 308c48ff..806a336d 100644 --- a/src/interface.c +++ b/src/interface.c @@ -46,6 +46,10 @@ # include #endif +#if HAVE_STATGRAB_H +# include +#endif + /* * Various people have reported problems with `getifaddrs' and varying versions * of `glibc'. That's why it's disabled by default. Since more statistics are @@ -58,49 +62,13 @@ # endif /* !COLLECT_GETIFADDRS */ #endif /* KERNEL_LINUX */ -#if HAVE_GETIFADDRS || KERNEL_LINUX || HAVE_LIBKSTAT || HAVE_LIBSTATGRAB -# define INTERFACE_HAVE_READ 1 -#else -# define INTERFACE_HAVE_READ 0 +#if !HAVE_GETIFADDRS && !KERNEL_LINUX && !HAVE_LIBKSTAT && !HAVE_LIBSTATGRAB +# error "No applicable input method." #endif /* * (Module-)Global variables */ -/* 2^32 = 4294967296 = ~4.2GByte/s = ~34GBit/s */ -static data_source_t octets_dsrc[2] = -{ - {"rx", DS_TYPE_COUNTER, 0, 4294967295.0}, - {"tx", DS_TYPE_COUNTER, 0, 4294967295.0} -}; - -static data_set_t octets_ds = -{ - "if_octets", 2, octets_dsrc -}; - -static data_source_t packets_dsrc[2] = -{ - {"rx", DS_TYPE_COUNTER, 0, 4294967295.0}, - {"tx", DS_TYPE_COUNTER, 0, 4294967295.0} -}; - -static data_set_t packets_ds = -{ - "if_packets", 2, packets_dsrc -}; - -static data_source_t errors_dsrc[2] = -{ - {"rx", DS_TYPE_COUNTER, 0, 4294967295.0}, - {"tx", DS_TYPE_COUNTER, 0, 4294967295.0} -}; - -static data_set_t errors_ds = -{ - "if_errors", 2, errors_dsrc -}; - static const char *config_keys[] = { "Interface", @@ -166,7 +134,6 @@ static int interface_config (const char *key, const char *value) #if HAVE_LIBKSTAT static int interface_init (void) { -#if HAVE_LIBKSTAT kstat_t *ksp_chain; unsigned long long val; @@ -189,7 +156,6 @@ static int interface_init (void) continue; ksp[numif++] = ksp_chain; } -#endif /* HAVE_LIBKSTAT */ return (0); } /* int interface_init */ @@ -215,7 +181,6 @@ static int check_ignore_if (const char *interface) return (1 - if_list_action); } /* int check_ignore_if */ -#if INTERFACE_HAVE_READ static void if_submit (const char *dev, const char *type, unsigned long long rx, unsigned long long tx) @@ -232,11 +197,12 @@ static void if_submit (const char *dev, const char *type, vl.values = values; vl.values_len = 2; vl.time = time (NULL); - strcpy (vl.host, hostname_g); - strcpy (vl.plugin, "interface"); - strncpy (vl.type_instance, dev, sizeof (vl.type_instance)); + sstrncpy (vl.host, hostname_g, sizeof (vl.host)); + sstrncpy (vl.plugin, "interface", sizeof (vl.plugin)); + sstrncpy (vl.type, type, sizeof (vl.type)); + sstrncpy (vl.type_instance, dev, sizeof (vl.type_instance)); - plugin_dispatch_values (type, &vl); + plugin_dispatch_values (&vl); } /* void if_submit */ static int interface_read (void) @@ -351,7 +317,7 @@ static int interface_read (void) unsigned long long tx; if (kc == NULL) - return; + return (-1); for (i = 0; i < numif; i++) { @@ -387,22 +353,13 @@ static int interface_read (void) return (0); } /* int interface_read */ -#endif /* INTERFACE_HAVE_READ */ void module_register (void) { - plugin_register_data_set (&octets_ds); - plugin_register_data_set (&packets_ds); - plugin_register_data_set (&errors_ds); - plugin_register_config ("interface", interface_config, config_keys, config_keys_num); - #if HAVE_LIBKSTAT plugin_register_init ("interface", interface_init); #endif - -#if INTERFACE_HAVE_READ plugin_register_read ("interface", interface_read); -#endif -} +} /* void module_register */