diff options
3 files changed, 142 insertions, 0 deletions
diff --git a/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.9.4-kernel-6.7.patch b/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.9.4-kernel-6.7.patch new file mode 100644 index 0000000000..3f978d5f80 --- /dev/null +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.9.4-kernel-6.7.patch | |||
| @@ -0,0 +1,123 @@ | |||
| 1 | From f5ae6baf0018abda9dedc368fe6d52c0d7a8ab8f Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Philippe Troin <phil+github-commits@fifi.org> | ||
| 3 | Date: Sat, 3 Feb 2024 10:30:30 -0800 | ||
| 4 | Subject: [PATCH] Add Linux 6.7 compatibility parsing /proc/net/snmp | ||
| 5 | |||
| 6 | Linux 6.7 adds a new OutTransmits field to Ip in /proc/net/snmp. | ||
| 7 | This breaks the hard-coded assumptions about the Ip line length. | ||
| 8 | Add compatibility to parse Linux 6.7 Ip header while keep support | ||
| 9 | for previous versions. | ||
| 10 | |||
| 11 | Upstream-Status: Pending | ||
| 12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 13 | --- | ||
| 14 | .../ip-mib/data_access/systemstats_linux.c | 46 +++++++++++++++---- | ||
| 15 | 1 file changed, 37 insertions(+), 9 deletions(-) | ||
| 16 | |||
| 17 | diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c | ||
| 18 | index 49e0a34d5c..f04e828a94 100644 | ||
| 19 | --- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c | ||
| 20 | +++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c | ||
| 21 | @@ -36,7 +36,7 @@ netsnmp_access_systemstats_arch_init(void) | ||
| 22 | } | ||
| 23 | |||
| 24 | /* | ||
| 25 | - /proc/net/snmp | ||
| 26 | + /proc/net/snmp - Linux 6.6 and lower | ||
| 27 | |||
| 28 | Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates | ||
| 29 | Ip: 2 64 7083534 0 0 0 0 0 6860233 6548963 0 0 1 286623 63322 1 259920 0 0 | ||
| 30 | @@ -49,6 +49,26 @@ netsnmp_access_systemstats_arch_init(void) | ||
| 31 | |||
| 32 | Udp: InDatagrams NoPorts InErrors OutDatagrams | ||
| 33 | Udp: 1491094 122 0 1466178 | ||
| 34 | +* | ||
| 35 | + /proc/net/snmp - Linux 6.7 and higher | ||
| 36 | + | ||
| 37 | + Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates OutTransmits | ||
| 38 | + Ip: 1 64 50859058 496 0 37470604 0 0 20472980 7515791 1756 0 0 7264 3632 0 3548 0 7096 44961424 | ||
| 39 | + | ||
| 40 | + 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 | ||
| 41 | + 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 | ||
| 42 | + | ||
| 43 | + IcmpMsg: InType0 InType3 InType8 OutType0 OutType3 OutType8 OutType11 | ||
| 44 | + IcmpMsg: 29953 17589 66905 66905 16610 59957 484 | ||
| 45 | + | ||
| 46 | + Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors | ||
| 47 | + Tcp: 1 200 120000 -1 17744 13525 307 3783 6 18093137 9277788 3499 8 7442 0 | ||
| 48 | + | ||
| 49 | + Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti MemErrors | ||
| 50 | + Udp: 2257832 1422 0 2252835 0 0 0 84 0 | ||
| 51 | + | ||
| 52 | + UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti MemErrors | ||
| 53 | + UdpLite: 0 0 0 0 0 0 0 0 0 | ||
| 54 | */ | ||
| 55 | |||
| 56 | |||
| 57 | @@ -101,10 +121,10 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) | ||
| 58 | FILE *devin; | ||
| 59 | char line[1024]; | ||
| 60 | netsnmp_systemstats_entry *entry = NULL; | ||
| 61 | - int scan_count; | ||
| 62 | + int scan_count, expected_scan_count; | ||
| 63 | char *stats, *start = line; | ||
| 64 | int len; | ||
| 65 | - unsigned long long scan_vals[19]; | ||
| 66 | + unsigned long long scan_vals[20]; | ||
| 67 | |||
| 68 | DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n", | ||
| 69 | load_flags)); | ||
| 70 | @@ -126,10 +146,17 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) | ||
| 71 | */ | ||
| 72 | NETSNMP_IGNORE_RESULT(fgets(line, sizeof(line), devin)); | ||
| 73 | len = strlen(line); | ||
| 74 | - if (224 != len) { | ||
| 75 | + switch (len) { | ||
| 76 | + case 224: | ||
| 77 | + expected_scan_count = 19; | ||
| 78 | + break; | ||
| 79 | + case 237: | ||
| 80 | + expected_scan_count = 20; | ||
| 81 | + break; | ||
| 82 | + default: | ||
| 83 | fclose(devin); | ||
| 84 | snmp_log(LOG_ERR, "systemstats_linux: unexpected header length in /proc/net/snmp." | ||
| 85 | - " %d != 224\n", len); | ||
| 86 | + " %d not in { 224, 237 } \n", len); | ||
| 87 | return -4; | ||
| 88 | } | ||
| 89 | |||
| 90 | @@ -178,20 +205,20 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) | ||
| 91 | memset(scan_vals, 0x0, sizeof(scan_vals)); | ||
| 92 | scan_count = sscanf(stats, | ||
| 93 | "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu" | ||
| 94 | - "%llu %llu %llu %llu %llu %llu %llu %llu %llu", | ||
| 95 | + "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu", | ||
| 96 | &scan_vals[0],&scan_vals[1],&scan_vals[2], | ||
| 97 | &scan_vals[3],&scan_vals[4],&scan_vals[5], | ||
| 98 | &scan_vals[6],&scan_vals[7],&scan_vals[8], | ||
| 99 | &scan_vals[9],&scan_vals[10],&scan_vals[11], | ||
| 100 | &scan_vals[12],&scan_vals[13],&scan_vals[14], | ||
| 101 | &scan_vals[15],&scan_vals[16],&scan_vals[17], | ||
| 102 | - &scan_vals[18]); | ||
| 103 | + &scan_vals[18],&scan_vals[19]); | ||
| 104 | DEBUGMSGTL(("access:systemstats", " read %d values\n", scan_count)); | ||
| 105 | |||
| 106 | - if(scan_count != 19) { | ||
| 107 | + if(scan_count != expected_scan_count) { | ||
| 108 | snmp_log(LOG_ERR, | ||
| 109 | "error scanning systemstats data (expected %d, got %d)\n", | ||
| 110 | - 19, scan_count); | ||
| 111 | + expected_scan_count, scan_count); | ||
| 112 | netsnmp_access_systemstats_entry_free(entry); | ||
| 113 | return -4; | ||
| 114 | } | ||
| 115 | @@ -223,6 +250,7 @@ _systemstats_v4(netsnmp_container* container, u_int load_flags) | ||
| 116 | entry->stats.HCOutFragFails.high = scan_vals[17] >> 32; | ||
| 117 | entry->stats.HCOutFragCreates.low = scan_vals[18] & 0xffffffff; | ||
| 118 | entry->stats.HCOutFragCreates.high = scan_vals[18] >> 32; | ||
| 119 | + /* entry->stats. = scan_vals[19]; / * OutTransmits */ | ||
| 120 | |||
| 121 | entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1; | ||
| 122 | entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1; | ||
| 123 | |||
diff --git a/meta-networking/recipes-protocols/net-snmp/net-snmp/netsnmp-swinst-crash.patch b/meta-networking/recipes-protocols/net-snmp/net-snmp/netsnmp-swinst-crash.patch new file mode 100644 index 0000000000..109a0600a6 --- /dev/null +++ b/meta-networking/recipes-protocols/net-snmp/net-snmp/netsnmp-swinst-crash.patch | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | Fix crash in swinst | ||
| 2 | |||
| 3 | Upstream-Status: Pending | ||
| 4 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 5 | --- a/agent/mibgroup/host/data_access/swinst_pkginfo.c | ||
| 6 | +++ b/agent/mibgroup/host/data_access/swinst_pkginfo.c | ||
| 7 | @@ -210,7 +210,9 @@ netsnmp_swinst_arch_load( netsnmp_contai | ||
| 8 | memcpy( entry->swDate, cp, date_len ); | ||
| 9 | entry->swDate_len = date_len; | ||
| 10 | } | ||
| 11 | - closedir( d ); | ||
| 12 | + if (d != NULL) | ||
| 13 | + closedir( d ); | ||
| 14 | + | ||
| 15 | #ifdef HAVE_LIBPKG | ||
| 16 | } | ||
| 17 | #endif | ||
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 0840e4955b..6a62304a1c 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,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \ | |||
| 28 | file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \ | 28 | file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \ |
| 29 | file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \ | 29 | file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \ |
| 30 | file://0001-Android-Fix-the-build.patch \ | 30 | file://0001-Android-Fix-the-build.patch \ |
| 31 | file://netsnmp-swinst-crash.patch \ | ||
| 32 | file://net-snmp-5.9.4-kernel-6.7.patch \ | ||
| 31 | " | 33 | " |
| 32 | SRC_URI[sha256sum] = "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544" | 34 | SRC_URI[sha256sum] = "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544" |
| 33 | 35 | ||
