@cryptotaxi247 / netdata-1 / commits / d953ce31c

Add charts for TCPv4/TCPV6/ICMP errors in windows (#18526)

* Add charts for TCPv4/TCPV6/ICMP errors * Fix titles

Stelios Fragkakis committed Sep 16, 2024 at 15:20 UTC d953ce31cd981c0b7ca97574241a0821f6e0c749
2 files changed +292 -30
src/collectors/all.h
+1
@@ -319,6 +319,7 @@
319 #define NETDATA_CHART_PRIO_IPV6_TCP_PACKETS 6130
320 #define NETDATA_CHART_PRIO_IPV6_TCP_SOCKETS 6140
321 #define NETDATA_CHART_PRIO_IPV6_ICMP_PACKETS 6145
322 +#define NETDATA_CHART_PRIO_IPV6_ICMP_MESSAGES 6146
323 #define NETDATA_CHART_PRIO_IPV6_ICMP 6150
324 #define NETDATA_CHART_PRIO_IPV6_ICMP_REDIR 6155
325 #define NETDATA_CHART_PRIO_IPV6_ICMP_ERRORS 6160
src/collectors/windows.plugin/perflib-network.c
+291 -30
@@ -3,6 +3,28 @@
3 #include "windows_plugin.h"
4 #include "windows-internals.h"
5
6 +
7 +#define ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, counter) \
8 + do { \
9 + if ((p)->packets.counter.key) { \
10 + packets += perflibGetObjectCounter((pDataBlock), (pObjectType), &(p)->packets.counter) ? 1 : 0; \
11 + } \
12 + } while (0)
13 +
14 +#define SET_DIM_IF_KEY_AND_UPDATED(p, field) \
15 + do { \
16 + if ((p)->packets.field.key && (p)->packets.field.updated) { \
17 + rrddim_set_by_pointer( \
18 + (p)->packets.st, (p)->packets.rd_##field, (collected_number)(p)->packets.field.current.Data); \
19 + } \
20 + } while (0)
21 +
22 +#define ADD_RRD_DIM_IF_KEY(packet_field, id, name, multiplier, algorithm) \
23 + do { \
24 + if (p->packets.packet_field.key) \
25 + p->packets.rd_##packet_field = rrddim_add(st, id, name, multiplier, 1, algorithm); \
26 + } while (0)
27 +
28 // --------------------------------------------------------------------------------------------------------------------
29 // network protocols
30
@@ -14,11 +36,75 @@ struct network_protocol {
36 COUNTER_DATA sent;
37 COUNTER_DATA delivered;
38 COUNTER_DATA forwarded;
39 +
40 + COUNTER_DATA InDiscards;
41 + COUNTER_DATA OutDiscards;
42 + COUNTER_DATA InHdrErrors;
43 + COUNTER_DATA InAddrErrors;
44 + COUNTER_DATA InUnknownProtos;
45 + COUNTER_DATA InTooBigErrors;
46 + COUNTER_DATA InTruncatedPkts;
47 + COUNTER_DATA InNoRoutes;
48 + COUNTER_DATA OutNoRoutes;
49 +
50 + COUNTER_DATA InEchoReps;
51 + COUNTER_DATA OutEchoReps;
52 + COUNTER_DATA InDestUnreachs;
53 + COUNTER_DATA OutDestUnreachs;
54 + COUNTER_DATA InRedirects;
55 + COUNTER_DATA OutRedirects;
56 + COUNTER_DATA InEchos;
57 + COUNTER_DATA OutEchos;
58 + COUNTER_DATA InRouterAdvert;
59 + COUNTER_DATA OutRouterAdvert;
60 + COUNTER_DATA InRouterSelect;
61 + COUNTER_DATA OutRouterSelect;
62 + COUNTER_DATA InTimeExcds;
63 + COUNTER_DATA OutTimeExcds;
64 + COUNTER_DATA InParmProbs;
65 + COUNTER_DATA OutParmProbs;
66 + COUNTER_DATA InTimestamps;
67 + COUNTER_DATA OutTimestamps;
68 + COUNTER_DATA InTimestampReps;
69 + COUNTER_DATA OutTimestampReps;
70 +
71 RRDSET *st;
72 RRDDIM *rd_received;
73 RRDDIM *rd_sent;
74 RRDDIM *rd_forwarded;
75 RRDDIM *rd_delivered;
76 +
77 + RRDDIM *rd_InDiscards;
78 + RRDDIM *rd_OutDiscards;
79 + RRDDIM *rd_InHdrErrors;
80 + RRDDIM *rd_InAddrErrors;
81 + RRDDIM *rd_InUnknownProtos;
82 + RRDDIM *rd_InTooBigErrors;
83 + RRDDIM *rd_InTruncatedPkts;
84 + RRDDIM *rd_InNoRoutes;
85 + RRDDIM *rd_OutNoRoutes;
86 +
87 + RRDDIM *rd_InEchoReps;
88 + RRDDIM *rd_OutEchoReps;
89 + RRDDIM *rd_InDestUnreachs;
90 + RRDDIM *rd_OutDestUnreachs;
91 + RRDDIM *rd_InRedirects;
92 + RRDDIM *rd_OutRedirects;
93 + RRDDIM *rd_InEchos;
94 + RRDDIM *rd_OutEchos;
95 + RRDDIM *rd_InRouterAdvert;
96 + RRDDIM *rd_OutRouterAdvert;
97 + RRDDIM *rd_InRouterSelect;
98 + RRDDIM *rd_OutRouterSelect;
99 + RRDDIM *rd_InTimeExcds;
100 + RRDDIM *rd_OutTimeExcds;
101 + RRDDIM *rd_InParmProbs;
102 + RRDDIM *rd_OutParmProbs;
103 + RRDDIM *rd_InTimestamps;
104 + RRDDIM *rd_OutTimestamps;
105 + RRDDIM *rd_InTimestampReps;
106 + RRDDIM *rd_OutTimestampReps;
107 +
108 const char *type;
109 const char *id;
110 const char *family;
@@ -137,6 +223,107 @@ struct network_protocol {
223 },
224 },
225
226 + {
227 + .protocol = "IPv4",
228 + .packets = {
229 + .InDiscards = { .key = "Datagrams Received Discarded" },
230 + .OutDiscards = { .key = "Datagrams Outbound Discarded" },
231 + .OutNoRoutes = { .key = "Datagrams Outbound No Route" },
232 + .InAddrErrors = { .key = "Datagrams Received Address Errors" },
233 + .InHdrErrors = { .key = "Datagrams Received Header Errors" },
234 + .InUnknownProtos = { .key = "Datagrams Received Unknown Protocol" },
235 + .type = "ipv4",
236 + .id = "errors",
237 + .family = "errors",
238 + .context = "ipv4.errors",
239 + .title = "IPv4 errors",
240 + .priority = NETDATA_CHART_PRIO_IPV4_ERRORS,
241 + },
242 + },
243 + {
244 + .protocol = "IPv6",
245 + .packets = {
246 + .InDiscards = { .key = "Datagrams Received Discarded" },
247 + .OutDiscards = { .key = "Datagrams Outbound Discarded" },
248 + .OutNoRoutes = { .key = "Datagrams Outbound No Route" },
249 + .InAddrErrors = { .key = "Datagrams Received Address Errors" },
250 + .InHdrErrors = { .key = "Datagrams Received Header Errors" },
251 + .InUnknownProtos = { .key = "Datagrams Received Unknown Protocol" },
252 + .type = "ipv6",
253 + .id = "errors",
254 + .family = "errors",
255 + .context = "ipv6.errors",
256 + .title = "IPv6 errors",
257 + .priority = NETDATA_CHART_PRIO_IPV6_ERRORS,
258 + },
259 + },
260 + {
261 + .protocol = "ICMP",
262 + .packets =
263 + {
264 + .InEchoReps = {.key = "Received Echo Reply/sec"},
265 + .OutEchoReps = {.key = "Received Echo Reply/sec"},
266 + .InDestUnreachs = {.key = "Received Dest. Unreachable"},
267 + .OutDestUnreachs = {.key = "Sent Destination Unreachable"},
268 + .InRedirects = {.key = "Received Redirect/sec"},
269 + .OutRedirects = {.key = "Sent Redirect/sec"},
270 + .InEchos = {.key = "Received Echo/sec"},
271 + .OutEchos = {.key = "Sent Echo/sec"},
272 + .InRouterAdvert = {.key = NULL},
273 + .OutRouterAdvert = {.key = NULL},
274 + .InRouterSelect = {.key = NULL},
275 + .OutRouterSelect = {.key = NULL},
276 + .InTimeExcds = {.key = "Received Time Exceeded"},
277 + .OutTimeExcds = {.key = "Sent Time Exceeded"},
278 + .InParmProbs = {.key = "Received Parameter Problem"},
279 + .OutParmProbs = {.key = "Sent Parameter Problem"},
280 + .InTimestamps = {.key = "Received Timestamp/sec"},
281 + .OutTimestamps = {.key = "Sent Timestamp/sec"},
282 + .InTimestampReps = {.key = "Received Timestamp Reply/sec"},
283 + .OutTimestampReps = {.key = "Sent Timestamp Reply/sec"},
284 +
285 + .type = "ipv4",
286 + .id = "icmpmsg",
287 + .family = "icmp",
288 + .context = "ipv4.icmpmsg",
289 + .title = "IPv4 ICMP Packets",
290 + .priority = NETDATA_CHART_PRIO_IPV4_ICMP_MESSAGES,
291 + },
292 + },
293 + {
294 + .protocol = "ICMPv6",
295 + .packets =
296 + {
297 + .InEchoReps = {.key = "Received Echo Reply/sec"},
298 + .OutEchoReps = {.key = "Received Echo Reply/sec"},
299 + .InDestUnreachs = {.key = "Received Dest. Unreachable"},
300 + .OutDestUnreachs = {.key = "Sent Destination Unreachable"},
301 + .InRedirects = {.key = "Received Redirect/sec"},
302 + .OutRedirects = {.key = "Sent Redirect/sec"},
303 + .InEchos = {.key = "Received Echo/sec"},
304 + .OutEchos = {.key = "Sent Echo/sec"},
305 + .InRouterAdvert = {.key = NULL},
306 + .OutRouterAdvert = {.key = NULL},
307 + .InRouterSelect = {.key = NULL},
308 + .OutRouterSelect = {.key = NULL},
309 + .InTimeExcds = {.key = "Received Time Exceeded"},
310 + .OutTimeExcds = {.key = "Sent Time Exceeded"},
311 + .InParmProbs = {.key = "Received Parameter Problem"},
312 + .OutParmProbs = {.key = "Sent Parameter Problem"},
313 + .InTimestamps = {.key = "Received Timestamp/sec"},
314 + .OutTimestamps = {.key = "Sent Timestamp/sec"},
315 + .InTimestampReps = {.key = "Received Timestamp Reply/sec"},
316 + .OutTimestampReps = {.key = "Sent Timestamp Reply/sec"},
317 +
318 + .type = "ipv6",
319 + .id = "icmpmsg",
320 + .family = "icmp",
321 + .context = "ipv6.icmpmsg",
322 + .title = "IPv6 ICMP Packets",
323 + .priority = NETDATA_CHART_PRIO_IPV6_ICMP_MESSAGES,
324 + },
325 + },
326 +
327 // terminator
328 {
329 .protocol = NULL,
@@ -171,27 +358,78 @@ static void protocol_packets_chart_update(struct network_protocol *p, int update
358 , RRDSET_TYPE_AREA
359 );
360
174 - p->packets.rd_received = rrddim_add(p->packets.st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
175 - p->packets.rd_sent = rrddim_add(p->packets.st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
361 + RRDSET *st = p->packets.st;
362 +
363 + ADD_RRD_DIM_IF_KEY(received, "received", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
364 + ADD_RRD_DIM_IF_KEY(sent, "sent", NULL, -1, RRD_ALGORITHM_INCREMENTAL);
365 + ADD_RRD_DIM_IF_KEY(forwarded, "forwarded", NULL, -1, RRD_ALGORITHM_INCREMENTAL);
366 + ADD_RRD_DIM_IF_KEY(delivered, "delivered", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
367 + ADD_RRD_DIM_IF_KEY(InDiscards, "InDiscards", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
368 + ADD_RRD_DIM_IF_KEY(OutDiscards, "OutDiscards", NULL, -1, RRD_ALGORITHM_INCREMENTAL);
369 + ADD_RRD_DIM_IF_KEY(InHdrErrors, "InHdrErrors", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
370 + ADD_RRD_DIM_IF_KEY(InAddrErrors, "InAddrErrors", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
371 + ADD_RRD_DIM_IF_KEY(InUnknownProtos, "InUnknownProtos", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
372 + ADD_RRD_DIM_IF_KEY(InTooBigErrors, "InTooBigErrors", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
373 + ADD_RRD_DIM_IF_KEY(InTruncatedPkts, "InTruncatedPkts", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
374 + ADD_RRD_DIM_IF_KEY(InNoRoutes, "InNoRoutes", NULL, 1, RRD_ALGORITHM_INCREMENTAL);
375 + ADD_RRD_DIM_IF_KEY(OutNoRoutes, "OutNoRoutes", NULL, -1, RRD_ALGORITHM_INCREMENTAL);
376 + ADD_RRD_DIM_IF_KEY(InEchoReps, "InType0", "InEchoReps", 1, RRD_ALGORITHM_INCREMENTAL);
377 + ADD_RRD_DIM_IF_KEY(OutEchoReps, "OutType0", "OutEchoReps", -1, RRD_ALGORITHM_INCREMENTAL);
378 + ADD_RRD_DIM_IF_KEY(InDestUnreachs, "InType3", "InDestUnreachs", 1, RRD_ALGORITHM_INCREMENTAL);
379 + ADD_RRD_DIM_IF_KEY(OutDestUnreachs, "OutType3", "OutDestUnreachs", -1, RRD_ALGORITHM_INCREMENTAL);
380 + ADD_RRD_DIM_IF_KEY(InRedirects, "InType5", "InRedirects", 1, RRD_ALGORITHM_INCREMENTAL);
381 + ADD_RRD_DIM_IF_KEY(OutRedirects, "OutType5", "OutRedirects", -1, RRD_ALGORITHM_INCREMENTAL);
382 + ADD_RRD_DIM_IF_KEY(InEchos, "InType8", "InEchos", 1, RRD_ALGORITHM_INCREMENTAL);
383 + ADD_RRD_DIM_IF_KEY(OutEchos, "OutType8", "OutEchos", -1, RRD_ALGORITHM_INCREMENTAL);
384 + ADD_RRD_DIM_IF_KEY(InRouterAdvert, "InType9", "InRouterAdvert", 1, RRD_ALGORITHM_INCREMENTAL);
385 + ADD_RRD_DIM_IF_KEY(OutRouterAdvert, "OutType9", "OutRouterAdvert", -1, RRD_ALGORITHM_INCREMENTAL);
386 + ADD_RRD_DIM_IF_KEY(InRouterSelect, "InType10", "InRouterSelect", 1, RRD_ALGORITHM_INCREMENTAL);
387 + ADD_RRD_DIM_IF_KEY(OutRouterSelect, "OutType10", "OutRouterSelect", -1, RRD_ALGORITHM_INCREMENTAL);
388 + ADD_RRD_DIM_IF_KEY(InTimeExcds, "InType11", "InTimeExcds", 1, RRD_ALGORITHM_INCREMENTAL);
389 + ADD_RRD_DIM_IF_KEY(OutTimeExcds, "OutType11", "OutTimeExcds", -1, RRD_ALGORITHM_INCREMENTAL);
390 + ADD_RRD_DIM_IF_KEY(InParmProbs, "InType12", "InParmProbs", 1, RRD_ALGORITHM_INCREMENTAL);
391 + ADD_RRD_DIM_IF_KEY(OutParmProbs, "OutType12", "OutParmProbs", -1, RRD_ALGORITHM_INCREMENTAL);
392 + ADD_RRD_DIM_IF_KEY(InTimestamps, "InType13", "InTimestamps", 1, RRD_ALGORITHM_INCREMENTAL);
393 + ADD_RRD_DIM_IF_KEY(OutTimestamps, "OutType13", "OutTimestamps", -1, RRD_ALGORITHM_INCREMENTAL);
394 + ADD_RRD_DIM_IF_KEY(InTimestampReps, "InType14", "InTimestampReps", 1, RRD_ALGORITHM_INCREMENTAL);
395 + ADD_RRD_DIM_IF_KEY(OutTimestampReps, "OutType14", "OutTimestampReps", -1, RRD_ALGORITHM_INCREMENTAL);
396
177 - if(p->packets.forwarded.key)
178 - p->packets.rd_forwarded = rrddim_add(p->packets.st, "forwarded", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
179 -
180 - if(p->packets.delivered.key)
181 - p->packets.rd_delivered = rrddim_add(p->packets.st, "delivered", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
397 }
398
184 - if(p->packets.received.updated)
185 - rrddim_set_by_pointer(p->packets.st, p->packets.rd_received, (collected_number)p->packets.received.current.Data);
186 -
187 - if(p->packets.sent.updated)
188 - rrddim_set_by_pointer(p->packets.st, p->packets.rd_sent, (collected_number)p->packets.sent.current.Data);
189 -
190 - if(p->packets.forwarded.key && p->packets.forwarded.updated)
191 - rrddim_set_by_pointer(p->packets.st, p->packets.rd_forwarded, (collected_number)p->packets.forwarded.current.Data);
192 -
193 - if(p->packets.delivered.key && p->packets.delivered.updated)
194 - rrddim_set_by_pointer(p->packets.st, p->packets.rd_delivered, (collected_number)p->packets.delivered.current.Data);
399 + SET_DIM_IF_KEY_AND_UPDATED(p, received);
400 + SET_DIM_IF_KEY_AND_UPDATED(p, sent);
401 +
402 + SET_DIM_IF_KEY_AND_UPDATED(p, forwarded);
403 + SET_DIM_IF_KEY_AND_UPDATED(p, delivered);
404 + SET_DIM_IF_KEY_AND_UPDATED(p, InDiscards);
405 + SET_DIM_IF_KEY_AND_UPDATED(p, OutDiscards);
406 + SET_DIM_IF_KEY_AND_UPDATED(p, InHdrErrors);
407 + SET_DIM_IF_KEY_AND_UPDATED(p, InAddrErrors);
408 + SET_DIM_IF_KEY_AND_UPDATED(p, InUnknownProtos);
409 + SET_DIM_IF_KEY_AND_UPDATED(p, InTooBigErrors);
410 + SET_DIM_IF_KEY_AND_UPDATED(p, InTruncatedPkts);
411 + SET_DIM_IF_KEY_AND_UPDATED(p, InNoRoutes);
412 + SET_DIM_IF_KEY_AND_UPDATED(p, OutNoRoutes);
413 + SET_DIM_IF_KEY_AND_UPDATED(p, InEchoReps);
414 + SET_DIM_IF_KEY_AND_UPDATED(p, OutEchoReps);
415 + SET_DIM_IF_KEY_AND_UPDATED(p, InDestUnreachs);
416 + SET_DIM_IF_KEY_AND_UPDATED(p, OutDestUnreachs);
417 + SET_DIM_IF_KEY_AND_UPDATED(p, InRedirects);
418 + SET_DIM_IF_KEY_AND_UPDATED(p, OutRedirects);
419 + SET_DIM_IF_KEY_AND_UPDATED(p, InEchos);
420 + SET_DIM_IF_KEY_AND_UPDATED(p, OutEchos);
421 + SET_DIM_IF_KEY_AND_UPDATED(p, InRouterAdvert);
422 + SET_DIM_IF_KEY_AND_UPDATED(p, OutRouterAdvert);
423 + SET_DIM_IF_KEY_AND_UPDATED(p, InRouterSelect);
424 + SET_DIM_IF_KEY_AND_UPDATED(p, OutRouterSelect);
425 + SET_DIM_IF_KEY_AND_UPDATED(p, InTimeExcds);
426 + SET_DIM_IF_KEY_AND_UPDATED(p, OutTimeExcds);
427 + SET_DIM_IF_KEY_AND_UPDATED(p, InParmProbs);
428 + SET_DIM_IF_KEY_AND_UPDATED(p, OutParmProbs);
429 + SET_DIM_IF_KEY_AND_UPDATED(p, InTimestamps);
430 + SET_DIM_IF_KEY_AND_UPDATED(p, OutTimestamps);
431 + SET_DIM_IF_KEY_AND_UPDATED(p, InTimestampReps);
432 + SET_DIM_IF_KEY_AND_UPDATED(p, OutTimestampReps);
433
434 rrdset_done(p->packets.st);
435 }
@@ -203,17 +441,41 @@ static bool do_network_protocol(PERF_DATA_BLOCK *pDataBlock, int update_every, s
441 if(!pObjectType) return false;
442
443 size_t packets = 0;
206 - if(p->packets.received.key)
207 - packets += perflibGetObjectCounter(pDataBlock, pObjectType, &p->packets.received) ? 1 : 0;
208 -
209 - if(p->packets.sent.key)
210 - packets += perflibGetObjectCounter(pDataBlock, pObjectType, &p->packets.sent) ? 1 : 0;
211 -
212 - if(p->packets.delivered.key)
213 - packets += perflibGetObjectCounter(pDataBlock, pObjectType, &p->packets.delivered) ? 1 :0;
214 -
215 - if(p->packets.forwarded.key)
216 - packets += perflibGetObjectCounter(pDataBlock, pObjectType, &p->packets.forwarded) ? 1 : 0;
444 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, received);
445 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, sent);
446 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, delivered);
447 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, forwarded);
448 +
449 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InDiscards);
450 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutDiscards);
451 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InHdrErrors);
452 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InAddrErrors);
453 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InUnknownProtos);
454 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InTooBigErrors);
455 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InTruncatedPkts);
456 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InNoRoutes);
457 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutNoRoutes);
458 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InEchoReps);
459 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutEchoReps);
460 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InDestUnreachs);
461 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutDestUnreachs);
462 +
463 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InRedirects);
464 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutRedirects);
465 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InEchos);
466 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutEchos);
467 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InRouterAdvert);
468 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutRouterAdvert);
469 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InRouterSelect);
470 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutRouterSelect);
471 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InTimeExcds);
472 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutTimeExcds);
473 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InParmProbs);
474 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutParmProbs);
475 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InTimestamps);
476 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutTimestamps);
477 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, InTimestampReps);
478 + ADD_PACKET_IF_KEY(p, packets, pDataBlock, pObjectType, OutTimestampReps);
479
480 if(packets)
481 protocol_packets_chart_update(p, update_every);
@@ -448,6 +710,5 @@ int do_PerflibNetwork(int update_every, usec_t dt __maybe_unused) {
710 tcp46.packets.sent.current.Data += tcp6->packets.sent.current.Data;
711 protocol_packets_chart_update(&tcp46, update_every);
712 }
451 -
713 return 0;
714 }