Zephyr API Documentation 4.5.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
net_stats.h
Go to the documentation of this file.
1
7
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
40
46
56
66
83
110
130
176
193
210
224
238
252
266
280
294
305
316
318
319#if NET_TC_TX_COUNT == 0
320#define NET_TC_TX_STATS_COUNT 1
321#else
322#define NET_TC_TX_STATS_COUNT NET_TC_TX_COUNT
323#endif
324
325#if NET_TC_RX_COUNT == 0
326#define NET_TC_RX_STATS_COUNT 1
327#else
328#define NET_TC_RX_STATS_COUNT NET_TC_RX_COUNT
329#endif
330
332
338 struct {
343#if defined(CONFIG_NET_PKT_TXTIME_STATS_DETAIL)
345 struct net_stats_tx_time
346 tx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
347#endif
354 } sent[NET_TC_TX_STATS_COUNT];
355
357 struct {
359 uint64_t bytes;
362#if defined(CONFIG_NET_PKT_RXTIME_STATS_DETAIL)
364 struct net_stats_rx_time
365 rx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
366#endif
373 } recv[NET_TC_RX_STATS_COUNT];
374};
375
376
390
396 struct {
399#if defined(CONFIG_NET_PKT_FILTER_IPV4_HOOK)
401 net_stats_t ipv4_drop;
402#endif
403#if defined(CONFIG_NET_PKT_FILTER_IPV6_HOOK)
405 net_stats_t ipv6_drop;
406#endif
407#if defined(CONFIG_NET_PKT_FILTER_LOCAL_IN_HOOK)
409 net_stats_t local_drop;
410#endif
411 } rx;
412
414 struct {
417 } tx;
418};
419
423struct net_stats {
429
435
438
439#if defined(CONFIG_NET_STATISTICS_PKT_FILTER)
440 struct net_stats_pkt_filter pkt_filter;
441#endif
442
443#if defined(CONFIG_NET_STATISTICS_IPV6)
445 struct net_stats_ip ipv6;
446#endif
447
448#if defined(CONFIG_NET_STATISTICS_IPV4)
450 struct net_stats_ip ipv4;
451#endif
452
453#if defined(CONFIG_NET_STATISTICS_ICMP)
455 struct net_stats_icmp icmp;
456#endif
457
458#if defined(CONFIG_NET_STATISTICS_TCP)
460 struct net_stats_tcp tcp;
461#endif
462
463#if defined(CONFIG_NET_STATISTICS_UDP)
465 struct net_stats_udp udp;
466#endif
467
468#if defined(CONFIG_NET_STATISTICS_RAW)
470 struct net_stats_raw raw;
471#endif
472
473#if defined(CONFIG_NET_STATISTICS_IPV6_ND)
475 struct net_stats_ipv6_nd ipv6_nd;
476#endif
477
478#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU)
480 struct net_stats_ipv6_pmtu ipv6_pmtu;
481#endif
482
483#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU)
485 struct net_stats_ipv4_pmtu ipv4_pmtu;
486#endif
487
488#if defined(CONFIG_NET_STATISTICS_MLD)
490 struct net_stats_ipv6_mld ipv6_mld;
491#endif
492
493#if defined(CONFIG_NET_STATISTICS_IGMP)
495 struct net_stats_ipv4_igmp ipv4_igmp;
496#endif
497
498#if defined(CONFIG_NET_STATISTICS_DNS)
500 struct net_stats_dns dns;
501#endif
502
503#if NET_TC_COUNT > 1
505 struct net_stats_tc tc;
506#endif
507
508#if defined(CONFIG_NET_PKT_TXTIME_STATS)
510 struct net_stats_tx_time tx_time;
511#endif
512
513#if defined(CONFIG_NET_PKT_RXTIME_STATS)
515 struct net_stats_rx_time rx_time;
516#endif
517
518#if defined(CONFIG_NET_PKT_TXTIME_STATS_DETAIL)
520 struct net_stats_tx_time tx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
521#endif
522#if defined(CONFIG_NET_PKT_RXTIME_STATS_DETAIL)
524 struct net_stats_rx_time rx_time_detail[NET_PKT_DETAIL_STATS_COUNT];
525#endif
526
527#if defined(CONFIG_NET_STATISTICS_POWER_MANAGEMENT)
529 struct net_stats_pm pm;
530#endif
531};
532
594
611
622
636
637#ifdef CONFIG_NET_STATISTICS_ETHERNET_VENDOR
641struct net_stats_eth_vendor {
642 const char * const key;
643 uint32_t value;
644};
645#endif
646
698
715
726
755
756#if defined(CONFIG_NET_STATISTICS_USER_API)
757/* Management part definitions */
758
760
761#define NET_STATS_LAYER NET_MGMT_LAYER_L3
762#define NET_STATS_CODE NET_MGMT_LAYER_CODE_STATS
763#define NET_STATS_BASE (NET_MGMT_LAYER(NET_STATS_LAYER) | \
764 NET_MGMT_LAYER_CODE(NET_STATS_CODE))
765
766enum net_request_stats_cmd {
767 NET_REQUEST_STATS_CMD_GET_ALL = 1,
768 NET_REQUEST_STATS_CMD_GET_PROCESSING_ERROR,
769 NET_REQUEST_STATS_CMD_GET_PKT_FILTER_DROP,
770 NET_REQUEST_STATS_CMD_GET_BYTES,
771 NET_REQUEST_STATS_CMD_GET_IP_ERRORS,
772 NET_REQUEST_STATS_CMD_GET_IPV4,
773 NET_REQUEST_STATS_CMD_GET_IPV6,
774 NET_REQUEST_STATS_CMD_GET_IPV6_ND,
775 NET_REQUEST_STATS_CMD_GET_IPV6_PMTU,
776 NET_REQUEST_STATS_CMD_GET_IPV4_PMTU,
777 NET_REQUEST_STATS_CMD_GET_ICMP,
778 NET_REQUEST_STATS_CMD_GET_UDP,
779 NET_REQUEST_STATS_CMD_GET_RAW,
780 NET_REQUEST_STATS_CMD_GET_TCP,
781 NET_REQUEST_STATS_CMD_GET_ETHERNET,
782 NET_REQUEST_STATS_CMD_GET_PPP,
783 NET_REQUEST_STATS_CMD_GET_PM,
784 NET_REQUEST_STATS_CMD_GET_WIFI,
785 NET_REQUEST_STATS_CMD_RESET_WIFI,
786 NET_REQUEST_STATS_CMD_GET_VPN,
787};
788
790
792#define NET_REQUEST_STATS_GET_ALL \
793 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_ALL)
794
796#define NET_REQUEST_STATS_GET_PROCESSING_ERROR \
797 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PROCESSING_ERROR)
798
800#define NET_REQUEST_STATS_GET_PKT_FILTER_DROP \
801 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PKT_FILTER_DROP)
802
804#define NET_REQUEST_STATS_GET_BYTES \
805 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_BYTES)
806
808#define NET_REQUEST_STATS_GET_IP_ERRORS \
809 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IP_ERRORS)
810
812
813NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_ALL);
814NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PROCESSING_ERROR);
815NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_BYTES);
816NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IP_ERRORS);
817
818#if defined(CONFIG_NET_STATISTICS_PKT_FILTER)
819NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PKT_FILTER_DROP);
820#endif /* CONFIG_NET_STATISTICS_PKT_FILTER */
821
823
824#if defined(CONFIG_NET_STATISTICS_IPV4)
826#define NET_REQUEST_STATS_GET_IPV4 \
827 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV4)
828
830NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV4);
832#endif /* CONFIG_NET_STATISTICS_IPV4 */
833
834#if defined(CONFIG_NET_STATISTICS_IPV6)
836#define NET_REQUEST_STATS_GET_IPV6 \
837 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6)
838
840NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6);
842#endif /* CONFIG_NET_STATISTICS_IPV6 */
843
844#if defined(CONFIG_NET_STATISTICS_IPV6_ND)
846#define NET_REQUEST_STATS_GET_IPV6_ND \
847 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6_ND)
848
850NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6_ND);
852#endif /* CONFIG_NET_STATISTICS_IPV6_ND */
853
854#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU)
856#define NET_REQUEST_STATS_GET_IPV6_PMTU \
857 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6_PMTU)
858
860NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6_PMTU);
862#endif /* CONFIG_NET_STATISTICS_IPV6_PMTU */
863
864#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU)
866#define NET_REQUEST_STATS_GET_IPV4_PMTU \
867 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV4_PMTU)
868
870NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV4_PMTU);
872#endif /* CONFIG_NET_STATISTICS_IPV4_PMTU */
873
874#if defined(CONFIG_NET_STATISTICS_ICMP)
876#define NET_REQUEST_STATS_GET_ICMP \
877 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_ICMP)
878
880NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_ICMP);
882#endif /* CONFIG_NET_STATISTICS_ICMP */
883
884#if defined(CONFIG_NET_STATISTICS_UDP)
886#define NET_REQUEST_STATS_GET_UDP \
887 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_UDP)
888
890NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_UDP);
892#endif /* CONFIG_NET_STATISTICS_UDP */
893
894#if defined(CONFIG_NET_STATISTICS_RAW)
896#define NET_REQUEST_STATS_GET_RAW \
897 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_RAW)
898
900NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_RAW);
902#endif /* CONFIG_NET_STATISTICS_RAW */
903
904#if defined(CONFIG_NET_STATISTICS_TCP)
906#define NET_REQUEST_STATS_GET_TCP \
907 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_TCP)
908
910NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_TCP);
912#endif /* CONFIG_NET_STATISTICS_TCP */
913
914#if defined(CONFIG_NET_STATISTICS_ETHERNET)
916#define NET_REQUEST_STATS_GET_ETHERNET \
917 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_ETHERNET)
918
920NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_ETHERNET);
922#endif /* CONFIG_NET_STATISTICS_ETHERNET */
923
924#if defined(CONFIG_NET_STATISTICS_PPP)
926#define NET_REQUEST_STATS_GET_PPP \
927 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PPP)
928
930NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PPP);
932#endif /* CONFIG_NET_STATISTICS_PPP */
933
934#if defined(CONFIG_NET_STATISTICS_VPN)
936#define NET_REQUEST_STATS_GET_VPN \
937 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_VPN)
938
940NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_VPN);
942#endif /* CONFIG_NET_STATISTICS_VPN */
943
944#endif /* CONFIG_NET_STATISTICS_USER_API */
945
946#if defined(CONFIG_NET_STATISTICS_POWER_MANAGEMENT)
948#define NET_REQUEST_STATS_GET_PM \
949 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_PM)
950
952NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PM);
954#endif /* CONFIG_NET_STATISTICS_POWER_MANAGEMENT */
955
956#if defined(CONFIG_NET_STATISTICS_WIFI)
958#define NET_REQUEST_STATS_GET_WIFI \
959 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_WIFI)
960
962NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_WIFI);
964
966#define NET_REQUEST_STATS_RESET_WIFI \
967 (NET_STATS_BASE | NET_REQUEST_STATS_CMD_RESET_WIFI)
968
970NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_RESET_WIFI);
972#endif /* CONFIG_NET_STATISTICS_WIFI */
973
974#define NET_STATS_GET_METRIC_NAME(_name) _name
975#define NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx) net_stats_##dev_id##_##sfx##_collector
976#define NET_STATS_GET_VAR(dev_id, sfx, var) zephyr_net_##dev_id##_##sfx##_##var
977#define NET_STATS_GET_INSTANCE(dev_id, sfx, _not_used) STRINGIFY(_##dev_id##_##sfx)
978
979/* The label value is set to be the network interface name. Note that we skip
980 * the first character (_) when setting the label value. This can be changed
981 * if there is a way to token paste the instance name without the prefix character.
982 * Note also that the below macros have some parameters that are not used atm.
983 */
984#define NET_STATS_PROMETHEUS_COUNTER_DEFINE(_desc, _labelval, _not_used, \
985 _collector, _name, _stat_var_ptr) \
986 static PROMETHEUS_COUNTER_DEFINE( \
987 NET_STATS_GET_METRIC_NAME(_name), \
988 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
989 &(_collector), _stat_var_ptr)
990
991#define NET_STATS_PROMETHEUS_GAUGE_DEFINE(_desc, _labelval, _not_used, \
992 _collector, _name, _stat_var_ptr) \
993 static PROMETHEUS_GAUGE_DEFINE( \
994 NET_STATS_GET_METRIC_NAME(_name), \
995 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
996 &(_collector), _stat_var_ptr)
997
998#define NET_STATS_PROMETHEUS_SUMMARY_DEFINE(_desc, _labelval, _not_used, \
999 _collector, _name, _stat_var_ptr) \
1000 static PROMETHEUS_SUMMARY_DEFINE( \
1001 NET_STATS_GET_METRIC_NAME(_name), \
1002 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
1003 &(_collector), _stat_var_ptr)
1004
1005#define NET_STATS_PROMETHEUS_HISTOGRAM_DEFINE(_desc, _labelval, _not_used, \
1006 _collector, _name, _stat_var_ptr) \
1007 static PROMETHEUS_HISTOGRAM_DEFINE( \
1008 NET_STATS_GET_METRIC_NAME(_name), \
1009 _desc, ({ .key = "nic", .value = &_labelval[1] }), \
1010 &(_collector), _stat_var_ptr)
1011
1012/* IPv6 layer statistics */
1013#if defined(CONFIG_NET_STATISTICS_IPV6)
1014#define NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx) \
1015 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1016 "IPv6 packets sent", \
1017 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_sent), \
1018 "packet_count", \
1019 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1020 NET_STATS_GET_VAR(dev_id, sfx, ipv6_sent), \
1021 &(iface)->stats.ipv6.sent); \
1022 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1023 "IPv6 packets received", \
1024 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_recv), \
1025 "packet_count", \
1026 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1027 NET_STATS_GET_VAR(dev_id, sfx, ipv6_recv), \
1028 &(iface)->stats.ipv6.recv); \
1029 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1030 "IPv6 packets dropped", \
1031 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_drop), \
1032 "packet_count", \
1033 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1034 NET_STATS_GET_VAR(dev_id, sfx, ipv6_drop), \
1035 &(iface)->stats.ipv6.drop); \
1036 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1037 "IPv6 packets forwarded", \
1038 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_forward), \
1039 "packet_count", \
1040 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1041 NET_STATS_GET_VAR(dev_id, sfx, ipv6_forwarded), \
1042 &(iface)->stats.ipv6.forwarded)
1043#else
1044#define NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx)
1045#endif
1046
1047/* IPv4 layer statistics */
1048#if defined(CONFIG_NET_STATISTICS_IPV4)
1049#define NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx) \
1050 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1051 "IPv4 packets sent", \
1052 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_sent), \
1053 "packet_count", \
1054 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1055 NET_STATS_GET_VAR(dev_id, sfx, ipv4_sent), \
1056 &(iface)->stats.ipv4.sent); \
1057 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1058 "IPv4 packets received", \
1059 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_recv), \
1060 "packet_count", \
1061 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1062 NET_STATS_GET_VAR(dev_id, sfx, ipv4_recv), \
1063 &(iface)->stats.ipv4.recv); \
1064 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1065 "IPv4 packets dropped", \
1066 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_drop), \
1067 "packet_count", \
1068 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1069 NET_STATS_GET_VAR(dev_id, sfx, ipv4_drop), \
1070 &(iface)->stats.ipv4.drop); \
1071 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1072 "IPv4 packets forwarded", \
1073 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_forwarded), \
1074 "packet_count", \
1075 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1076 NET_STATS_GET_VAR(dev_id, sfx, ipv4_forwarded), \
1077 &(iface)->stats.ipv4.forwarded)
1078#else
1079#define NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx)
1080#endif
1081
1082/* ICMP layer statistics */
1083#if defined(CONFIG_NET_STATISTICS_ICMP)
1084#define NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx) \
1085 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1086 "ICMP packets sent", \
1087 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_sent), \
1088 "packet_count", \
1089 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1090 NET_STATS_GET_VAR(dev_id, sfx, icmp_sent), \
1091 &(iface)->stats.icmp.sent); \
1092 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1093 "ICMP packets received", \
1094 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_recv), \
1095 "packet_count", \
1096 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1097 NET_STATS_GET_VAR(dev_id, sfx, icmp_recv), \
1098 &(iface)->stats.icmp.recv); \
1099 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1100 "ICMP packets dropped", \
1101 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_drop), \
1102 "packet_count", \
1103 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1104 NET_STATS_GET_VAR(dev_id, sfx, icmp_drop), \
1105 &(iface)->stats.icmp.drop); \
1106 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1107 "ICMP packets checksum error", \
1108 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_chkerr), \
1109 "packet_count", \
1110 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1111 NET_STATS_GET_VAR(dev_id, sfx, icmp_chkerr), \
1112 &(iface)->stats.icmp.chkerr); \
1113 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1114 "ICMP packets type error", \
1115 NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_typeerr), \
1116 "packet_count", \
1117 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1118 NET_STATS_GET_VAR(dev_id, sfx, icmp_typeerr), \
1119 &(iface)->stats.icmp.typeerr)
1120#else
1121#define NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx)
1122#endif
1123
1124/* UDP layer statistics */
1125#if defined(CONFIG_NET_STATISTICS_UDP)
1126#define NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx) \
1127 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1128 "UDP packets sent", \
1129 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_sent), \
1130 "packet_count", \
1131 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1132 NET_STATS_GET_VAR(dev_id, sfx, udp_sent), \
1133 &(iface)->stats.udp.sent); \
1134 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1135 "UDP packets received", \
1136 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_recv), \
1137 "packet_count", \
1138 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1139 NET_STATS_GET_VAR(dev_id, sfx, udp_recv), \
1140 &(iface)->stats.udp.recv); \
1141 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1142 "UDP packets dropped", \
1143 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_drop), \
1144 "packet_count", \
1145 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1146 NET_STATS_GET_VAR(dev_id, sfx, udp_drop), \
1147 &(iface)->stats.udp.drop); \
1148 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1149 "UDP packets checksum error", \
1150 NET_STATS_GET_INSTANCE(dev_id, sfx, udp_chkerr), \
1151 "packet_count", \
1152 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1153 NET_STATS_GET_VAR(dev_id, sfx, udp_chkerr), \
1154 &(iface)->stats.udp.chkerr)
1155#else
1156#define NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx)
1157#endif
1158
1159/* Raw packet socket statistics */
1160#if defined(CONFIG_NET_STATISTICS_RAW)
1161#define NET_STATS_PROMETHEUS_RAW(iface, dev_id, sfx) \
1162 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1163 "Raw packets sent", \
1164 NET_STATS_GET_INSTANCE(dev_id, sfx, raw_sent), \
1165 "packet_count", \
1166 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1167 NET_STATS_GET_VAR(dev_id, sfx, raw_sent), \
1168 &(iface)->stats.raw.sent); \
1169 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1170 "Raw packets received", \
1171 NET_STATS_GET_INSTANCE(dev_id, sfx, raw_recv), \
1172 "packet_count", \
1173 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1174 NET_STATS_GET_VAR(dev_id, sfx, raw_recv), \
1175 &(iface)->stats.raw.recv); \
1176 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1177 "Raw packets dropped", \
1178 NET_STATS_GET_INSTANCE(dev_id, sfx, raw_drop), \
1179 "packet_count", \
1180 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1181 NET_STATS_GET_VAR(dev_id, sfx, raw_drop), \
1182 &(iface)->stats.raw.drop); \
1183 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1184 "Raw bytes sent", \
1185 NET_STATS_GET_INSTANCE(dev_id, sfx, raw_bytes_sent), \
1186 "byte_count", \
1187 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1188 NET_STATS_GET_VAR(dev_id, sfx, raw_bytes_sent), \
1189 &(iface)->stats.raw.bytes.sent); \
1190 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1191 "Raw bytes received", \
1192 NET_STATS_GET_INSTANCE(dev_id, sfx, raw_bytes_recv), \
1193 "byte_count", \
1194 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1195 NET_STATS_GET_VAR(dev_id, sfx, raw_bytes_recv), \
1196 &(iface)->stats.raw.bytes.received)
1197#else
1199#define NET_STATS_PROMETHEUS_RAW(iface, dev_id, sfx)
1201#endif
1202
1203/* TCP layer statistics */
1204#if defined(CONFIG_NET_STATISTICS_TCP)
1205#define NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx) \
1206 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1207 "TCP bytes sent", \
1208 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_sent), \
1209 "byte_count", \
1210 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1211 NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_sent), \
1212 &(iface)->stats.tcp.bytes.sent); \
1213 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1214 "TCP bytes received", \
1215 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_recv), \
1216 "byte_count", \
1217 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1218 NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_recv), \
1219 &(iface)->stats.tcp.bytes.received); \
1220 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1221 "TCP bytes resent", \
1222 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_resent), \
1223 "byte_count", \
1224 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1225 NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_resent), \
1226 &(iface)->stats.tcp.resent); \
1227 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1228 "TCP packets sent", \
1229 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_sent), \
1230 "packet_count", \
1231 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1232 NET_STATS_GET_VAR(dev_id, sfx, tcp_sent), \
1233 &(iface)->stats.tcp.sent); \
1234 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1235 "TCP packets received", \
1236 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_recv), \
1237 "packet_count", \
1238 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1239 NET_STATS_GET_VAR(dev_id, sfx, tcp_recv), \
1240 &(iface)->stats.tcp.recv); \
1241 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1242 "TCP packets dropped", \
1243 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_drop), \
1244 "packet_count", \
1245 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1246 NET_STATS_GET_VAR(dev_id, sfx, tcp_drop), \
1247 &(iface)->stats.tcp.drop); \
1248 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1249 "TCP packets checksum error", \
1250 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_chkerr), \
1251 "packet_count", \
1252 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1253 NET_STATS_GET_VAR(dev_id, sfx, tcp_chkerr), \
1254 &(iface)->stats.tcp.chkerr); \
1255 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1256 "TCP packets ack error", \
1257 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_ackerr), \
1258 "packet_count", \
1259 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1260 NET_STATS_GET_VAR(dev_id, sfx, tcp_ackerr), \
1261 &(iface)->stats.tcp.ackerr); \
1262 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1263 "TCP packets reset error", \
1264 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rsterr), \
1265 "packet_count", \
1266 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1267 NET_STATS_GET_VAR(dev_id, sfx, tcp_rsterr), \
1268 &(iface)->stats.tcp.rsterr); \
1269 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1270 "TCP packets retransmitted", \
1271 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rexmit), \
1272 "packet_count", \
1273 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1274 NET_STATS_GET_VAR(dev_id, sfx, tcp_rexmit), \
1275 &(iface)->stats.tcp.rexmit); \
1276 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1277 "TCP reset received", \
1278 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rst_recv), \
1279 "packet_count", \
1280 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1281 NET_STATS_GET_VAR(dev_id, sfx, tcp_rst), \
1282 &(iface)->stats.tcp.rst); \
1283 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1284 "TCP connection drop", \
1285 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_conndrop), \
1286 "packet_count", \
1287 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1288 NET_STATS_GET_VAR(dev_id, sfx, tcp_conndrop), \
1289 &(iface)->stats.tcp.conndrop); \
1290 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1291 "TCP connection reset", \
1292 NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_connrst), \
1293 "packet_count", \
1294 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1295 NET_STATS_GET_VAR(dev_id, sfx, tcp_connrst), \
1296 &(iface)->stats.tcp.connrst)
1297#else
1298#define NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx)
1299#endif
1300
1301/* IPv6 Neighbor Discovery statistics */
1302#if defined(CONFIG_NET_STATISTICS_IPV6_ND)
1303#define NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx) \
1304 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1305 "IPv6 ND packets sent", \
1306 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_sent), \
1307 "packet_count", \
1308 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1309 NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_sent), \
1310 &(iface)->stats.ipv6_nd.sent); \
1311 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1312 "IPv6 ND packets received", \
1313 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_recv), \
1314 "packet_count", \
1315 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1316 NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_recv), \
1317 &(iface)->stats.ipv6_nd.recv); \
1318 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1319 "IPv6 ND packets dropped", \
1320 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_drop), \
1321 "packet_count", \
1322 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1323 NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_drop), \
1324 &(iface)->stats.ipv6_nd.drop)
1325#else
1326#define NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx)
1327#endif
1328
1329/* IPv6 Path MTU Discovery statistics */
1330#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU)
1331#define NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx) \
1332 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1333 "IPv6 PMTU packets sent", \
1334 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_sent), \
1335 "packet_count", \
1336 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1337 NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_sent), \
1338 &(iface)->stats.ipv6_pmtu.sent); \
1339 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1340 "IPv6 PMTU packets received", \
1341 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_recv), \
1342 "packet_count", \
1343 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1344 NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_recv), \
1345 &(iface)->stats.ipv6_pmtu.recv); \
1346 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1347 "IPv6 PMTU packets dropped", \
1348 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_drop), \
1349 "packet_count", \
1350 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1351 NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_drop), \
1352 &(iface)->stats.ipv6_pmtu.drop)
1353#else
1354#define NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx)
1355#endif
1356
1357/* IPv4 Path MTU Discovery statistics */
1358#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU)
1359#define NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx) \
1360 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1361 "IPv4 PMTU packets sent", \
1362 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_sent), \
1363 "packet_count", \
1364 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1365 NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_sent), \
1366 &(iface)->stats.ipv4_pmtu.sent); \
1367 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1368 "IPv4 PMTU packets received", \
1369 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_recv), \
1370 "packet_count", \
1371 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1372 NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_recv), \
1373 &(iface)->stats.ipv4_pmtu.recv); \
1374 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1375 "IPv4 PMTU packets dropped", \
1376 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_drop), \
1377 "packet_count", \
1378 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1379 NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_drop), \
1380 &(iface)->stats.ipv4_pmtu.drop)
1381#else
1382#define NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx)
1383#endif
1384
1385/* IPv6 Multicast Listener Discovery statistics */
1386#if defined(CONFIG_NET_STATISTICS_MLD)
1387#define NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx) \
1388 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1389 "IPv6 MLD packets sent", \
1390 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_sent), \
1391 "packet_count", \
1392 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1393 NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_sent), \
1394 &(iface)->stats.ipv6_mld.sent); \
1395 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1396 "IPv6 MLD packets received", \
1397 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_recv), \
1398 "packet_count", \
1399 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1400 NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_recv), \
1401 &(iface)->stats.ipv6_mld.recv); \
1402 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1403 "IPv6 MLD packets dropped", \
1404 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_drop), \
1405 "packet_count", \
1406 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1407 NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_drop), \
1408 &(iface)->stats.ipv6_mld.drop)
1409#else
1410#define NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx)
1411#endif
1412
1413/* IPv4 IGMP statistics */
1414#if defined(CONFIG_NET_STATISTICS_IGMP)
1415#define NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx) \
1416 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1417 "IPv4 IGMP packets sent", \
1418 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_sent), \
1419 "packet_count", \
1420 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1421 NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_sent), \
1422 &(iface)->stats.ipv4_igmp.sent); \
1423 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1424 "IPv4 IGMP packets received", \
1425 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_recv), \
1426 "packet_count", \
1427 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1428 NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_recv), \
1429 &(iface)->stats.ipv4_igmp.recv); \
1430 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1431 "IPv4 IGMP packets dropped", \
1432 NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_drop), \
1433 "packet_count", \
1434 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1435 NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_drop), \
1436 &(iface)->stats.ipv4_igmp.drop)
1437#else
1438#define NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx)
1439#endif
1440
1441/* DNS statistics */
1442#if defined(CONFIG_NET_STATISTICS_DNS)
1443#define NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx) \
1444 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1445 "DNS packets sent", \
1446 NET_STATS_GET_INSTANCE(dev_id, sfx, dns_sent), \
1447 "packet_count", \
1448 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1449 NET_STATS_GET_VAR(dev_id, sfx, dns_sent), \
1450 &(iface)->stats.dns.sent); \
1451 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1452 "DNS packets received", \
1453 NET_STATS_GET_INSTANCE(dev_id, sfx, dns_recv), \
1454 "packet_count", \
1455 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1456 NET_STATS_GET_VAR(dev_id, sfx, dns_recv), \
1457 &(iface)->stats.dns.recv); \
1458 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1459 "DNS packets dropped", \
1460 NET_STATS_GET_INSTANCE(dev_id, sfx, dns_drop), \
1461 "packet_count", \
1462 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1463 NET_STATS_GET_VAR(dev_id, sfx, dns_drop), \
1464 &(iface)->stats.dns.drop)
1465#else
1466#define NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx)
1467#endif
1468
1469/* TX time statistics */
1470#if defined(CONFIG_NET_PKT_TXTIME_STATS)
1471#define NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx) \
1472 NET_STATS_PROMETHEUS_SUMMARY_DEFINE( \
1473 "TX time in microseconds", \
1474 NET_STATS_GET_INSTANCE(dev_id, sfx, tx_time), \
1475 "time", \
1476 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1477 NET_STATS_GET_VAR(dev_id, sfx, tx_time), \
1478 &(iface)->stats.tx_time)
1479#else
1480#define NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx)
1481#endif
1482
1483/* RX time statistics */
1484#if defined(CONFIG_NET_PKT_RXTIME_STATS)
1485#define NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx) \
1486 NET_STATS_PROMETHEUS_SUMMARY_DEFINE( \
1487 "RX time in microseconds", \
1488 NET_STATS_GET_INSTANCE(dev_id, sfx, rx_time), \
1489 "time", \
1490 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1491 NET_STATS_GET_VAR(dev_id, sfx, rx_time), \
1492 &(iface)->stats.rx_time)
1493#else
1494#define NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx)
1495#endif
1496
1497#define NET_STATS_PROMETHEUS_PKT_FILTER_IPV4(iface, dev_id, sfx) \
1498 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1499 "Packet filter RX IPv4 drop", \
1500 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_ipv4_drop), \
1501 "packet_count", \
1502 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1503 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_ipv4_drop),\
1504 &(iface)->stats.pkt_filter.rx.ipv4_drop);
1505
1506#define NET_STATS_PROMETHEUS_PKT_FILTER_IPV6(iface, dev_id, sfx) \
1507 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1508 "Packet filter RX IPv6 drop", \
1509 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_ipv6_drop), \
1510 "packet_count", \
1511 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1512 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_ipv6_drop),\
1513 &(iface)->stats.pkt_filter.rx.ipv6_drop);
1514
1515#define NET_STATS_PROMETHEUS_PKT_FILTER_LOCAL(iface, dev_id, sfx) \
1516 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1517 "Packet filter RX local drop", \
1518 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_local_drop), \
1519 "packet_count", \
1520 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1521 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_local_drop),\
1522 &(iface)->stats.pkt_filter.rx.local_drop);
1523
1524#define NET_STATS_PROMETHEUS_PKT_FILTER(iface, dev_id, sfx) \
1525 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1526 "Packet filter RX drop", \
1527 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_rx_drop),\
1528 "packet_count", \
1529 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1530 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_rx_drop), \
1531 &(iface)->stats.pkt_filter.rx.drop); \
1532 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1533 "Packet filter TX drop", \
1534 NET_STATS_GET_INSTANCE(dev_id, sfx, pkt_filter_tx_drop),\
1535 "packet_count", \
1536 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1537 NET_STATS_GET_VAR(dev_id, sfx, pkt_filter_tx_drop), \
1538 &(iface)->stats.pkt_filter.tx.drop); \
1539 IF_ENABLED(CONFIG_NET_PKT_FILTER_IPV4_HOOK, \
1540 (NET_STATS_PROMETHEUS_PKT_FILTER_IPV4(iface, dev_id, sfx))) \
1541 IF_ENABLED(CONFIG_NET_PKT_FILTER_IPV6_HOOK, \
1542 (NET_STATS_PROMETHEUS_PKT_FILTER_IPV6(iface, dev_id, sfx))) \
1543 IF_ENABLED(CONFIG_NET_PKT_FILTER_LOCAL_IN_HOOK, \
1544 (NET_STATS_PROMETHEUS_PKT_FILTER_LOCAL(iface, dev_id, sfx)))
1545
1546/* Per network interface statistics via Prometheus */
1547#define NET_STATS_PROMETHEUS(iface, dev_id, sfx) \
1548 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1549 "Processing error", \
1550 NET_STATS_GET_INSTANCE(dev_id, sfx, process_error), \
1551 "error_count", \
1552 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1553 NET_STATS_GET_VAR(dev_id, sfx, processing_error), \
1554 &(iface)->stats.processing_error); \
1555 IF_ENABLED(CONFIG_NET_STATISTICS_PKT_FILTER, \
1556 (NET_STATS_PROMETHEUS_PKT_FILTER(iface, dev_id, sfx))) \
1557 /* IP layer error statistics */ \
1558 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1559 "IP proto error", \
1560 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_proto_error), \
1561 "error_count", \
1562 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1563 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_protoerr), \
1564 &(iface)->stats.ip_errors.protoerr); \
1565 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1566 "IP version/header len error", \
1567 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_vhl_error), \
1568 "error_count", \
1569 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1570 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_vhlerr), \
1571 &(iface)->stats.ip_errors.vhlerr); \
1572 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1573 "IP header len error (high byte)", \
1574 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_hblen_error), \
1575 "error_count", \
1576 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1577 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_hblenerr), \
1578 &(iface)->stats.ip_errors.hblenerr); \
1579 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1580 "IP header len error (low byte)", \
1581 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_lblen_error), \
1582 "error_count", \
1583 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1584 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_lblenerr), \
1585 &(iface)->stats.ip_errors.lblenerr); \
1586 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1587 "IP fragment error", \
1588 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_frag_error), \
1589 "error_count", \
1590 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1591 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_fragerr), \
1592 &(iface)->stats.ip_errors.fragerr); \
1593 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1594 "IP checksum error", \
1595 NET_STATS_GET_INSTANCE(dev_id, sfx, ip_chk_error), \
1596 "error_count", \
1597 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1598 NET_STATS_GET_VAR(dev_id, sfx, ip_errors_chkerr), \
1599 &(iface)->stats.ip_errors.chkerr); \
1600 /* General network statistics */ \
1601 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1602 "Bytes received", \
1603 NET_STATS_GET_INSTANCE(dev_id, sfx, bytes_recv), \
1604 "byte_count", \
1605 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1606 NET_STATS_GET_VAR(dev_id, sfx, bytes_recv), \
1607 &(iface)->stats.bytes.received); \
1608 NET_STATS_PROMETHEUS_COUNTER_DEFINE( \
1609 "Bytes sent", \
1610 NET_STATS_GET_INSTANCE(dev_id, sfx, bytes_sent), \
1611 "byte_count", \
1612 NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \
1613 NET_STATS_GET_VAR(dev_id, sfx, bytes_sent), \
1614 &(iface)->stats.bytes.sent); \
1615 NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx); \
1616 NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx); \
1617 NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx); \
1618 NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx); \
1619 NET_STATS_PROMETHEUS_RAW(iface, dev_id, sfx); \
1620 NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx); \
1621 NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx); \
1622 NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx); \
1623 NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx); \
1624 NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx); \
1625 NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx); \
1626 NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx); \
1627 NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx); \
1628 NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx)
1629
1633
1634#ifdef __cplusplus
1635}
1636#endif
1637
1638#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:130
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.
ssize_t recv(int sock, void *buf, size_t max_len, int flags)
__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
uint64_t sent
Number of bytes sent.
Definition net_stats.h:52
uint64_t received
Number of bytes received.
Definition net_stats.h:54
DNS statistics.
Definition net_stats.h:284
net_stats_t drop
Number of dropped DNS packets.
Definition net_stats.h:292
net_stats_t recv
Number of received DNS queries.
Definition net_stats.h:286
net_stats_t sent
Number of sent DNS responses.
Definition net_stats.h:289
Ethernet checksum statistics.
Definition net_stats.h:615
net_stats_t rx_csum_offload_good
Number of good RX checksum offloading.
Definition net_stats.h:617
net_stats_t rx_csum_offload_errors
Number of failed RX checksum offloading.
Definition net_stats.h:620
Ethernet error statistics.
Definition net_stats.h:536
net_stats_t tx_carrier_errors
Number of TX carrier errors.
Definition net_stats.h:574
net_stats_t uncorr_ecc_errors
Number of uncorrected ECC errors.
Definition net_stats.h:589
net_stats_t rx_long_length_errors
Number of RX long length errors.
Definition net_stats.h:556
net_stats_t tx_window_errors
Number of TX window errors.
Definition net_stats.h:583
net_stats_t corr_ecc_errors
Number of corrected ECC errors.
Definition net_stats.h:592
net_stats_t rx_missed_errors
Number of RX missed errors.
Definition net_stats.h:553
net_stats_t rx_crc_errors
Number of RX CRC errors.
Definition net_stats.h:544
net_stats_t rx_short_length_errors
Number of RX short length errors.
Definition net_stats.h:559
net_stats_t rx_align_errors
Number of RX buffer align errors.
Definition net_stats.h:562
net_stats_t rx_dma_failed
Number of RX DMA failed errors.
Definition net_stats.h:565
net_stats_t rx_no_buffer_count
Number of RX net_pkt allocation errors.
Definition net_stats.h:550
net_stats_t tx_fifo_errors
Number of TX FIFO errors.
Definition net_stats.h:577
net_stats_t rx_frame_errors
Number of RX frame errors.
Definition net_stats.h:547
net_stats_t rx_over_errors
Number of RX overrun errors.
Definition net_stats.h:541
net_stats_t tx_dma_failed
Number of TX DMA failed errors.
Definition net_stats.h:586
net_stats_t rx_length_errors
Number of RX length errors.
Definition net_stats.h:538
net_stats_t rx_buf_alloc_failed
Number of RX net_buf allocation errors.
Definition net_stats.h:568
net_stats_t tx_heartbeat_errors
Number of TX heartbeat errors.
Definition net_stats.h:580
net_stats_t tx_aborted_errors
Number of TX aborted errors.
Definition net_stats.h:571
Ethernet flow control statistics.
Definition net_stats.h:598
net_stats_t rx_flow_control_xon
Number of RX XON flow control.
Definition net_stats.h:600
net_stats_t tx_flow_control_xon
Number of TX XON flow control.
Definition net_stats.h:606
net_stats_t rx_flow_control_xoff
Number of RX XOFF flow control.
Definition net_stats.h:603
net_stats_t tx_flow_control_xoff
Number of TX XOFF flow control.
Definition net_stats.h:609
Ethernet hardware timestamp statistics.
Definition net_stats.h:626
net_stats_t tx_hwtstamp_timeouts
Number of TX hardware timestamp timeout.
Definition net_stats.h:631
net_stats_t rx_hwtstamp_cleared
Number of RX hardware timestamp cleared.
Definition net_stats.h:628
net_stats_t tx_hwtstamp_skipped
Number of TX hardware timestamp skipped.
Definition net_stats.h:634
All Ethernet specific statistics.
Definition net_stats.h:650
struct net_stats_pkts broadcast
Total number of broadcast packets received and sent.
Definition net_stats.h:658
struct net_stats_eth_csum csum
Total number of checksum errors in RX and TX.
Definition net_stats.h:673
net_stats_t tx_dropped
Total number of dropped TX packets.
Definition net_stats.h:682
struct net_stats_eth_hw_timestamp hw_timestamp
Total number of hardware timestamp errors in RX and TX.
Definition net_stats.h:676
struct net_stats_pkts multicast
Total number of multicast packets received and sent.
Definition net_stats.h:661
struct net_stats_eth_flow flow_control
Total number of flow control errors in RX and TX.
Definition net_stats.h:670
net_stats_t tx_restart_queue
Total number of TX queue restarts.
Definition net_stats.h:688
net_stats_t collisions
Total number of collisions.
Definition net_stats.h:679
struct net_stats_bytes bytes
Total number of bytes received and sent.
Definition net_stats.h:652
struct net_stats_eth_errors error_details
Total number of errors in RX and TX.
Definition net_stats.h:667
struct net_stats_pkts pkts
Total number of packets received and sent.
Definition net_stats.h:655
struct net_stats_pkts errors
Total number of errors in RX and TX.
Definition net_stats.h:664
net_stats_t tx_timeout_count
Total number of TX timeout errors.
Definition net_stats.h:685
net_stats_t unknown_protocol
Total number of RX unknown protocol packets.
Definition net_stats.h:691
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:270
net_stats_t drop
Number of dropped IPv4 IGMP packets.
Definition net_stats.h:278
net_stats_t recv
Number of received IPv4 IGMP queries.
Definition net_stats.h:272
net_stats_t sent
Number of sent IPv4 IGMP reports.
Definition net_stats.h:275
IPv4 Path MTU Discovery statistics.
Definition net_stats.h:242
net_stats_t sent
Number of sent IPv4 PMTU packets.
Definition net_stats.h:250
net_stats_t recv
Number of received IPv4 PMTU packets.
Definition net_stats.h:247
net_stats_t drop
Number of dropped IPv4 PMTU packets.
Definition net_stats.h:244
IPv6 multicast listener daemon statistics.
Definition net_stats.h:256
net_stats_t recv
Number of received IPv6 MLD queries.
Definition net_stats.h:258
net_stats_t sent
Number of sent IPv6 MLD reports.
Definition net_stats.h:261
net_stats_t drop
Number of dropped IPv6 MLD packets.
Definition net_stats.h:264
IPv6 neighbor discovery statistics.
Definition net_stats.h:214
net_stats_t sent
Number of sent IPv6 neighbor discovery packets.
Definition net_stats.h:222
net_stats_t recv
Number of received IPv6 neighbor discovery packets.
Definition net_stats.h:219
net_stats_t drop
Number of dropped IPv6 neighbor discovery packets.
Definition net_stats.h:216
IPv6 Path MTU Discovery statistics.
Definition net_stats.h:228
net_stats_t recv
Number of received IPv6 PMTU packets.
Definition net_stats.h:233
net_stats_t drop
Number of dropped IPv6 PMTU packets.
Definition net_stats.h:230
net_stats_t sent
Number of sent IPv6 PMTU packets.
Definition net_stats.h:236
Network packet filter statistics.
Definition net_stats.h:394
struct net_stats_pkt_filter::@217075202025176321036232161065136160020242373254 tx
Network packet filter TX statistics.
net_stats_t drop
Network packets dropped at network interface level.
Definition net_stats.h:398
struct net_stats_pkt_filter::@262141166207303052356016341171341105051217145307 rx
Network packet filter RX statistics.
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:380
uint32_t last_suspend_time
How long the last suspend took.
Definition net_stats.h:386
uint32_t start_time
Network interface last suspend start time.
Definition net_stats.h:388
uint64_t overall_suspend_time
Total suspend time.
Definition net_stats.h:382
net_stats_t suspend_count
How many times we were suspended.
Definition net_stats.h:384
All PPP specific statistics.
Definition net_stats.h:702
net_stats_t chkerr
Number of received PPP frames with a bad checksum.
Definition net_stats.h:713
struct net_stats_pkts pkts
Total number of packets received and sent.
Definition net_stats.h:707
struct net_stats_bytes bytes
Total number of bytes received and sent.
Definition net_stats.h:704
net_stats_t drop
Number of received and dropped PPP frames.
Definition net_stats.h:710
Raw packet socket statistics.
Definition net_stats.h:197
net_stats_t recv
Number of received raw packets.
Definition net_stats.h:205
net_stats_t sent
Number of sent raw packets.
Definition net_stats.h:208
struct net_stats_bytes bytes
Amount of received and sent raw packet data.
Definition net_stats.h:199
net_stats_t drop
Number of dropped raw packets.
Definition net_stats.h:202
Network packet receive times for calculating average RX time.
Definition net_stats.h:309
uint64_t sum
Sum of network packet receive times.
Definition net_stats.h:311
net_stats_t count
Number of network packets received.
Definition net_stats.h:314
All Wi-Fi management statistics.
Definition net_stats.h:719
net_stats_t beacons_miss
Number of missed beacons.
Definition net_stats.h:724
net_stats_t beacons_rx
Number of received beacons.
Definition net_stats.h:721
Traffic class statistics.
Definition net_stats.h:336
net_stats_t dropped
Number of packets dropped for this traffic class.
Definition net_stats.h:351
struct net_stats_tx_time tx_time
Helper for calculating average TX time statistics.
Definition net_stats.h:342
net_stats_t pkts
Number of packets sent for this traffic class.
Definition net_stats.h:349
uint64_t bytes
Number of bytes sent for this traffic class.
Definition net_stats.h:340
uint8_t priority
Priority of this traffic class.
Definition net_stats.h:353
struct net_stats_tc::@074155214116325077102236356156227241054306002026 sent[NET_TC_TX_STATS_COUNT]
TX statistics for each traffic class.
struct net_stats_rx_time rx_time
Helper for calculating average RX time statistics.
Definition net_stats.h:361
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:298
net_stats_t count
Number of network packets transferred.
Definition net_stats.h:303
uint64_t sum
Sum of network packet transfer times.
Definition net_stats.h:300
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:730
struct net_stats_pkts broadcast
Total number of broadcast packets received and sent.
Definition net_stats.h:741
struct net_stats_pkts multicast
Total number of multicast packets received and sent.
Definition net_stats.h:744
struct net_stats_sta_mgmt sta_mgmt
Total number of beacon errors.
Definition net_stats.h:732
struct net_stats_bytes bytes
Total number of bytes received and sent.
Definition net_stats.h:735
net_stats_t overrun_count
Total number of dropped packets at received and sent.
Definition net_stats.h:753
struct net_stats_pkts pkts
Total number of packets received and sent.
Definition net_stats.h:738
struct net_stats_pkts errors
Total number of errors in RX and TX.
Definition net_stats.h:747
struct net_stats_pkts unicast
Total number of unicast packets received and sent.
Definition net_stats.h:750
All network statistics in one struct.
Definition net_stats.h:423
net_stats_t processing_error
Count of malformed packets or packets we do not have handler for.
Definition net_stats.h:434
struct net_stats_bytes bytes
This calculates amount of data transferred through all the network interfaces.
Definition net_stats.h:428
struct net_stats_ip_errors ip_errors
IP layer errors.
Definition net_stats.h:437
Prometheus summary APIs.