@cryptotaxi247 / netdata-1 / commits / 8d285012b

Fix agent build failure on FreeBSD 14.0 due to new tcpstat struct (#14446)

* Fix agent build failure on FreeBSD 14.0 due to different tcpstat struct * Add comment with link to commit that introduced the bug

Dim-P committed Feb 7, 2023 at 12:27 UTC 8d285012be22e740ea09696157753c4ebcf83727
1 file changed +46 -15
collectors/freebsd.plugin/freebsd_sysctl.c
+46 -15
@@ -1991,15 +1991,34 @@ int do_net_inet_tcp_stats(int update_every, usec_t dt) {
1991 rrdset_done(st_listen);
1992 }
1993
1994 - if (do_ecn == CONFIG_BOOLEAN_YES || (do_ecn == CONFIG_BOOLEAN_AUTO &&
1995 - (tcpstat.tcps_ecn_ce ||
1994 + if (do_ecn == CONFIG_BOOLEAN_YES || ( do_ecn == CONFIG_BOOLEAN_AUTO &&
1995 + ( netdata_zero_metrics_enabled == CONFIG_BOOLEAN_YES ||
1996 +#if __FreeBSD_version < 1400074
1997 +// See https://github.com/freebsd/freebsd-src/commit/1a70101a870015304d5b2446b480d8677d8aad36
1998 + tcpstat.tcps_ecn_ce ||
1999 tcpstat.tcps_ecn_ect0 ||
1997 - tcpstat.tcps_ecn_ect1 ||
1998 - netdata_zero_metrics_enabled == CONFIG_BOOLEAN_YES))) {
2000 + tcpstat.tcps_ecn_ect1
2001 +#else
2002 + tcpstat.tcps_ecn_rcvce ||
2003 + tcpstat.tcps_ecn_rcvect0 ||
2004 + tcpstat.tcps_ecn_rcvect1 ||
2005 + tcpstat.tcps_ecn_sndect0 ||
2006 + tcpstat.tcps_ecn_sndect1
2007 +#endif
2008 + ))) {
2009 do_ecn = CONFIG_BOOLEAN_YES;
2010
2011 static RRDSET *st = NULL;
2002 - static RRDDIM *rd_ce = NULL, *rd_no_ect = NULL, *rd_ect0 = NULL, *rd_ect1 = NULL;
2012 + static RRDDIM *rd_rcvce = NULL,
2013 +#if __FreeBSD_version < 1400074
2014 + *rd_ect0 = NULL,
2015 + *rd_ect1 = NULL;
2016 +#else
2017 + *rd_rcvect0 = NULL,
2018 + *rd_rcvect1 = NULL,
2019 + *rd_sndect0 = NULL,
2020 + *rd_sndect1 = NULL;
2021 +#endif
2022
2023 if (unlikely(!st)) {
2024 st = rrdset_create_localhost(
@@ -2019,20 +2038,32 @@ int do_net_inet_tcp_stats(int update_every, usec_t dt) {
2038
2039 rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
2040
2022 - rd_ce = rrddim_add(st, "InCEPkts", "CEP", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2023 - rd_no_ect = rrddim_add(st, "InNoECTPkts", "NoECTP", -1, 1, RRD_ALGORITHM_INCREMENTAL);
2024 - rd_ect0 = rrddim_add(st, "InECT0Pkts", "ECTP0", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2025 - rd_ect1 = rrddim_add(st, "InECT1Pkts", "ECTP1", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2041 + rd_rcvce = rrddim_add(st, "InCEPkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2042 +#if __FreeBSD_version < 1400074
2043 + rd_ect0 = rrddim_add(st, "ECT0Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2044 + rd_ect1 = rrddim_add(st, "ECT1Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2045 +#else
2046 + rd_rcvect0 = rrddim_add(st, "InECT0Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2047 + rd_rcvect1 = rrddim_add(st, "InECT1Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2048 + rd_sndect0 = rrddim_add(st, "OutECT0Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2049 + rd_sndect1 = rrddim_add(st, "OutECT1Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2050 +#endif
2051 }
2052
2028 - rrddim_set_by_pointer(st, rd_ce, tcpstat.tcps_ecn_ce);
2029 - rrddim_set_by_pointer(st, rd_no_ect, tcpstat.tcps_ecn_ce - (tcpstat.tcps_ecn_ect0 +
2030 - tcpstat.tcps_ecn_ect1));
2031 - rrddim_set_by_pointer(st, rd_ect0, tcpstat.tcps_ecn_ect0);
2032 - rrddim_set_by_pointer(st, rd_ect1, tcpstat.tcps_ecn_ect1);
2053 +
2054 +#if __FreeBSD_version < 1400074
2055 + rrddim_set_by_pointer(st, rd_rcvce, tcpstat.tcps_ecn_ce);
2056 + rrddim_set_by_pointer(st, rd_ect0, tcpstat.tcps_ecn_ect0);
2057 + rrddim_set_by_pointer(st, rd_ect1, tcpstat.tcps_ecn_ect1);
2058 +#else
2059 + rrddim_set_by_pointer(st, rd_rcvce, tcpstat.tcps_ecn_rcvce);
2060 + rrddim_set_by_pointer(st, rd_rcvect0, tcpstat.tcps_ecn_rcvect0);
2061 + rrddim_set_by_pointer(st, rd_rcvect1, tcpstat.tcps_ecn_rcvect1);
2062 + rrddim_set_by_pointer(st, rd_sndect0, tcpstat.tcps_ecn_sndect0);
2063 + rrddim_set_by_pointer(st, rd_sndect1, tcpstat.tcps_ecn_sndect1);
2064 +#endif
2065 rrdset_done(st);
2066 }
2035 -
2067 }
2068 } else {
2069 collector_error("DISABLED: net.inet.tcp.stats module");