@cryptotaxi247 / netdata-1 / commits / 9757b1b86

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)) {