| Message ID | 20251205063116.2046197-1-vanusuri@mvista.com |
|---|---|
| State | New |
| Headers | show |
| Series | [meta-networking] net-snmp: Fix systemstats_linux unexpected header length | expand |
if this is meant for master then please rebase it on top of latest master or master-next and resend please. On Thu, Dec 4, 2025 at 10:31 PM Vijay Anusuri via lists.openembedded.org <vanusuri=mvista.com@lists.openembedded.org> wrote: > currently system journal contains: > > snmpd[10442]: systemstats_linux: unexpected header length in > /proc/net/snmp. 237 != 224 > > Backport a patch to fix this issue. > > Upstream-Status: Backport [ > https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c > ] > > Reference: https://github.com/net-snmp/net-snmp/issues/786 > > Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> > --- > ...-compatibility-parsing-proc-net-snmp.patch | 122 ++++++++++++++++++ > .../net-snmp/net-snmp_5.9.4.bb | 1 + > 2 files changed, 123 insertions(+) > create mode 100644 > meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch > > diff --git > a/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch > b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch > new file mode 100644 > index 0000000000..2d9c310e39 > --- /dev/null > +++ > b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch > @@ -0,0 +1,122 @@ > +From 49d60ba57f4b462df7dc5fd5b38b4425dab0982c Mon Sep 17 00:00:00 2001 > +From: Philippe Troin <phil+github-commits@fifi.org> > +Date: Sat, 3 Feb 2024 10:30:30 -0800 > +Subject: [PATCH] Add Linux 6.7 compatibility parsing /proc/net/snmp > + > +Linux 6.7 adds a new OutTransmits field to Ip in /proc/net/snmp. > +This breaks the hard-coded assumptions about the Ip line length. > +Add compatibility to parse Linux 6.7 Ip header while keep support > +for previous versions. > + > +Upstream-Status: Backport [ > https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c > ] > +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> > +--- > + .../ip-mib/data_access/systemstats_linux.c | 46 +++++++++++++++---- > + 1 file changed, 37 insertions(+), 9 deletions(-) > + > +diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c > b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c > +index 49e0a34d5c..f04e828a94 100644 > +--- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c > ++++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c > +@@ -36,7 +36,7 @@ netsnmp_access_systemstats_arch_init(void) > + } > + > + /* > +- /proc/net/snmp > ++ /proc/net/snmp - Linux 6.6 and lower > + > + Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors > ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards > OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails > FragCreates > + Ip: 2 64 7083534 0 0 0 0 0 6860233 6548963 0 0 1 286623 63322 1 259920 > 0 0 > +@@ -49,6 +49,26 @@ netsnmp_access_systemstats_arch_init(void) > + > + Udp: InDatagrams NoPorts InErrors OutDatagrams > + Udp: 1491094 122 0 1466178 > ++* > ++ /proc/net/snmp - Linux 6.7 and higher > ++ > ++ Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors > ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards > OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails > FragCreates OutTransmits > ++ Ip: 1 64 50859058 496 0 37470604 0 0 20472980 7515791 1756 0 0 7264 > 3632 0 3548 0 7096 44961424 > ++ > ++ Icmp: InMsgs InErrors InCsumErrors InDestUnreachs InTimeExcds > InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps > InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors > OutRateLimitGlobal OutRateLimitHost OutDestUnreachs OutTimeExcds > OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps > OutTimestampReps OutAddrMasks OutAddrMaskReps > ++ Icmp: 114447 2655 0 17589 0 0 0 0 66905 29953 0 0 0 0 143956 0 0 572 > 16610 484 0 0 0 59957 66905 0 0 0 0 > ++ > ++ IcmpMsg: InType0 InType3 InType8 OutType0 OutType3 OutType8 OutType11 > ++ IcmpMsg: 29953 17589 66905 66905 16610 59957 484 > ++ > ++ Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens > AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs > OutRsts InCsumErrors > ++ Tcp: 1 200 120000 -1 17744 13525 307 3783 6 18093137 9277788 3499 8 > 7442 0 > ++ > ++ Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors > SndbufErrors InCsumErrors IgnoredMulti MemErrors > ++ Udp: 2257832 1422 0 2252835 0 0 0 84 0 > ++ > ++ UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors > SndbufErrors InCsumErrors IgnoredMulti MemErrors > ++ UdpLite: 0 0 0 0 0 0 0 0 0 > + */ > + > + > +@@ -101,10 +121,10 @@ _systemstats_v4(netsnmp_container* container, u_int > load_flags) > + FILE *devin; > + char line[1024]; > + netsnmp_systemstats_entry *entry = NULL; > +- int scan_count; > ++ int scan_count, expected_scan_count; > + char *stats, *start = line; > + int len; > +- unsigned long long scan_vals[19]; > ++ unsigned long long scan_vals[20]; > + > + DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags > %x)\n", > + load_flags)); > +@@ -126,10 +146,17 @@ _systemstats_v4(netsnmp_container* container, u_int > load_flags) > + */ > + NETSNMP_IGNORE_RESULT(fgets(line, sizeof(line), devin)); > + len = strlen(line); > +- if (224 != len) { > ++ switch (len) { > ++ case 224: > ++ expected_scan_count = 19; > ++ break; > ++ case 237: > ++ expected_scan_count = 20; > ++ break; > ++ default: > + fclose(devin); > + snmp_log(LOG_ERR, "systemstats_linux: unexpected header length > in /proc/net/snmp." > +- " %d != 224\n", len); > ++ " %d not in { 224, 237 } \n", len); > + return -4; > + } > + > +@@ -178,20 +205,20 @@ _systemstats_v4(netsnmp_container* container, u_int > load_flags) > + memset(scan_vals, 0x0, sizeof(scan_vals)); > + scan_count = sscanf(stats, > + "%llu %llu %llu %llu %llu %llu %llu %llu > %llu %llu" > +- "%llu %llu %llu %llu %llu %llu %llu %llu > %llu", > ++ "%llu %llu %llu %llu %llu %llu %llu %llu > %llu %llu", > + &scan_vals[0],&scan_vals[1],&scan_vals[2], > + &scan_vals[3],&scan_vals[4],&scan_vals[5], > + &scan_vals[6],&scan_vals[7],&scan_vals[8], > + &scan_vals[9],&scan_vals[10],&scan_vals[11], > + &scan_vals[12],&scan_vals[13],&scan_vals[14], > + &scan_vals[15],&scan_vals[16],&scan_vals[17], > +- &scan_vals[18]); > ++ &scan_vals[18],&scan_vals[19]); > + DEBUGMSGTL(("access:systemstats", " read %d values\n", > scan_count)); > + > +- if(scan_count != 19) { > ++ if(scan_count != expected_scan_count) { > + snmp_log(LOG_ERR, > + "error scanning systemstats data (expected %d, got > %d)\n", > +- 19, scan_count); > ++ expected_scan_count, scan_count); > + netsnmp_access_systemstats_entry_free(entry); > + return -4; > + } > +@@ -223,6 +250,7 @@ _systemstats_v4(netsnmp_container* container, u_int > load_flags) > + entry->stats.HCOutFragFails.high = scan_vals[17] >> 32; > + entry->stats.HCOutFragCreates.low = scan_vals[18] & 0xffffffff; > + entry->stats.HCOutFragCreates.high = scan_vals[18] >> 32; > ++ /* entry->stats. = scan_vals[19]; / * OutTransmits */ > + > + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1; > + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1; > diff --git a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb > b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb > index f9572a1869..4b24520019 100644 > --- a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb > +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb > @@ -28,6 +28,7 @@ SRC_URI = > "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \ > > file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \ > file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \ > file://0001-Android-Fix-the-build.patch \ > + > file://0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch \ > " > SRC_URI[sha256sum] = > "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544" > > -- > 2.43.0 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#122335): > https://lists.openembedded.org/g/openembedded-devel/message/122335 > Mute This Topic: https://lists.openembedded.org/mt/116626611/1997914 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ > raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > >
Hi Khem, This patch is intended for the *scarthgap* branch. The issue has already been addressed in *master* by the following commit: https://git.openembedded.org/meta-openembedded/commit/?id=8147a884c68d8fdd89939a8443a902b65297520c Thanks & Regards, Vijay On Fri, Dec 5, 2025 at 12:06 PM Khem Raj <raj.khem@gmail.com> wrote: > if this is meant for master then please rebase it on top of latest master > or master-next and resend please. > > On Thu, Dec 4, 2025 at 10:31 PM Vijay Anusuri via lists.openembedded.org > <vanusuri=mvista.com@lists.openembedded.org> wrote: > >> currently system journal contains: >> >> snmpd[10442]: systemstats_linux: unexpected header length in >> /proc/net/snmp. 237 != 224 >> >> Backport a patch to fix this issue. >> >> Upstream-Status: Backport [ >> https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c >> ] >> >> Reference: https://github.com/net-snmp/net-snmp/issues/786 >> >> Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> >> --- >> ...-compatibility-parsing-proc-net-snmp.patch | 122 ++++++++++++++++++ >> .../net-snmp/net-snmp_5.9.4.bb | 1 + >> 2 files changed, 123 insertions(+) >> create mode 100644 >> meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >> >> diff --git >> a/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >> b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >> new file mode 100644 >> index 0000000000..2d9c310e39 >> --- /dev/null >> +++ >> b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >> @@ -0,0 +1,122 @@ >> +From 49d60ba57f4b462df7dc5fd5b38b4425dab0982c Mon Sep 17 00:00:00 2001 >> +From: Philippe Troin <phil+github-commits@fifi.org> >> +Date: Sat, 3 Feb 2024 10:30:30 -0800 >> +Subject: [PATCH] Add Linux 6.7 compatibility parsing /proc/net/snmp >> + >> +Linux 6.7 adds a new OutTransmits field to Ip in /proc/net/snmp. >> +This breaks the hard-coded assumptions about the Ip line length. >> +Add compatibility to parse Linux 6.7 Ip header while keep support >> +for previous versions. >> + >> +Upstream-Status: Backport [ >> https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c >> ] >> +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> >> +--- >> + .../ip-mib/data_access/systemstats_linux.c | 46 +++++++++++++++---- >> + 1 file changed, 37 insertions(+), 9 deletions(-) >> + >> +diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >> b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >> +index 49e0a34d5c..f04e828a94 100644 >> +--- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >> ++++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >> +@@ -36,7 +36,7 @@ netsnmp_access_systemstats_arch_init(void) >> + } >> + >> + /* >> +- /proc/net/snmp >> ++ /proc/net/snmp - Linux 6.6 and lower >> + >> + Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors >> ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards >> OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails >> FragCreates >> + Ip: 2 64 7083534 0 0 0 0 0 6860233 6548963 0 0 1 286623 63322 1 >> 259920 0 0 >> +@@ -49,6 +49,26 @@ netsnmp_access_systemstats_arch_init(void) >> + >> + Udp: InDatagrams NoPorts InErrors OutDatagrams >> + Udp: 1491094 122 0 1466178 >> ++* >> ++ /proc/net/snmp - Linux 6.7 and higher >> ++ >> ++ Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors >> ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards >> OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails >> FragCreates OutTransmits >> ++ Ip: 1 64 50859058 496 0 37470604 0 0 20472980 7515791 1756 0 0 7264 >> 3632 0 3548 0 7096 44961424 >> ++ >> ++ Icmp: InMsgs InErrors InCsumErrors InDestUnreachs InTimeExcds >> InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps >> InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors >> OutRateLimitGlobal OutRateLimitHost OutDestUnreachs OutTimeExcds >> OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps >> OutTimestampReps OutAddrMasks OutAddrMaskReps >> ++ Icmp: 114447 2655 0 17589 0 0 0 0 66905 29953 0 0 0 0 143956 0 0 572 >> 16610 484 0 0 0 59957 66905 0 0 0 0 >> ++ >> ++ IcmpMsg: InType0 InType3 InType8 OutType0 OutType3 OutType8 OutType11 >> ++ IcmpMsg: 29953 17589 66905 66905 16610 59957 484 >> ++ >> ++ Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens >> AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs >> OutRsts InCsumErrors >> ++ Tcp: 1 200 120000 -1 17744 13525 307 3783 6 18093137 9277788 3499 8 >> 7442 0 >> ++ >> ++ Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors >> SndbufErrors InCsumErrors IgnoredMulti MemErrors >> ++ Udp: 2257832 1422 0 2252835 0 0 0 84 0 >> ++ >> ++ UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors >> SndbufErrors InCsumErrors IgnoredMulti MemErrors >> ++ UdpLite: 0 0 0 0 0 0 0 0 0 >> + */ >> + >> + >> +@@ -101,10 +121,10 @@ _systemstats_v4(netsnmp_container* container, >> u_int load_flags) >> + FILE *devin; >> + char line[1024]; >> + netsnmp_systemstats_entry *entry = NULL; >> +- int scan_count; >> ++ int scan_count, expected_scan_count; >> + char *stats, *start = line; >> + int len; >> +- unsigned long long scan_vals[19]; >> ++ unsigned long long scan_vals[20]; >> + >> + DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags >> %x)\n", >> + load_flags)); >> +@@ -126,10 +146,17 @@ _systemstats_v4(netsnmp_container* container, >> u_int load_flags) >> + */ >> + NETSNMP_IGNORE_RESULT(fgets(line, sizeof(line), devin)); >> + len = strlen(line); >> +- if (224 != len) { >> ++ switch (len) { >> ++ case 224: >> ++ expected_scan_count = 19; >> ++ break; >> ++ case 237: >> ++ expected_scan_count = 20; >> ++ break; >> ++ default: >> + fclose(devin); >> + snmp_log(LOG_ERR, "systemstats_linux: unexpected header length >> in /proc/net/snmp." >> +- " %d != 224\n", len); >> ++ " %d not in { 224, 237 } \n", len); >> + return -4; >> + } >> + >> +@@ -178,20 +205,20 @@ _systemstats_v4(netsnmp_container* container, >> u_int load_flags) >> + memset(scan_vals, 0x0, sizeof(scan_vals)); >> + scan_count = sscanf(stats, >> + "%llu %llu %llu %llu %llu %llu %llu %llu >> %llu %llu" >> +- "%llu %llu %llu %llu %llu %llu %llu %llu >> %llu", >> ++ "%llu %llu %llu %llu %llu %llu %llu %llu >> %llu %llu", >> + &scan_vals[0],&scan_vals[1],&scan_vals[2], >> + &scan_vals[3],&scan_vals[4],&scan_vals[5], >> + &scan_vals[6],&scan_vals[7],&scan_vals[8], >> + &scan_vals[9],&scan_vals[10],&scan_vals[11], >> + >> &scan_vals[12],&scan_vals[13],&scan_vals[14], >> + >> &scan_vals[15],&scan_vals[16],&scan_vals[17], >> +- &scan_vals[18]); >> ++ &scan_vals[18],&scan_vals[19]); >> + DEBUGMSGTL(("access:systemstats", " read %d values\n", >> scan_count)); >> + >> +- if(scan_count != 19) { >> ++ if(scan_count != expected_scan_count) { >> + snmp_log(LOG_ERR, >> + "error scanning systemstats data (expected %d, got >> %d)\n", >> +- 19, scan_count); >> ++ expected_scan_count, scan_count); >> + netsnmp_access_systemstats_entry_free(entry); >> + return -4; >> + } >> +@@ -223,6 +250,7 @@ _systemstats_v4(netsnmp_container* container, u_int >> load_flags) >> + entry->stats.HCOutFragFails.high = scan_vals[17] >> 32; >> + entry->stats.HCOutFragCreates.low = scan_vals[18] & 0xffffffff; >> + entry->stats.HCOutFragCreates.high = scan_vals[18] >> 32; >> ++ /* entry->stats. = scan_vals[19]; / * OutTransmits */ >> + >> + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1; >> + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1; >> diff --git a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb >> b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb >> index f9572a1869..4b24520019 100644 >> --- a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb >> +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb >> @@ -28,6 +28,7 @@ SRC_URI = >> "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \ >> >> file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \ >> file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \ >> file://0001-Android-Fix-the-build.patch \ >> + >> file://0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch \ >> " >> SRC_URI[sha256sum] = >> "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544" >> >> -- >> 2.43.0 >> >> >> -=-=-=-=-=-=-=-=-=-=-=- >> Links: You receive all messages sent to this group. >> View/Reply Online (#122335): >> https://lists.openembedded.org/g/openembedded-devel/message/122335 >> Mute This Topic: https://lists.openembedded.org/mt/116626611/1997914 >> Group Owner: openembedded-devel+owner@lists.openembedded.org >> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ >> raj.khem@gmail.com] >> -=-=-=-=-=-=-=-=-=-=-=- >> >>
I forgot to add scarthgap in the subject line. I will resend the patch again. Thanks & Regards, Vijay On Fri, Dec 5, 2025 at 12:35 PM Vijay Anusuri via lists.openembedded.org <vanusuri=mvista.com@lists.openembedded.org> wrote: > Hi Khem, > > This patch is intended for the *scarthgap* branch. The issue has already > been addressed in *master* by the following commit: > > > https://git.openembedded.org/meta-openembedded/commit/?id=8147a884c68d8fdd89939a8443a902b65297520c > > Thanks & Regards, > Vijay > > On Fri, Dec 5, 2025 at 12:06 PM Khem Raj <raj.khem@gmail.com> wrote: > >> if this is meant for master then please rebase it on top of latest master >> or master-next and resend please. >> >> On Thu, Dec 4, 2025 at 10:31 PM Vijay Anusuri via lists.openembedded.org >> <vanusuri=mvista.com@lists.openembedded.org> wrote: >> >>> currently system journal contains: >>> >>> snmpd[10442]: systemstats_linux: unexpected header length in >>> /proc/net/snmp. 237 != 224 >>> >>> Backport a patch to fix this issue. >>> >>> Upstream-Status: Backport [ >>> https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c >>> ] >>> >>> Reference: https://github.com/net-snmp/net-snmp/issues/786 >>> >>> Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> >>> --- >>> ...-compatibility-parsing-proc-net-snmp.patch | 122 ++++++++++++++++++ >>> .../net-snmp/net-snmp_5.9.4.bb | 1 + >>> 2 files changed, 123 insertions(+) >>> create mode 100644 >>> meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >>> >>> diff --git >>> a/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >>> b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >>> new file mode 100644 >>> index 0000000000..2d9c310e39 >>> --- /dev/null >>> +++ >>> b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch >>> @@ -0,0 +1,122 @@ >>> +From 49d60ba57f4b462df7dc5fd5b38b4425dab0982c Mon Sep 17 00:00:00 2001 >>> +From: Philippe Troin <phil+github-commits@fifi.org> >>> +Date: Sat, 3 Feb 2024 10:30:30 -0800 >>> +Subject: [PATCH] Add Linux 6.7 compatibility parsing /proc/net/snmp >>> + >>> +Linux 6.7 adds a new OutTransmits field to Ip in /proc/net/snmp. >>> +This breaks the hard-coded assumptions about the Ip line length. >>> +Add compatibility to parse Linux 6.7 Ip header while keep support >>> +for previous versions. >>> + >>> +Upstream-Status: Backport [ >>> https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c >>> ] >>> +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> >>> +--- >>> + .../ip-mib/data_access/systemstats_linux.c | 46 +++++++++++++++---- >>> + 1 file changed, 37 insertions(+), 9 deletions(-) >>> + >>> +diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >>> b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >>> +index 49e0a34d5c..f04e828a94 100644 >>> +--- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >>> ++++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c >>> +@@ -36,7 +36,7 @@ netsnmp_access_systemstats_arch_init(void) >>> + } >>> + >>> + /* >>> +- /proc/net/snmp >>> ++ /proc/net/snmp - Linux 6.6 and lower >>> + >>> + Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors >>> ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards >>> OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails >>> FragCreates >>> + Ip: 2 64 7083534 0 0 0 0 0 6860233 6548963 0 0 1 286623 63322 1 >>> 259920 0 0 >>> +@@ -49,6 +49,26 @@ netsnmp_access_systemstats_arch_init(void) >>> + >>> + Udp: InDatagrams NoPorts InErrors OutDatagrams >>> + Udp: 1491094 122 0 1466178 >>> ++* >>> ++ /proc/net/snmp - Linux 6.7 and higher >>> ++ >>> ++ Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors >>> ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards >>> OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails >>> FragCreates OutTransmits >>> ++ Ip: 1 64 50859058 496 0 37470604 0 0 20472980 7515791 1756 0 0 7264 >>> 3632 0 3548 0 7096 44961424 >>> ++ >>> ++ Icmp: InMsgs InErrors InCsumErrors InDestUnreachs InTimeExcds >>> InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps >>> InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors >>> OutRateLimitGlobal OutRateLimitHost OutDestUnreachs OutTimeExcds >>> OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps >>> OutTimestampReps OutAddrMasks OutAddrMaskReps >>> ++ Icmp: 114447 2655 0 17589 0 0 0 0 66905 29953 0 0 0 0 143956 0 0 572 >>> 16610 484 0 0 0 59957 66905 0 0 0 0 >>> ++ >>> ++ IcmpMsg: InType0 InType3 InType8 OutType0 OutType3 OutType8 OutType11 >>> ++ IcmpMsg: 29953 17589 66905 66905 16610 59957 484 >>> ++ >>> ++ Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens >>> AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs >>> OutRsts InCsumErrors >>> ++ Tcp: 1 200 120000 -1 17744 13525 307 3783 6 18093137 9277788 3499 8 >>> 7442 0 >>> ++ >>> ++ Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors >>> SndbufErrors InCsumErrors IgnoredMulti MemErrors >>> ++ Udp: 2257832 1422 0 2252835 0 0 0 84 0 >>> ++ >>> ++ UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors >>> SndbufErrors InCsumErrors IgnoredMulti MemErrors >>> ++ UdpLite: 0 0 0 0 0 0 0 0 0 >>> + */ >>> + >>> + >>> +@@ -101,10 +121,10 @@ _systemstats_v4(netsnmp_container* container, >>> u_int load_flags) >>> + FILE *devin; >>> + char line[1024]; >>> + netsnmp_systemstats_entry *entry = NULL; >>> +- int scan_count; >>> ++ int scan_count, expected_scan_count; >>> + char *stats, *start = line; >>> + int len; >>> +- unsigned long long scan_vals[19]; >>> ++ unsigned long long scan_vals[20]; >>> + >>> + DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags >>> %x)\n", >>> + load_flags)); >>> +@@ -126,10 +146,17 @@ _systemstats_v4(netsnmp_container* container, >>> u_int load_flags) >>> + */ >>> + NETSNMP_IGNORE_RESULT(fgets(line, sizeof(line), devin)); >>> + len = strlen(line); >>> +- if (224 != len) { >>> ++ switch (len) { >>> ++ case 224: >>> ++ expected_scan_count = 19; >>> ++ break; >>> ++ case 237: >>> ++ expected_scan_count = 20; >>> ++ break; >>> ++ default: >>> + fclose(devin); >>> + snmp_log(LOG_ERR, "systemstats_linux: unexpected header length >>> in /proc/net/snmp." >>> +- " %d != 224\n", len); >>> ++ " %d not in { 224, 237 } \n", len); >>> + return -4; >>> + } >>> + >>> +@@ -178,20 +205,20 @@ _systemstats_v4(netsnmp_container* container, >>> u_int load_flags) >>> + memset(scan_vals, 0x0, sizeof(scan_vals)); >>> + scan_count = sscanf(stats, >>> + "%llu %llu %llu %llu %llu %llu %llu %llu >>> %llu %llu" >>> +- "%llu %llu %llu %llu %llu %llu %llu %llu >>> %llu", >>> ++ "%llu %llu %llu %llu %llu %llu %llu %llu >>> %llu %llu", >>> + &scan_vals[0],&scan_vals[1],&scan_vals[2], >>> + &scan_vals[3],&scan_vals[4],&scan_vals[5], >>> + &scan_vals[6],&scan_vals[7],&scan_vals[8], >>> + >>> &scan_vals[9],&scan_vals[10],&scan_vals[11], >>> + >>> &scan_vals[12],&scan_vals[13],&scan_vals[14], >>> + >>> &scan_vals[15],&scan_vals[16],&scan_vals[17], >>> +- &scan_vals[18]); >>> ++ &scan_vals[18],&scan_vals[19]); >>> + DEBUGMSGTL(("access:systemstats", " read %d values\n", >>> scan_count)); >>> + >>> +- if(scan_count != 19) { >>> ++ if(scan_count != expected_scan_count) { >>> + snmp_log(LOG_ERR, >>> + "error scanning systemstats data (expected %d, >>> got %d)\n", >>> +- 19, scan_count); >>> ++ expected_scan_count, scan_count); >>> + netsnmp_access_systemstats_entry_free(entry); >>> + return -4; >>> + } >>> +@@ -223,6 +250,7 @@ _systemstats_v4(netsnmp_container* container, u_int >>> load_flags) >>> + entry->stats.HCOutFragFails.high = scan_vals[17] >> 32; >>> + entry->stats.HCOutFragCreates.low = scan_vals[18] & 0xffffffff; >>> + entry->stats.HCOutFragCreates.high = scan_vals[18] >> 32; >>> ++ /* entry->stats. = scan_vals[19]; / * OutTransmits */ >>> + >>> + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1; >>> + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1; >>> diff --git a/meta-networking/recipes-protocols/net-snmp/ >>> net-snmp_5.9.4.bb b/meta-networking/recipes-protocols/net-snmp/ >>> net-snmp_5.9.4.bb >>> index f9572a1869..4b24520019 100644 >>> --- a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb >>> +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb >>> @@ -28,6 +28,7 @@ SRC_URI = >>> "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \ >>> >>> file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \ >>> file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \ >>> file://0001-Android-Fix-the-build.patch \ >>> + >>> file://0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch \ >>> " >>> SRC_URI[sha256sum] = >>> "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544" >>> >>> -- >>> 2.43.0 >>> >>> >>> >>> >>> > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#122337): > https://lists.openembedded.org/g/openembedded-devel/message/122337 > Mute This Topic: https://lists.openembedded.org/mt/116626611/7301997 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ > vanusuri@mvista.com] > -=-=-=-=-=-=-=-=-=-=-=- > >
diff --git a/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch new file mode 100644 index 0000000000..2d9c310e39 --- /dev/null +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch @@ -0,0 +1,122 @@ +From 49d60ba57f4b462df7dc5fd5b38b4425dab0982c Mon Sep 17 00:00:00 2001 +From: Philippe Troin <phil+github-commits@fifi.org> +Date: Sat, 3 Feb 2024 10:30:30 -0800 +Subject: [PATCH] Add Linux 6.7 compatibility parsing /proc/net/snmp + +Linux 6.7 adds a new OutTransmits field to Ip in /proc/net/snmp. +This breaks the hard-coded assumptions about the Ip line length. +Add compatibility to parse Linux 6.7 Ip header while keep support +for previous versions. + +Upstream-Status: Backport [https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c] +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + .../ip-mib/data_access/systemstats_linux.c | 46 +++++++++++++++---- + 1 file changed, 37 insertions(+), 9 deletions(-) + +diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c +index 49e0a34d5c..f04e828a94 100644 +--- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c ++++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c +@@ -36,7 +36,7 @@ netsnmp_access_systemstats_arch_init(void) + } + + /* +- /proc/net/snmp ++ /proc/net/snmp - Linux 6.6 and lower + + Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates + Ip: 2 64 7083534 0 0 0 0 0 6860233 6548963 0 0 1 286623 63322 1 259920 0 0 +@@ -49,6 +49,26 @@ netsnmp_access_systemstats_arch_init(void) + + Udp: InDatagrams NoPorts InErrors OutDatagrams + Udp: 1491094 122 0 1466178 ++* ++ /proc/net/snmp - Linux 6.7 and higher ++ ++ Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates OutTransmits ++ Ip: 1 64 50859058 496 0 37470604 0 0 20472980 7515791 1756 0 0 7264 3632 0 3548 0 7096 44961424 ++ ++ Icmp: InMsgs InErrors InCsumErrors InDestUnreachs InTimeExcds InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors OutRateLimitGlobal OutRateLimitHost OutDestUnreachs OutTimeExcds OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps OutTimestampReps OutAddrMasks OutAddrMaskReps ++ Icmp: 114447 2655 0 17589 0 0 0 0 66905 29953 0 0 0 0 143956 0 0 572 16610 484 0 0 0 59957 66905 0 0 0 0 ++ ++ IcmpMsg: InType0 InType3 InType8 OutType0 OutType3 OutType8 OutType11 ++ IcmpMsg: 29953 17589 66905 66905 16610 59957 484 ++ ++ Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors ++ Tcp: 1 200 120000 -1 17744 13525 307 3783 6 18093137 9277788 3499 8 7442 0 ++ ++ Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti MemErrors ++ Udp: 2257832 1422 0 2252835 0 0 0 84 0 ++ ++ UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti MemErrors ++ UdpLite: 0 0 0 0 0 0 0 0 0 + */ + + +@@ -101,10 +121,10 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) + FILE *devin; + char line[1024]; + netsnmp_systemstats_entry *entry = NULL; +- int scan_count; ++ int scan_count, expected_scan_count; + char *stats, *start = line; + int len; +- unsigned long long scan_vals[19]; ++ unsigned long long scan_vals[20]; + + DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n", + load_flags)); +@@ -126,10 +146,17 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) + */ + NETSNMP_IGNORE_RESULT(fgets(line, sizeof(line), devin)); + len = strlen(line); +- if (224 != len) { ++ switch (len) { ++ case 224: ++ expected_scan_count = 19; ++ break; ++ case 237: ++ expected_scan_count = 20; ++ break; ++ default: + fclose(devin); + snmp_log(LOG_ERR, "systemstats_linux: unexpected header length in /proc/net/snmp." +- " %d != 224\n", len); ++ " %d not in { 224, 237 } \n", len); + return -4; + } + +@@ -178,20 +205,20 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) + memset(scan_vals, 0x0, sizeof(scan_vals)); + scan_count = sscanf(stats, + "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu" +- "%llu %llu %llu %llu %llu %llu %llu %llu %llu", ++ "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu", + &scan_vals[0],&scan_vals[1],&scan_vals[2], + &scan_vals[3],&scan_vals[4],&scan_vals[5], + &scan_vals[6],&scan_vals[7],&scan_vals[8], + &scan_vals[9],&scan_vals[10],&scan_vals[11], + &scan_vals[12],&scan_vals[13],&scan_vals[14], + &scan_vals[15],&scan_vals[16],&scan_vals[17], +- &scan_vals[18]); ++ &scan_vals[18],&scan_vals[19]); + DEBUGMSGTL(("access:systemstats", " read %d values\n", scan_count)); + +- if(scan_count != 19) { ++ if(scan_count != expected_scan_count) { + snmp_log(LOG_ERR, + "error scanning systemstats data (expected %d, got %d)\n", +- 19, scan_count); ++ expected_scan_count, scan_count); + netsnmp_access_systemstats_entry_free(entry); + return -4; + } +@@ -223,6 +250,7 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) + entry->stats.HCOutFragFails.high = scan_vals[17] >> 32; + entry->stats.HCOutFragCreates.low = scan_vals[18] & 0xffffffff; + entry->stats.HCOutFragCreates.high = scan_vals[18] >> 32; ++ /* entry->stats. = scan_vals[19]; / * OutTransmits */ + + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1; + entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1; diff --git a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb index f9572a1869..4b24520019 100644 --- a/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb @@ -28,6 +28,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \ file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \ file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \ file://0001-Android-Fix-the-build.patch \ + file://0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch \ " SRC_URI[sha256sum] = "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544"
currently system journal contains: snmpd[10442]: systemstats_linux: unexpected header length in /proc/net/snmp. 237 != 224 Backport a patch to fix this issue. Upstream-Status: Backport [https://github.com/net-snmp/net-snmp/commit/49d60ba57f4b462df7dc5fd5b38b4425dab0982c] Reference: https://github.com/net-snmp/net-snmp/issues/786 Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> --- ...-compatibility-parsing-proc-net-snmp.patch | 122 ++++++++++++++++++ .../net-snmp/net-snmp_5.9.4.bb | 1 + 2 files changed, 123 insertions(+) create mode 100644 meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-Linux-6.7-compatibility-parsing-proc-net-snmp.patch