Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
net_stats.h
Go to the documentation of this file.
1
8/*
9 * Copyright (c) 2016 Intel Corporation
10 *
11 * SPDX-License-Identifier: Apache-2.0
12 */
13
14#ifndef ZEPHYR_INCLUDE_NET_NET_STATS_H_
15#define ZEPHYR_INCLUDE_NET_NET_STATS_H_
16
17#include <zephyr/types.h>
18#include <zephyr/net/net_core.h>
19#include <zephyr/net/net_mgmt.h>
20
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
46
56
66
83
110
130
176
193
207
221
235
249
263
277
288
299
302#if NET_TC_TX_COUNT == 0
303#define NET_TC_TX_STATS_COUNT 1
304#else
305#define NET_TC_TX_STATS_COUNT NET_TC_TX_COUNT
306#endif
307
308#if NET_TC_RX_COUNT == 0
309#define NET_TC_RX_STATS_COUNT 1
310#else
311#define NET_TC_RX_STATS_COUNT NET_TC_RX_COUNT
312#endif
313
321 struct {
324#if defined(CONFIG_NET_PKT_TXTIME_STATS_DETAIL)
326 struct net_stats_tx_time
327 tx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
328#endif
337 } sent[NET_TC_TX_STATS_COUNT];
338
340 struct {
342 struct net_stats_rx_time rx_time;
343#if defined(CONFIG_NET_PKT_RXTIME_STATS_DETAIL)
345 struct net_stats_rx_time
346 rx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
347#endif
349 net_stats_t pkts;
351 net_stats_t dropped;
353 net_stats_t bytes;
355 uint8_t priority;
356 } recv[NET_TC_RX_STATS_COUNT];
357};
358
359
373
379 struct {
382#if defined(CONFIG_NET_PKT_FILTER_IPV4_HOOK)
384 net_stats_t ipv4_drop;
385#endif
386#if defined(CONFIG_NET_PKT_FILTER_IPV6_HOOK)
388 net_stats_t ipv6_drop;
389#endif
390#if defined(CONFIG_NET_PKT_FILTER_LOCAL_IN_HOOK)
392 net_stats_t local_drop;
393#endif
394 } rx;
395
397 struct {
400 } tx;
401};
402
406struct net_stats {
409
415
418
419#if defined(CONFIG_NET_STATISTICS_PKT_FILTER)
420 struct net_stats_pkt_filter pkt_filter;
421#endif
422
423#if defined(CONFIG_NET_STATISTICS_IPV6)
425 struct net_stats_ip ipv6;
426#endif
427
428#if defined(CONFIG_NET_STATISTICS_IPV4)
430 struct net_stats_ip ipv4;
431#endif
432
433#if defined(CONFIG_NET_STATISTICS_ICMP)
435 struct net_stats_icmp icmp;
436#endif
437
438#if defined(CONFIG_NET_STATISTICS_TCP)
440 struct net_stats_tcp tcp;
441#endif
442
443#if defined(CONFIG_NET_STATISTICS_UDP)
445 struct net_stats_udp udp;
446#endif
447
448#if defined(CONFIG_NET_STATISTICS_IPV6_ND)
450 struct net_stats_ipv6_nd ipv6_nd;
451#endif
452
453#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU)
455 struct net_stats_ipv6_pmtu ipv6_pmtu;
456#endif
457
458#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU)
460 struct net_stats_ipv4_pmtu ipv4_pmtu;
461#endif
462
463#if defined(CONFIG_NET_STATISTICS_MLD)
465 struct net_stats_ipv6_mld ipv6_mld;
466#endif
467
468#if defined(CONFIG_NET_STATISTICS_IGMP)
470 struct net_stats_ipv4_igmp ipv4_igmp;
471#endif
472
473#if defined(CONFIG_NET_STATISTICS_DNS)
475 struct net_stats_dns dns;
476#endif
477
478#if NET_TC_COUNT > 1
480 struct net_stats_tc tc;
481#endif
482
483#if defined(CONFIG_NET_PKT_TXTIME_STATS)
485 struct net_stats_tx_time tx_time;
486#endif
487
488#if defined(CONFIG_NET_PKT_RXTIME_STATS)
490 struct net_stats_rx_time rx_time;
491#endif
492
493#if defined(CONFIG_NET_PKT_TXTIME_STATS_DETAIL)
495 struct net_stats_tx_time tx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
496#endif
497#if defined(CONFIG_NET_PKT_RXTIME_STATS_DETAIL)
499 struct net_stats_rx_time rx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
500#endif
501
502#if defined(CONFIG_NET_STATISTICS_POWER_MANAGEMENT)
504 struct net_stats_pm pm;
505#endif
506};
507
569
586
597
611
612#ifdef CONFIG_NET_STATISTICS_ETHERNET_VENDOR
616struct net_stats_eth_vendor {
617 const char * const key;
618 uint32_t value;
619};
620#endif
621
673
690
701
730
731#if defined(CONFIG_NET_STATISTICS_USER_API)
732/* Management part definitions */
733
736#define NET_STATS_LAYER NET_MGMT_LAYER_L3
737#define NET_STATS_CODE NET_MGMT_LAYER_CODE_STATS
738#define NET_STATS_BASE (NET_MGMT_LAYER(NET_STATS_LAYER) | \
739 NET_MGMT_LAYER_CODE(NET_STATS_CODE))
740
741enum net_request_stats_cmd {
742 NET_REQUEST_STATS_CMD_GET_ALL = 1,
743 NET_REQUEST_STATS_CMD_GET_PROCESSING_ERROR,
744 NET_REQUEST_STATS_CMD_GET_PKT_FILTER_DROP,
745 NET_REQUEST_STATS_CMD_GET_BYTES,
746 NET_REQUEST_STATS_CMD_GET_IP_ERRORS,
747 NET_REQUEST_STATS_CMD_GET_IPV4,
748 NET_REQUEST_STATS_CMD_GET_IPV6,
749 NET_REQUEST_STATS_CMD_GET_IPV6_ND,
750 NET_REQUEST_STATS_CMD_GET_IPV6_PMTU,
751 NET_REQUEST_STATS_CMD_GET_IPV4_PMTU,
752 NET_REQUEST_STATS_CMD_GET_ICMP,
753 NET_REQUEST_STATS_CMD_GET_UDP,
754 NET_REQUEST_STATS_CMD_GET_TCP,
755 NET_REQUEST_STATS_CMD_GET_ETHERNET,
756 NET_REQUEST_STATS_CMD_GET_PPP,
757 NET_REQUEST_STATS_CMD_GET_PM,
758 NET_REQUEST_STATS_CMD_GET_WIFI,
759 NET_REQUEST_STATS_CMD_RESET_WIFI,
760 NET_REQUEST_STATS_CMD_GET_VPN,
761};
762
766#define NET_REQUEST_STATS_GET_ALL \
767 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_ALL)
768
770#define NET_REQUEST_STATS_GET_PROCESSING_ERROR \
771 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PROCESSING_ERROR)
772
774#define NET_REQUEST_STATS_GET_PKT_FILTER_DROP \
775 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PKT_FILTER_DROP)
776
778#define NET_REQUEST_STATS_GET_BYTES \
779 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_BYTES)
780
782#define NET_REQUEST_STATS_GET_IP_ERRORS \
783 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IP_ERRORS)
784
787NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_ALL);
788NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PROCESSING_ERROR);
789NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_BYTES);
790NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IP_ERRORS);
791
792#if defined(CONFIG_NET_STATISTICS_PKT_FILTER)
793NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PKT_FILTER_DROP);
794#endif /* CONFIG_NET_STATISTICS_PKT_FILTER */
795
798#if defined(CONFIG_NET_STATISTICS_IPV4)
800#define NET_REQUEST_STATS_GET_IPV4 \
801 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV4)
802
804NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV4);
806#endif /* CONFIG_NET_STATISTICS_IPV4 */
807
808#if defined(CONFIG_NET_STATISTICS_IPV6)
810#define NET_REQUEST_STATS_GET_IPV6 \
811 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6)
812
814NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6);
816#endif /* CONFIG_NET_STATISTICS_IPV6 */
817
818#if defined(CONFIG_NET_STATISTICS_IPV6_ND)
820#define NET_REQUEST_STATS_GET_IPV6_ND \
821 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6_ND)
822
824NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6_ND);
826#endif /* CONFIG_NET_STATISTICS_IPV6_ND */
827
828#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU)
830#define NET_REQUEST_STATS_GET_IPV6_PMTU \
831 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6_PMTU)
832
834NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6_PMTU);
836#endif /* CONFIG_NET_STATISTICS_IPV6_PMTU */
837
838#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU)
840#define NET_REQUEST_STATS_GET_IPV4_PMTU \
841 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV4_PMTU)
842
844NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV4_PMTU);
846#endif /* CONFIG_NET_STATISTICS_IPV4_PMTU */
847
848#if defined(CONFIG_NET_STATISTICS_ICMP)
850#define NET_REQUEST_STATS_GET_ICMP \
851 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_ICMP)
852
854NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_ICMP);
856#endif /* CONFIG_NET_STATISTICS_ICMP */
857
858#if defined(CONFIG_NET_STATISTICS_UDP)
860#define NET_REQUEST_STATS_GET_UDP \
861 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_UDP)
862
864NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_UDP);
866#endif /* CONFIG_NET_STATISTICS_UDP */
867
868#if defined(CONFIG_NET_STATISTICS_TCP)
870#define NET_REQUEST_STATS_GET_TCP \
871 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_TCP)
872
874NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_TCP);
876#endif /* CONFIG_NET_STATISTICS_TCP */
877
878#if defined(CONFIG_NET_STATISTICS_ETHERNET)
880#define NET_REQUEST_STATS_GET_ETHERNET \
881 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_ETHERNET)
882
884NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_ETHERNET);
886#endif /* CONFIG_NET_STATISTICS_ETHERNET */
887
888#if defined(CONFIG_NET_STATISTICS_PPP)
890#define NET_REQUEST_STATS_GET_PPP \
891 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PPP)
892
894NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PPP);
896#endif /* CONFIG_NET_STATISTICS_PPP */
897
898#if defined(CONFIG_NET_STATISTICS_VPN)
900#define NET_REQUEST_STATS_GET_VPN \
901 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_VPN)
902
904NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_VPN);
906#endif /* CONFIG_NET_STATISTICS_VPN */
907
908#endif /* CONFIG_NET_STATISTICS_USER_API */
909
910#if defined(CONFIG_NET_STATISTICS_POWER_MANAGEMENT)
912#define NET_REQUEST_STATS_GET_PM \
913 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PM)
914
916NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PM);
918#endif /* CONFIG_NET_STATISTICS_POWER_MANAGEMENT */
919
920#if defined(CONFIG_NET_STATISTICS_WIFI)
922#define NET_REQUEST_STATS_GET_WIFI \
923 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_WIFI)
924
926NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_WIFI);
930#define NET_REQUEST_STATS_RESET_WIFI \
931 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_RESET_WIFI)
932
934NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_RESET_WIFI);
936#endif /* CONFIG_NET_STATISTICS_WIFI */
937
938#define NET_STATS_GET_METRIC_NAME(_name) _name
939#define NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx) net_stats_##dev_id##_##sfx##_collector
940#define NET_STATS_GET_VAR(dev_id, sfx, var) zephyr_net_##var
941#define NET_STATS_GET_INSTANCE(dev_id, sfx, _not_used) STRINGIFY(_##dev_id##_##sfx)
942
943/* The label value is set to be the network interface name. Note that we skip
944 * the first character (_) when setting the label value. This can be changed
945 * if there is a way to token paste the instance name without the prefix character.
946 * Note also that the below macros have some parameters that are not used atm.
947 */
948#define NET_STATS_PROMETHEUS_COUNTER_DEFINE(_desc, _labelval, _not_used, \
949 _collector, _name, _stat_var_ptr) \
950 static PROMETHEUS_COUNTER_DEFINE( \
951 NET_STATS_GET_METRIC_NAME(_name), \
952 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
953 &(_collector), _stat_var_ptr)
954
955#define NET_STATS_PROMETHEUS_GAUGE_DEFINE(_desc, _labelval, _not_used, \
956 _collector, _name, _stat_var_ptr) \
957 static PROMETHEUS_GAUGE_DEFINE( \
958 NET_STATS_GET_METRIC_NAME(_name), \
959 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
960 &(_collector), _stat_var_ptr)
961
962#define NET_STATS_PROMETHEUS_SUMMARY_DEFINE(_desc, _labelval, _not_used, \
963 _collector, _name, _stat_var_ptr) \
964 static PROMETHEUS_SUMMARY_DEFINE( \
965 NET_STATS_GET_METRIC_NAME(_name), \
966 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
967 &(_collector), _stat_var_ptr)
968
969#define NET_STATS_PROMETHEUS_HISTOGRAM_DEFINE(_desc, _labelval, _not_used, \
970 _collector, _name, _stat_var_ptr) \
971 static PROMETHEUS_HISTOGRAM_DEFINE( \
972 NET_STATS_GET_METRIC_NAME(_name), \
973 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
974 &(_collector), _stat_var_ptr)
975
976/* IPv6 layer statistics */
977#if defined(CONFIG_NET_STATISTICS_IPV6)
978#define NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx) \
979 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
980 "IPv6 packets sent", \
981 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_sent), \
982 "packet_count", \
983 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
984 NET_STATS_GET_VAR(dev_id, sfx, ipv6_sent), \
985 &(iface)->stats.ipv6.sent); \
986 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
987 "IPv6 packets received", \
988 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_recv), \
989 "packet_count", \
990 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
991 NET_STATS_GET_VAR(dev_id, sfx, ipv6_recv), \
992 &(iface)->stats.ipv6.recv); \
993 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
994 "IPv6 packets dropped", \
995 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_drop), \
996 "packet_count", \
997 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
998 NET_STATS_GET_VAR(dev_id, sfx, ipv6_drop), \
999 &(iface)->stats.ipv6.drop); \
1000 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1001 "IPv6 packets forwarded", \
1002 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_forward), \
1003 "packet_count", \
1004 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1005 NET_STATS_GET_VAR(dev_id, sfx, ipv6_forwarded), \
1006 &(iface)->stats.ipv6.forwarded)
1007#else
1008#define NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx)
1009#endif
1010
1011/* IPv4 layer statistics */
1012#if defined(CONFIG_NET_STATISTICS_IPV4)
1013#define NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx) \
1014 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1015 "IPv4 packets sent", \
1016 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_sent), \
1017 "packet_count", \
1018 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1019 NET_STATS_GET_VAR(dev_id, sfx, ipv4_sent), \
1020 &(iface)->stats.ipv4.sent); \
1021 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1022 "IPv4 packets received", \
1023 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_recv), \
1024 "packet_count", \
1025 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1026 NET_STATS_GET_VAR(dev_id, sfx, ipv4_recv), \
1027 &(iface)->stats.ipv4.recv); \
1028 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1029 "IPv4 packets dropped", \
1030 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_drop), \
1031 "packet_count", \
1032 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1033 NET_STATS_GET_VAR(dev_id, sfx, ipv4_drop), \
1034 &(iface)->stats.ipv4.drop); \
1035 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1036 "IPv4 packets forwarded", \
1037 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_forwarded), \
1038 "packet_count", \
1039 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1040 NET_STATS_GET_VAR(dev_id, sfx, ipv4_forwarded), \
1041 &(iface)->stats.ipv4.forwarded)
1042#else
1043#define NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx)
1044#endif
1045
1046/* ICMP layer statistics */
1047#if defined(CONFIG_NET_STATISTICS_ICMP)
1048#define NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx) \
1049 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1050 "ICMP packets sent", \
1051 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_sent), \
1052 "packet_count", \
1053 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1054 NET_STATS_GET_VAR(dev_id, sfx, icmp_sent), \
1055 &(iface)->stats.icmp.sent); \
1056 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1057 "ICMP packets received", \
1058 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_recv), \
1059 "packet_count", \
1060 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1061 NET_STATS_GET_VAR(dev_id, sfx, icmp_recv), \
1062 &(iface)->stats.icmp.recv); \
1063 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1064 "ICMP packets dropped", \
1065 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_drop), \
1066 "packet_count", \
1067 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1068 NET_STATS_GET_VAR(dev_id, sfx, icmp_drop), \
1069 &(iface)->stats.icmp.drop); \
1070 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1071 "ICMP packets checksum error", \
1072 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_chkerr), \
1073 "packet_count", \
1074 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1075 NET_STATS_GET_VAR(dev_id, sfx, icmp_chkerr), \
1076 &(iface)->stats.icmp.chkerr); \
1077 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1078 "ICMP packets type error", \
1079 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_typeerr), \
1080 "packet_count", \
1081 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1082 NET_STATS_GET_VAR(dev_id, sfx, icmp_typeerr), \
1083 &(iface)->stats.icmp.typeerr)
1084#else
1085#define NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx)
1086#endif
1087
1088/* UDP layer statistics */
1089#if defined(CONFIG_NET_STATISTICS_UDP)
1090#define NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx) \
1091 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1092 "UDP packets sent", \
1093 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_sent), \
1094 "packet_count", \
1095 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1096 NET_STATS_GET_VAR(dev_id, sfx, udp_sent), \
1097 &(iface)->stats.udp.sent); \
1098 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1099 "UDP packets received", \
1100 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_recv), \
1101 "packet_count", \
1102 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1103 NET_STATS_GET_VAR(dev_id, sfx, udp_recv), \
1104 &(iface)->stats.udp.recv); \
1105 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1106 "UDP packets dropped", \
1107 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_drop), \
1108 "packet_count", \
1109 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1110 NET_STATS_GET_VAR(dev_id, sfx, udp_drop), \
1111 &(iface)->stats.udp.drop); \
1112 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1113 "UDP packets checksum error", \
1114 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_chkerr), \
1115 "packet_count", \
1116 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1117 NET_STATS_GET_VAR(dev_id, sfx, udp_chkerr), \
1118 &(iface)->stats.udp.chkerr)
1119#else
1120#define NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx)
1121#endif
1122
1123/* TCP layer statistics */
1124#if defined(CONFIG_NET_STATISTICS_TCP)
1125#define NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx) \
1126 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1127 "TCP bytes sent", \
1128 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_sent), \
1129 "byte_count", \
1130 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1131 NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_sent), \
1132 &(iface)->stats.tcp.bytes.sent); \
1133 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1134 "TCP bytes received", \
1135 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_recv), \
1136 "byte_count", \
1137 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1138 NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_recv), \
1139 &(iface)->stats.tcp.bytes.received); \
1140 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1141 "TCP bytes resent", \
1142 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_resent), \
1143 "byte_count", \
1144 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1145 NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_resent), \
1146 &(iface)->stats.tcp.resent); \
1147 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1148 "TCP packets sent", \
1149 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_sent), \
1150 "packet_count", \
1151 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1152 NET_STATS_GET_VAR(dev_id, sfx, tcp_sent), \
1153 &(iface)->stats.tcp.sent); \
1154 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1155 "TCP packets received", \
1156 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_recv), \
1157 "packet_count", \
1158 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1159 NET_STATS_GET_VAR(dev_id, sfx, tcp_recv), \
1160 &(iface)->stats.tcp.recv); \
1161 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1162 "TCP packets dropped", \
1163 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_drop), \
1164 "packet_count", \
1165 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1166 NET_STATS_GET_VAR(dev_id, sfx, tcp_drop), \
1167 &(iface)->stats.tcp.drop); \
1168 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1169 "TCP packets checksum error", \
1170 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_chkerr), \
1171 "packet_count", \
1172 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1173 NET_STATS_GET_VAR(dev_id, sfx, tcp_chkerr), \
1174 &(iface)->stats.tcp.chkerr); \
1175 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1176 "TCP packets ack error", \
1177 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_ackerr), \
1178 "packet_count", \
1179 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1180 NET_STATS_GET_VAR(dev_id, sfx, tcp_ackerr), \
1181 &(iface)->stats.tcp.ackerr); \
1182 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1183 "TCP packets reset error", \
1184 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rsterr), \
1185 "packet_count", \
1186 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1187 NET_STATS_GET_VAR(dev_id, sfx, tcp_rsterr), \
1188 &(iface)->stats.tcp.rsterr); \
1189 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1190 "TCP packets retransmitted", \
1191 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rexmit), \
1192 "packet_count", \
1193 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1194 NET_STATS_GET_VAR(dev_id, sfx, tcp_rexmit), \
1195 &(iface)->stats.tcp.rexmit); \
1196 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1197 "TCP reset received", \
1198 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rst_recv), \
1199 "packet_count", \
1200 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1201 NET_STATS_GET_VAR(dev_id, sfx, tcp_rst), \
1202 &(iface)->stats.tcp.rst); \
1203 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1204 "TCP connection drop", \
1205 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_conndrop), \
1206 "packet_count", \
1207 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1208 NET_STATS_GET_VAR(dev_id, sfx, tcp_conndrop), \
1209 &(iface)->stats.tcp.conndrop); \
1210 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1211 "TCP connection reset", \
1212 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_connrst), \
1213 "packet_count", \
1214 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1215 NET_STATS_GET_VAR(dev_id, sfx, tcp_connrst), \
1216 &(iface)->stats.tcp.connrst)
1217#else
1218#define NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx)
1219#endif
1220
1221/* IPv6 Neighbor Discovery statistics */
1222#if defined(CONFIG_NET_STATISTICS_IPV6_ND)
1223#define NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx) \
1224 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1225 "IPv6 ND packets sent", \
1226 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_sent), \
1227 "packet_count", \
1228 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1229 NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_sent), \
1230 &(iface)->stats.ipv6_nd.sent); \
1231 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1232 "IPv6 ND packets received", \
1233 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_recv), \
1234 "packet_count", \
1235 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1236 NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_recv), \
1237 &(iface)->stats.ipv6_nd.recv); \
1238 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1239 "IPv6 ND packets dropped", \
1240 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_drop), \
1241 "packet_count", \
1242 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1243 NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_drop), \
1244 &(iface)->stats.ipv6_nd.drop)
1245#else
1246#define NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx)
1247#endif
1248
1249/* IPv6 Path MTU Discovery statistics */
1250#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU)
1251#define NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx) \
1252 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1253 "IPv6 PMTU packets sent", \
1254 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_sent), \
1255 "packet_count", \
1256 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1257 NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_sent), \
1258 &(iface)->stats.ipv6_pmtu.sent); \
1259 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1260 "IPv6 PMTU packets received", \
1261 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_recv), \
1262 "packet_count", \
1263 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1264 NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_recv), \
1265 &(iface)->stats.ipv6_pmtu.recv); \
1266 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1267 "IPv6 PMTU packets dropped", \
1268 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_drop), \
1269 "packet_count", \
1270 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1271 NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_drop), \
1272 &(iface)->stats.ipv6_pmtu.drop)
1273#else
1274#define NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx)
1275#endif
1276
1277/* IPv4 Path MTU Discovery statistics */
1278#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU)
1279#define NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx) \
1280 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1281 "IPv4 PMTU packets sent", \
1282 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_sent), \
1283 "packet_count", \
1284 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1285 NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_sent), \
1286 &(iface)->stats.ipv4_pmtu.sent); \
1287 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1288 "IPv4 PMTU packets received", \
1289 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_recv), \
1290 "packet_count", \
1291 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1292 NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_recv), \
1293 &(iface)->stats.ipv4_pmtu.recv); \
1294 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1295 "IPv4 PMTU packets dropped", \
1296 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_drop), \
1297 "packet_count", \
1298 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1299 NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_drop), \
1300 &(iface)->stats.ipv4_pmtu.drop)
1301#else
1302#define NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx)
1303#endif
1304
1305/* IPv6 Multicast Listener Discovery statistics */
1306#if defined(CONFIG_NET_STATISTICS_MLD)
1307#define NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx) \
1308 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1309 "IPv6 MLD packets sent", \
1310 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_sent), \
1311 "packet_count", \
1312 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1313 NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_sent), \
1314 &(iface)->stats.ipv6_mld.sent); \
1315 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1316 "IPv6 MLD packets received", \
1317 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_recv), \
1318 "packet_count", \
1319 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1320 NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_recv), \
1321 &(iface)->stats.ipv6_mld.recv); \
1322 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1323 "IPv6 MLD packets dropped", \
1324 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_drop), \
1325 "packet_count", \
1326 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1327 NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_drop), \
1328 &(iface)->stats.ipv6_mld.drop)
1329#else
1330#define NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx)
1331#endif
1332
1333/* IPv4 IGMP statistics */
1334#if defined(CONFIG_NET_STATISTICS_IGMP)
1335#define NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx) \
1336 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1337 "IPv4 IGMP packets sent", \
1338 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_sent), \
1339 "packet_count", \
1340 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1341 NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_sent), \
1342 &(iface)->stats.ipv4_igmp.sent); \
1343 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1344 "IPv4 IGMP packets received", \
1345 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_recv), \
1346 "packet_count", \
1347 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1348 NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_recv), \
1349 &(iface)->stats.ipv4_igmp.recv); \
1350 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1351 "IPv4 IGMP packets dropped", \
1352 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_drop), \
1353 "packet_count", \
1354 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1355 NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_drop), \
1356 &(iface)->stats.ipv4_igmp.drop)
1357#else
1358#define NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx)
1359#endif
1360
1361/* DNS statistics */
1362#if defined(CONFIG_NET_STATISTICS_DNS)
1363#define NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx) \
1364 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1365 "DNS packets sent", \
1366 NET_STATS_GET_INSTANCE(dev_id, sfx, dns_sent), \
1367 "packet_count", \
1368 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1369 NET_STATS_GET_VAR(dev_id, sfx, dns_sent), \
1370 &(iface)->stats.dns.sent); \
1371 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1372 "DNS packets received", \
1373 NET_STATS_GET_INSTANCE(dev_id, sfx, dns_recv), \
1374 "packet_count", \
1375 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1376 NET_STATS_GET_VAR(dev_id, sfx, dns_recv), \
1377 &(iface)->stats.dns.recv); \
1378 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1379 "DNS packets dropped", \
1380 NET_STATS_GET_INSTANCE(dev_id, sfx, dns_drop), \
1381 "packet_count", \
1382 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1383 NET_STATS_GET_VAR(dev_id, sfx, dns_drop), \
1384 &(iface)->stats.dns.drop)
1385#else
1386#define NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx)
1387#endif
1388
1389/* TX time statistics */
1390#if defined(CONFIG_NET_PKT_TXTIME_STATS)
1391#define NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx) \
1392 NET_STATS_PROMETHEUS_SUMMARY_DEFINE( \
1393 "TX time in microseconds", \
1394 NET_STATS_GET_INSTANCE(dev_id, sfx, tx_time), \
1395 "time", \
1396 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1397 NET_STATS_GET_VAR(dev_id, sfx, tx_time), \
1398 &(iface)->stats.tx_time)
1399#else
1400#define NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx)
1401#endif
1402
1403/* RX time statistics */
1404#if defined(CONFIG_NET_PKT_RXTIME_STATS)
1405#define NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx) \
1406 NET_STATS_PROMETHEUS_SUMMARY_DEFINE( \
1407 "RX time in microseconds", \
1408 NET_STATS_GET_INSTANCE(dev_id, sfx, rx_time), \
1409 "time", \
1410 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1411 NET_STATS_GET_VAR(dev_id, sfx, rx_time), \
1412 &(iface)->stats.rx_time)
1413#else
1414#define NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx)
1415#endif
1416
1417#define NET_STATS_PROMETHEUS_PKT_FILTER_IPV4(iface, dev_id, sfx) \
1418 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1419 "Packet filter RX IPv4 drop", \
1420 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_ipv4_drop), \
1421 "packet_count", \
1422 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1423 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_ipv4_drop),\
1424 &(iface)->stats.pkt_filter.rx.ipv4_drop);
1425
1426#define NET_STATS_PROMETHEUS_PKT_FILTER_IPV6(iface, dev_id, sfx) \
1427 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1428 "Packet filter RX IPv6 drop", \
1429 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_ipv6_drop), \
1430 "packet_count", \
1431 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1432 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_ipv6_drop),\
1433 &(iface)->stats.pkt_filter.rx.ipv6_drop);
1434
1435#define NET_STATS_PROMETHEUS_PKT_FILTER_LOCAL(iface, dev_id, sfx) \
1436 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1437 "Packet filter RX local drop", \
1438 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_local_drop), \
1439 "packet_count", \
1440 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1441 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_local_drop),\
1442 &(iface)->stats.pkt_filter.rx.local_drop);
1443
1444#define NET_STATS_PROMETHEUS_PKT_FILTER(iface, dev_id, sfx) \
1445 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1446 "Packet filter RX drop", \
1447 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_drop),\
1448 "packet_count", \
1449 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1450 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_drop), \
1451 &(iface)->stats.pkt_filter.rx.drop); \
1452 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1453 "Packet filter TX drop", \
1454 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_tx_drop),\
1455 "packet_count", \
1456 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1457 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_tx_drop), \
1458 &(iface)->stats.pkt_filter.tx.drop); \
1459 IF_ENABLED(CONFIG_NET_PKT_FILTER_IPV4_HOOK, \
1460 (NET_STATS_PROMETHEUS_PKT_FILTER_IPV4(iface, dev_id, sfx))) \
1461 IF_ENABLED(CONFIG_NET_PKT_FILTER_IPV6_HOOK, \
1462 (NET_STATS_PROMETHEUS_PKT_FILTER_IPV6(iface, dev_id, sfx))) \
1463 IF_ENABLED(CONFIG_NET_PKT_FILTER_LOCAL_IN_HOOK, \
1464 (NET_STATS_PROMETHEUS_PKT_FILTER_LOCAL(iface, dev_id, sfx)))
1465
1466/* Per network interface statistics via Prometheus */
1467#define NET_STATS_PROMETHEUS(iface, dev_id, sfx) \
1468 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1469 "Processing error", \
1470 NET_STATS_GET_INSTANCE(dev_id, sfx, process_error), \
1471 "error_count", \
1472 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1473 NET_STATS_GET_VAR(dev_id, sfx, processing_error), \
1474 &(iface)->stats.processing_error); \
1475 IF_ENABLED(CONFIG_NET_STATISTICS_PKT_FILTER, \
1476 (NET_STATS_PROMETHEUS_PKT_FILTER(iface, dev_id, sfx))) \
1477 /* IP layer error statistics */ \
1478 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1479 "IP proto error", \
1480 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_proto_error), \
1481 "error_count", \
1482 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1483 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_protoerr), \
1484 &(iface)->stats.ip_errors.protoerr); \
1485 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1486 "IP version/header len error", \
1487 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_vhl_error), \
1488 "error_count", \
1489 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1490 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_vhlerr), \
1491 &(iface)->stats.ip_errors.vhlerr); \
1492 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1493 "IP header len error (high byte)", \
1494 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_hblen_error), \
1495 "error_count", \
1496 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1497 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_hblenerr), \
1498 &(iface)->stats.ip_errors.hblenerr); \
1499 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1500 "IP header len error (low byte)", \
1501 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_lblen_error), \
1502 "error_count", \
1503 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1504 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_lblenerr), \
1505 &(iface)->stats.ip_errors.lblenerr); \
1506 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1507 "IP fragment error", \
1508 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_frag_error), \
1509 "error_count", \
1510 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1511 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_fragerr), \
1512 &(iface)->stats.ip_errors.fragerr); \
1513 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1514 "IP checksum error", \
1515 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_chk_error), \
1516 "error_count", \
1517 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1518 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_chkerr), \
1519 &(iface)->stats.ip_errors.chkerr); \
1520 /* General network statistics */ \
1521 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1522 "Bytes received", \
1523 NET_STATS_GET_INSTANCE(dev_id, sfx, bytes_recv), \
1524 "byte_count", \
1525 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1526 NET_STATS_GET_VAR(dev_id, sfx, bytes_recv), \
1527 &(iface)->stats.bytes.received); \
1528 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1529 "Bytes sent", \
1530 NET_STATS_GET_INSTANCE(dev_id, sfx, bytes_sent), \
1531 "byte_count", \
1532 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1533 NET_STATS_GET_VAR(dev_id, sfx, bytes_sent), \
1534 &(iface)->stats.bytes.sent); \
1535 NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx); \
1536 NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx); \
1537 NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx); \
1538 NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx); \
1539 NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx); \
1540 NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx); \
1541 NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx); \
1542 NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx); \
1543 NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx); \
1544 NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx); \
1545 NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx); \
1546 NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx); \
1547 NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx)
1548
1553#ifdef __cplusplus
1554}
1555#endif
1556
1557#endif /* ZEPHYR_INCLUDE_NET_NET_STATS_H_ */
Prometheus collector APIs.
Prometheus gauge APIs.
#define NET_MGMT_DEFINE_REQUEST_HANDLER(_mgmt_request)
Declare a request handler function for the given network event.
Definition net_mgmt.h:136
uint32_t net_stats_t
Network statistics counter.
Definition net_stats.h:45
Prometheus histogram APIs.
Prometheus metric interface.
Prometheus counter APIs.
Network core definitions.
Network Management API public header.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Number of bytes sent and received.
Definition net_stats.h:50
net_stats_t sent
Number of bytes sent.
Definition net_stats.h:52
net_stats_t received
Number of bytes received.
Definition net_stats.h:54
DNS statistics.
Definition net_stats.h:267
net_stats_t drop
Number of dropped DNS packets.
Definition net_stats.h:275
net_stats_t recv
Number of received DNS queries.
Definition net_stats.h:269
net_stats_t sent
Number of sent DNS responses.
Definition net_stats.h:272
Ethernet checksum statistics.
Definition net_stats.h:590
net_stats_t rx_csum_offload_good
Number of good RX checksum offloading.
Definition net_stats.h:592
net_stats_t rx_csum_offload_errors
Number of failed RX checksum offloading.
Definition net_stats.h:595
Ethernet error statistics.
Definition net_stats.h:511
net_stats_t tx_carrier_errors
Number of TX carrier errors.
Definition net_stats.h:549
net_stats_t uncorr_ecc_errors
Number of uncorrected ECC errors.
Definition net_stats.h:564
net_stats_t rx_long_length_errors
Number of RX long length errors.
Definition net_stats.h:531
net_stats_t tx_window_errors
Number of TX window errors.
Definition net_stats.h:558
net_stats_t corr_ecc_errors
Number of corrected ECC errors.
Definition net_stats.h:567
net_stats_t rx_missed_errors
Number of RX missed errors.
Definition net_stats.h:528
net_stats_t rx_crc_errors
Number of RX CRC errors.
Definition net_stats.h:519
net_stats_t rx_short_length_errors
Number of RX short length errors.
Definition net_stats.h:534
net_stats_t rx_align_errors
Number of RX buffer align errors.
Definition net_stats.h:537
net_stats_t rx_dma_failed
Number of RX DMA failed errors.
Definition net_stats.h:540
net_stats_t rx_no_buffer_count
Number of RX net_pkt allocation errors.
Definition net_stats.h:525
net_stats_t tx_fifo_errors
Number of TX FIFO errors.
Definition net_stats.h:552
net_stats_t rx_frame_errors
Number of RX frame errors.
Definition net_stats.h:522
net_stats_t rx_over_errors
Number of RX overrun errors.
Definition net_stats.h:516
net_stats_t tx_dma_failed
Number of TX DMA failed errors.
Definition net_stats.h:561
net_stats_t rx_length_errors
Number of RX length errors.
Definition net_stats.h:513
net_stats_t rx_buf_alloc_failed
Number of RX net_buf allocation errors.
Definition net_stats.h:543
net_stats_t tx_heartbeat_errors
Number of TX heartbeat errors.
Definition net_stats.h:555
net_stats_t tx_aborted_errors
Number of TX aborted errors.
Definition net_stats.h:546
Ethernet flow control statistics.
Definition net_stats.h:573
net_stats_t rx_flow_control_xon
Number of RX XON flow control.
Definition net_stats.h:575
net_stats_t tx_flow_control_xon
Number of TX XON flow control.
Definition net_stats.h:581
net_stats_t rx_flow_control_xoff
Number of RX XOFF flow control.
Definition net_stats.h:578
net_stats_t tx_flow_control_xoff
Number of TX XOFF flow control.
Definition net_stats.h:584
Ethernet hardware timestamp statistics.
Definition net_stats.h:601
net_stats_t tx_hwtstamp_timeouts
Number of RX hardware timestamp timeout.
Definition net_stats.h:606
net_stats_t rx_hwtstamp_cleared
Number of RX hardware timestamp cleared.
Definition net_stats.h:603
net_stats_t tx_hwtstamp_skipped
Number of RX hardware timestamp skipped.
Definition net_stats.h:609
All Ethernet specific statistics.
Definition net_stats.h:625
struct net_stats_pkts broadcast
Total number of broadcast packets received and sent.
Definition net_stats.h:633
struct net_stats_eth_csum csum
Total number of checksum errors in RX and TX.
Definition net_stats.h:648
net_stats_t tx_dropped
Total number of dropped TX packets.
Definition net_stats.h:657
struct net_stats_eth_hw_timestamp hw_timestamp
Total number of hardware timestamp errors in RX and TX.
Definition net_stats.h:651
struct net_stats_pkts multicast
Total number of multicast packets received and sent.
Definition net_stats.h:636
struct net_stats_eth_flow flow_control
Total number of flow control errors in RX and TX.
Definition net_stats.h:645
net_stats_t tx_restart_queue
Total number of TX queue restarts.
Definition net_stats.h:663
net_stats_t collisions
Total number of collisions.
Definition net_stats.h:654
struct net_stats_bytes bytes
Total number of bytes received and sent.
Definition net_stats.h:627
struct net_stats_eth_errors error_details
Total number of errors in RX and TX.
Definition net_stats.h:642
struct net_stats_pkts pkts
Total number of packets received and sent.
Definition net_stats.h:630
struct net_stats_pkts errors
Total number of errors in RX and TX.
Definition net_stats.h:639
net_stats_t tx_timeout_count
Total number of TX timeout errors.
Definition net_stats.h:660
net_stats_t unknown_protocol
Total number of RX unknown protocol packets.
Definition net_stats.h:666
ICMP statistics.
Definition net_stats.h:114
net_stats_t sent
Number of sent ICMP packets.
Definition net_stats.h:119
net_stats_t chkerr
Number of ICMP packets with a bad checksum.
Definition net_stats.h:128
net_stats_t drop
Number of dropped ICMP packets.
Definition net_stats.h:122
net_stats_t typeerr
Number of ICMP packets with a wrong type.
Definition net_stats.h:125
net_stats_t recv
Number of received ICMP packets.
Definition net_stats.h:116
IP layer error statistics.
Definition net_stats.h:87
net_stats_t hblenerr
Number of packets dropped due to wrong IP length, high byte.
Definition net_stats.h:94
net_stats_t vhlerr
Number of packets dropped due to wrong IP version or header length.
Definition net_stats.h:91
net_stats_t chkerr
Number of packets dropped due to IP checksum errors.
Definition net_stats.h:103
net_stats_t protoerr
Number of packets dropped because they were neither ICMP, UDP nor TCP.
Definition net_stats.h:108
net_stats_t lblenerr
Number of packets dropped due to wrong IP length, low byte.
Definition net_stats.h:97
net_stats_t fragerr
Number of packets dropped because they were IP fragments.
Definition net_stats.h:100
IP layer statistics.
Definition net_stats.h:70
net_stats_t forwarded
Number of forwarded packets at the IP layer.
Definition net_stats.h:78
net_stats_t recv
Number of received packets at the IP layer.
Definition net_stats.h:72
net_stats_t sent
Number of sent packets at the IP layer.
Definition net_stats.h:75
net_stats_t drop
Number of dropped packets at the IP layer.
Definition net_stats.h:81
IPv4 IGMP daemon statistics.
Definition net_stats.h:253
net_stats_t drop
Number of dropped IPv4 IGMP packets.
Definition net_stats.h:261
net_stats_t recv
Number of received IPv4 IGMP queries.
Definition net_stats.h:255
net_stats_t sent
Number of sent IPv4 IGMP reports.
Definition net_stats.h:258
IPv4 Path MTU Discovery statistics.
Definition net_stats.h:225
net_stats_t sent
Number of sent IPv4 PMTU packets.
Definition net_stats.h:233
net_stats_t recv
Number of received IPv4 PMTU packets.
Definition net_stats.h:230
net_stats_t drop
Number of dropped IPv4 PMTU packets.
Definition net_stats.h:227
IPv6 multicast listener daemon statistics.
Definition net_stats.h:239
net_stats_t recv
Number of received IPv6 MLD queries.
Definition net_stats.h:241
net_stats_t sent
Number of sent IPv6 MLD reports.
Definition net_stats.h:244
net_stats_t drop
Number of dropped IPv6 MLD packets.
Definition net_stats.h:247
IPv6 neighbor discovery statistics.
Definition net_stats.h:197
net_stats_t sent
Number of sent IPv6 neighbor discovery packets.
Definition net_stats.h:205
net_stats_t recv
Number of received IPv6 neighbor discovery packets.
Definition net_stats.h:202
net_stats_t drop
Number of dropped IPv6 neighbor discovery packets.
Definition net_stats.h:199
IPv6 Path MTU Discovery statistics.
Definition net_stats.h:211
net_stats_t recv
Number of received IPv6 PMTU packets.
Definition net_stats.h:216
net_stats_t drop
Number of dropped IPv6 PMTU packets.
Definition net_stats.h:213
net_stats_t sent
Number of sent IPv6 PMTU packets.
Definition net_stats.h:219
Network packet filter statistics.
Definition net_stats.h:377
struct net_stats_pkt_filter::@432 tx
Network packet filter TX statistics.
struct net_stats_pkt_filter::@431 rx
Network packet filter RX statistics.
net_stats_t drop
Network packets dropped at network interface level.
Definition net_stats.h:381
Number of network packets sent and received.
Definition net_stats.h:60
net_stats_t rx
Number of packets received.
Definition net_stats.h:64
net_stats_t tx
Number of packets sent.
Definition net_stats.h:62
Power management statistics.
Definition net_stats.h:363
uint32_t last_suspend_time
How long the last suspend took.
Definition net_stats.h:369
uint32_t start_time
Network interface last suspend start time.
Definition net_stats.h:371
uint64_t overall_suspend_time
Total suspend time.
Definition net_stats.h:365
net_stats_t suspend_count
How many times we were suspended.
Definition net_stats.h:367
All PPP specific statistics.
Definition net_stats.h:677
net_stats_t chkerr
Number of received PPP frames with a bad checksum.
Definition net_stats.h:688
struct net_stats_pkts pkts
Total number of packets received and sent.
Definition net_stats.h:682
struct net_stats_bytes bytes
Total number of bytes received and sent.
Definition net_stats.h:679
net_stats_t drop
Number of received and dropped PPP frames.
Definition net_stats.h:685
Network packet receive times for calculating average RX time.
Definition net_stats.h:292
uint64_t sum
Sum of network packet receive times.
Definition net_stats.h:294
net_stats_t count
Number of network packets received.
Definition net_stats.h:297
All Wi-Fi management statistics.
Definition net_stats.h:694
net_stats_t beacons_miss
Number of missed beacons.
Definition net_stats.h:699
net_stats_t beacons_rx
Number of received beacons.
Definition net_stats.h:696
Traffic class statistics.
Definition net_stats.h:319
net_stats_t dropped
Number of packets dropped for this traffic class.
Definition net_stats.h:332
net_stats_t bytes
Number of bytes sent for this traffic class.
Definition net_stats.h:334
struct net_stats_tx_time tx_time
Helper for calculating average TX time statistics.
Definition net_stats.h:323
net_stats_t pkts
Number of packets sent for this traffic class.
Definition net_stats.h:330
uint8_t priority
Priority of this traffic class.
Definition net_stats.h:336
struct net_stats_tc::@429 sent[NET_TC_TX_STATS_COUNT]
TX statistics for each traffic class.
struct net_stats_tc::@430 recv[NET_TC_RX_STATS_COUNT]
RX statistics for each traffic class.
TCP statistics.
Definition net_stats.h:134
net_stats_t ackerr
Number of received TCP segments with a bad ACK number.
Definition net_stats.h:157
net_stats_t rsterr
Number of received bad TCP RST (reset) segments.
Definition net_stats.h:160
net_stats_t rexmit
Number of retransmitted TCP segments.
Definition net_stats.h:166
net_stats_t chkerr
Number of TCP segments with a bad checksum.
Definition net_stats.h:154
net_stats_t seg_drop
Number of dropped TCP segments.
Definition net_stats.h:151
net_stats_t connrst
Number of connection attempts for closed ports, triggering a RST.
Definition net_stats.h:174
net_stats_t drop
Number of dropped packets at the TCP layer.
Definition net_stats.h:142
net_stats_t rst
Number of received TCP RST (reset) segments.
Definition net_stats.h:163
net_stats_t sent
Number of sent TCP segments.
Definition net_stats.h:148
net_stats_t resent
Amount of retransmitted data.
Definition net_stats.h:139
net_stats_t conndrop
Number of dropped connection attempts because too few connections were available.
Definition net_stats.h:171
net_stats_t recv
Number of received TCP segments.
Definition net_stats.h:145
struct net_stats_bytes bytes
Amount of received and sent TCP application data.
Definition net_stats.h:136
Network packet transfer times for calculating average TX time.
Definition net_stats.h:281
net_stats_t count
Number of network packets transferred.
Definition net_stats.h:286
uint64_t sum
Sum of network packet transfer times.
Definition net_stats.h:283
UDP statistics.
Definition net_stats.h:180
net_stats_t recv
Number of received UDP segments.
Definition net_stats.h:185
net_stats_t drop
Number of dropped UDP segments.
Definition net_stats.h:182
net_stats_t chkerr
Number of UDP segments with a bad checksum.
Definition net_stats.h:191
net_stats_t sent
Number of sent UDP segments.
Definition net_stats.h:188
All Wi-Fi specific statistics.
Definition net_stats.h:705
struct net_stats_pkts broadcast
Total number of broadcast packets received and sent.
Definition net_stats.h:716
struct net_stats_pkts multicast
Total number of multicast packets received and sent.
Definition net_stats.h:719
struct net_stats_sta_mgmt sta_mgmt
Total number of beacon errors.
Definition net_stats.h:707
struct net_stats_bytes bytes
Total number of bytes received and sent.
Definition net_stats.h:710
net_stats_t overrun_count
Total number of dropped packets at received and sent.
Definition net_stats.h:728
struct net_stats_pkts pkts
Total number of packets received and sent.
Definition net_stats.h:713
struct net_stats_pkts errors
Total number of errors in RX and TX.
Definition net_stats.h:722
struct net_stats_pkts unicast
Total number of unicast packets received and sent.
Definition net_stats.h:725
All network statistics in one struct.
Definition net_stats.h:406
net_stats_t processing_error
Count of malformed packets or packets we do not have handler for.
Definition net_stats.h:408
struct net_stats_bytes bytes
This calculates amount of data transferred through all the network interfaces.
Definition net_stats.h:414
struct net_stats_ip_errors ip_errors
IP layer errors.
Definition net_stats.h:417
Prometheus summary APIs.