#include "collectd.h"
-#include "common.h"
#include "plugin.h"
+#include "utils/common/common.h"
#include <asm/types.h>
};
static int ir_ignorelist_invert = 1;
-static ir_ignorelist_t *ir_ignorelist_head = NULL;
+static ir_ignorelist_t *ir_ignorelist_head;
static struct mnl_socket *nl;
-static char **iflist = NULL;
-static size_t iflist_len = 0;
+static char **iflist;
+static size_t iflist_len;
static const char *config_keys[] = {"Interface", "VerboseInterface",
"QDisc", "Class",
const char *type_instance, derive_t rx, derive_t tx) {
value_list_t vl = VALUE_LIST_INIT;
value_t values[] = {
- {.derive = rx}, {.derive = tx},
+ {.derive = rx},
+ {.derive = tx},
};
vl.values = values;
const char *tc_type;
char tc_inst[DATA_MAX_NAME_LEN];
- _Bool stats_submitted = 0;
+ bool stats_submitted = false;
if (nlh->nlmsg_type == RTM_NEWQDISC)
tc_type = "qdisc";
if (strcmp(tc_type, "filter") == 0)
numberic_id = tm->tcm_parent;
- snprintf(tc_inst, sizeof(tc_inst), "%s-%x:%x", kind, numberic_id >> 16,
- numberic_id & 0x0000FFFF);
+ ssnprintf(tc_inst, sizeof(tc_inst), "%s-%x:%x", kind, numberic_id >> 16,
+ numberic_id & 0x0000FFFF);
}
DEBUG("netlink plugin: qos_filter_cb: got %s for %s (%i).", tc_type, dev,
if (q_stats.bs != NULL || q_stats.qs != NULL) {
char type_instance[DATA_MAX_NAME_LEN];
- stats_submitted = 1;
+ stats_submitted = true;
- snprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type, tc_inst);
+ int r = ssnprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type,
+ tc_inst);
+ if ((size_t)r >= sizeof(type_instance)) {
+ ERROR("netlink plugin: type_instance truncated to %zu bytes, need %d",
+ sizeof(type_instance), r);
+ return MNL_CB_ERROR;
+ }
if (q_stats.bs != NULL) {
submit_one(dev, "ipt_bytes", type_instance, q_stats.bs->bytes);
if (!stats_submitted && ts != NULL) {
char type_instance[DATA_MAX_NAME_LEN];
- snprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type, tc_inst);
+ int r = ssnprintf(type_instance, sizeof(type_instance), "%s-%s", tc_type,
+ tc_inst);
+ if ((size_t)r >= sizeof(type_instance)) {
+ ERROR("netlink plugin: type_instance truncated to %zu bytes, need %d",
+ sizeof(type_instance), r);
+ return MNL_CB_ERROR;
+ }
submit_one(dev, "ipt_bytes", type_instance, ts->bytes);
submit_one(dev, "ipt_packets", type_instance, ts->packets);
} else if ((strcasecmp(key, "QDisc") == 0) ||
(strcasecmp(key, "Class") == 0) ||
(strcasecmp(key, "Filter") == 0)) {
- if ((fields_num < 1) || (fields_num > 2)) {
+ if (fields_num > 2) {
ERROR("netlink plugin: Invalid number of fields for option "
"`%s'. Got %i, expected 1 or 2.",
key, fields_num);