added enabled_all_classes to show all classes of an interface
default is no
Stefan Forstenlechner committed
Dec 14, 2016 at 10:58 UTC
9757b1b862c9524d16b7d9fc19741b453907420f
1 file changed
+20
-14
src/plugin_tc.c
+20
-14
@@ -68,6 +68,7 @@ struct tc_device {
68
char enabled_dropped;
69
char enabled_tokens;
70
char enabled_ctokens;
71
+ char enabled_all_classes;
72
73
RRDSET *st_bytes;
74
RRDSET *st_packets;
@@ -184,7 +185,7 @@ static inline void tc_device_classes_cleanup(struct tc_device *d) {
185
}
186
187
static inline void tc_device_commit(struct tc_device *d) {
187
- static int enable_new_interfaces = -1, enable_bytes = -1, enable_packets = -1, enable_dropped = -1, enable_tokens = -1, enable_ctokens = -1;
188
+ static int enable_new_interfaces = -1, enable_bytes = -1, enable_packets = -1, enable_dropped = -1, enable_tokens = -1, enable_ctokens = -1, enabled_all_classes = -1;
189
190
if(unlikely(enable_new_interfaces == -1)) {
191
enable_new_interfaces = config_get_boolean_ondemand("plugin:tc", "enable new interfaces detected at runtime", CONFIG_ONDEMAND_YES);
@@ -193,6 +194,7 @@ static inline void tc_device_commit(struct tc_device *d) {
194
enable_dropped = config_get_boolean_ondemand("plugin:tc", "enable dropped charts for all interfaces", CONFIG_ONDEMAND_ONDEMAND);
195
enable_tokens = config_get_boolean_ondemand("plugin:tc", "enable tokens charts for all interfaces", CONFIG_ONDEMAND_NO);
196
enable_ctokens = config_get_boolean_ondemand("plugin:tc", "enable ctokens charts for all interfaces", CONFIG_ONDEMAND_NO);
197
+ enabled_all_classes = config_get_boolean_ondemand("plugin:tc", "enable show all classes for all interfaces", CONFIG_ONDEMAND_NO);
198
}
199
200
// we only need to add leaf classes
@@ -234,7 +236,7 @@ static inline void tc_device_commit(struct tc_device *d) {
236
/*
237
if(unlikely(debug_flags & D_TC_LOOP)) {
238
for(c = d->classes ; c ; c = c->next) {
237
- if(c->isleaf && c->hasparent) debug(D_TC_LOOP, "TC: Device '%s', class %s, OK", d->name, c->id);
239
+ if((c->isleaf && c->hasparent) || d->enabled_all_classes) debug(D_TC_LOOP, "TC: Device '%s', class %s, OK", d->name, c->id);
240
else debug(D_TC_LOOP, "TC: Device '%s', class %s, IGNORE (isleaf: %d, hasparent: %d, parent: %s)", d->name?d->name:d->id, c->id, c->isleaf, c->hasparent, c->parentid?c->parentid:"(unset)");
241
}
242
}
@@ -243,7 +245,7 @@ static inline void tc_device_commit(struct tc_device *d) {
245
// we need at least a class
246
for(c = d->classes ; c ; c = c->next) {
247
// debug(D_TC_LOOP, "TC: Device '%s', class '%s', isLeaf=%d, HasParent=%d, Seen=%d", d->name?d->name:d->id, c->name?c->name:c->id, c->isleaf, c->hasparent, c->seen);
246
- if(unlikely(c->updated && c->isleaf && c->hasparent)) {
248
+ if(unlikely(c->updated && ((c->isleaf && c->hasparent) || d->enabled_all_classes))) {
249
active_classes++;
250
bytes_sum += c->bytes;
251
packets_sum += c->packets;
@@ -262,22 +264,25 @@ static inline void tc_device_commit(struct tc_device *d) {
264
if(unlikely(d->enabled == (char)-1)) {
265
char var_name[CONFIG_MAX_NAME + 1];
266
snprintfz(var_name, CONFIG_MAX_NAME, "qos for %s", d->id);
265
- d->enabled = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_new_interfaces);
267
+ d->enabled = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_new_interfaces);
268
269
snprintfz(var_name, CONFIG_MAX_NAME, "traffic chart for %s", d->id);
268
- d->enabled_bytes = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_bytes);
270
+ d->enabled_bytes = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_bytes);
271
272
snprintfz(var_name, CONFIG_MAX_NAME, "packets chart for %s", d->id);
271
- d->enabled_packets = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_packets);
273
+ d->enabled_packets = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_packets);
274
275
snprintfz(var_name, CONFIG_MAX_NAME, "dropped packets chart for %s", d->id);
274
- d->enabled_dropped = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_dropped);
276
+ d->enabled_dropped = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_dropped);
277
278
snprintfz(var_name, CONFIG_MAX_NAME, "tokens chart for %s", d->id);
277
- d->enabled_tokens = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_tokens);
279
+ d->enabled_tokens = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_tokens);
280
281
snprintfz(var_name, CONFIG_MAX_NAME, "ctokens chart for %s", d->id);
280
- d->enabled_ctokens = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_ctokens);
282
+ d->enabled_ctokens = (char)config_get_boolean_ondemand("plugin:tc", var_name, enable_ctokens);
283
+
284
+ snprintfz(var_name, CONFIG_MAX_NAME, "show all classes for %s", d->id);
285
+ d->enabled_all_classes = (char)config_get_boolean_ondemand("plugin:tc", var_name, enabled_all_classes);
286
}
287
288
debug(D_TC_LOOP, "TC: evaluating TC device '%s'. enabled = %d/%d (bytes: %d/%d, packets: %d/%d, dropped: %d/%d, tokens: %d/%d, ctokens: %d/%d), classes = %d (bytes = %llu, packets = %llu, dropped = %llu, tokens = %llu, ctokens = %llu).",
@@ -288,6 +293,7 @@ static inline void tc_device_commit(struct tc_device *d) {
293
d->enabled_dropped, enable_dropped,
294
d->enabled_tokens, enable_tokens,
295
d->enabled_ctokens, enable_ctokens,
296
+ d->enabled_all_classes, enabled_all_classes,
297
active_classes,
298
bytes_sum,
299
packets_sum,
@@ -326,7 +332,7 @@ static inline void tc_device_commit(struct tc_device *d) {
332
for(c = d->classes ; c ; c = c->next) {
333
if(unlikely(!c->updated)) continue;
334
329
- if(c->isleaf && c->hasparent) {
335
+ if((c->isleaf && c->hasparent) || d->enabled_all_classes) {
336
if(unlikely(!c->rd_bytes)) {
337
c->rd_bytes = rrddim_find(d->st_bytes, c->id);
338
if(unlikely(!c->rd_bytes)) {
@@ -380,7 +386,7 @@ static inline void tc_device_commit(struct tc_device *d) {
386
for(c = d->classes ; c ; c = c->next) {
387
if(unlikely(!c->updated)) continue;
388
383
- if(c->isleaf && c->hasparent) {
389
+ if((c->isleaf && c->hasparent) || d->enabled_all_classes) {
390
if(unlikely(!c->rd_packets)) {
391
c->rd_packets = rrddim_find(d->st_packets, c->id);
392
if(unlikely(!c->rd_packets)) {
@@ -434,7 +440,7 @@ static inline void tc_device_commit(struct tc_device *d) {
440
for(c = d->classes ; c ; c = c->next) {
441
if(unlikely(!c->updated)) continue;
442
437
- if(c->isleaf && c->hasparent) {
443
+ if((c->isleaf && c->hasparent) || d->enabled_all_classes) {
444
if(unlikely(!c->rd_dropped)) {
445
c->rd_dropped = rrddim_find(d->st_dropped, c->id);
446
if(unlikely(!c->rd_dropped)) {
@@ -488,7 +494,7 @@ static inline void tc_device_commit(struct tc_device *d) {
494
for(c = d->classes ; c ; c = c->next) {
495
if(unlikely(!c->updated)) continue;
496
491
- if(c->isleaf && c->hasparent) {
497
+ if((c->isleaf && c->hasparent) || d->enabled_all_classes) {
498
if(unlikely(!c->rd_tokens)) {
499
c->rd_tokens = rrddim_find(d->st_tokens, c->id);
500
if(unlikely(!c->rd_tokens)) {
@@ -542,7 +548,7 @@ static inline void tc_device_commit(struct tc_device *d) {
548
for(c = d->classes ; c ; c = c->next) {
549
if(unlikely(!c->updated)) continue;
550
545
- if(c->isleaf && c->hasparent) {
551
+ if((c->isleaf && c->hasparent) || d->enabled_all_classes) {
552
if(unlikely(!c->rd_ctokens)) {
553
c->rd_ctokens = rrddim_find(d->st_ctokens, c->id);
554
if(unlikely(!c->rd_ctokens)) {