diff options
Diffstat (limited to 'meta-networking/recipes-protocols/net-snmp')
3 files changed, 155 insertions, 7 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 395b02df00..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,12 +28,16 @@ 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 | ||
34 | UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/net-snmp/files/net-snmp/" | 36 | UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/net-snmp/files/net-snmp/" |
35 | UPSTREAM_CHECK_REGEX = "/net-snmp/(?P<pver>\d+(\.\d+)+)/" | 37 | UPSTREAM_CHECK_REGEX = "/net-snmp/(?P<pver>\d+(\.\d+)+)/" |
36 | 38 | ||
39 | CVE_PRODUCT = "net-snmp:net-snmp" | ||
40 | |||
37 | inherit autotools-brokensep update-rc.d siteinfo systemd pkgconfig perlnative ptest multilib_script multilib_header | 41 | inherit autotools-brokensep update-rc.d siteinfo systemd pkgconfig perlnative ptest multilib_script multilib_header |
38 | 42 | ||
39 | EXTRA_OEMAKE = "INSTALL_PREFIX=${D} OTHERLDFLAGS='${LDFLAGS}' HOST_CPPFLAGS='${BUILD_CPPFLAGS}'" | 43 | EXTRA_OEMAKE = "INSTALL_PREFIX=${D} OTHERLDFLAGS='${LDFLAGS}' HOST_CPPFLAGS='${BUILD_CPPFLAGS}'" |
@@ -53,6 +57,8 @@ PACKAGECONFIG[perl] = "--enable-embedded-perl --with-perl-modules=yes, --disable | |||
53 | PACKAGECONFIG[smux] = "" | 57 | PACKAGECONFIG[smux] = "" |
54 | PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd" | 58 | PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd" |
55 | 59 | ||
60 | SYSCONTACT_DISTRO ?= "no-contact-set@example.com" | ||
61 | |||
56 | EXTRA_OECONF = " \ | 62 | EXTRA_OECONF = " \ |
57 | --enable-shared \ | 63 | --enable-shared \ |
58 | --disable-manuals \ | 64 | --disable-manuals \ |
@@ -61,6 +67,7 @@ EXTRA_OECONF = " \ | |||
61 | --with-persistent-directory=${localstatedir}/lib/net-snmp \ | 67 | --with-persistent-directory=${localstatedir}/lib/net-snmp \ |
62 | --with-endianness=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \ | 68 | --with-endianness=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \ |
63 | --with-mib-modules='${MIB_MODULES}' \ | 69 | --with-mib-modules='${MIB_MODULES}' \ |
70 | --with-sys-contact='${SYSCONTACT_DISTRO}' \ | ||
64 | " | 71 | " |
65 | 72 | ||
66 | MIB_MODULES = "" | 73 | MIB_MODULES = "" |
@@ -73,6 +80,7 @@ CACHED_CONFIGUREVARS = " \ | |||
73 | lt_cv_shlibpath_overrides_runpath=yes \ | 80 | lt_cv_shlibpath_overrides_runpath=yes \ |
74 | ac_cv_path_UNAMEPROG=${base_bindir}/uname \ | 81 | ac_cv_path_UNAMEPROG=${base_bindir}/uname \ |
75 | ac_cv_path_PSPROG=${base_bindir}/ps \ | 82 | ac_cv_path_PSPROG=${base_bindir}/ps \ |
83 | ac_cv_ps_flags="-e" \ | ||
76 | ac_cv_file__etc_printcap=no \ | 84 | ac_cv_file__etc_printcap=no \ |
77 | NETSNMP_CONFIGURE_OPTIONS= \ | 85 | NETSNMP_CONFIGURE_OPTIONS= \ |
78 | " | 86 | " |
@@ -116,12 +124,12 @@ do_configure:append() { | |||
116 | do_install:append() { | 124 | do_install:append() { |
117 | install -d ${D}${sysconfdir}/snmp | 125 | install -d ${D}${sysconfdir}/snmp |
118 | install -d ${D}${sysconfdir}/init.d | 126 | install -d ${D}${sysconfdir}/init.d |
119 | install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/snmpd | 127 | install -m 755 ${UNPACKDIR}/init ${D}${sysconfdir}/init.d/snmpd |
120 | install -m 644 ${WORKDIR}/snmpd.conf ${D}${sysconfdir}/snmp/ | 128 | install -m 644 ${UNPACKDIR}/snmpd.conf ${D}${sysconfdir}/snmp/ |
121 | install -m 644 ${WORKDIR}/snmptrapd.conf ${D}${sysconfdir}/snmp/ | 129 | install -m 644 ${UNPACKDIR}/snmptrapd.conf ${D}${sysconfdir}/snmp/ |
122 | install -d ${D}${systemd_unitdir}/system | 130 | install -d ${D}${systemd_unitdir}/system |
123 | install -m 0644 ${WORKDIR}/snmpd.service ${D}${systemd_unitdir}/system | 131 | install -m 0644 ${UNPACKDIR}/snmpd.service ${D}${systemd_unitdir}/system |
124 | install -m 0644 ${WORKDIR}/snmptrapd.service ${D}${systemd_unitdir}/system | 132 | install -m 0644 ${UNPACKDIR}/snmptrapd.service ${D}${systemd_unitdir}/system |
125 | sed -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \ | 133 | sed -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \ |
126 | -i ${D}${bindir}/net-snmp-create-v3-user | 134 | -i ${D}${bindir}/net-snmp-create-v3-user |
127 | sed -e 's@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g' \ | 135 | sed -e 's@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g' \ |
@@ -265,12 +273,12 @@ RDEPENDS:${PN}-server-snmpd += "net-snmp-mibs" | |||
265 | RDEPENDS:${PN}-server-snmptrapd += "net-snmp-server-snmpd ${PN}-lib-trapd" | 273 | RDEPENDS:${PN}-server-snmptrapd += "net-snmp-server-snmpd ${PN}-lib-trapd" |
266 | RDEPENDS:${PN}-server += "net-snmp-server-snmpd net-snmp-server-snmptrapd" | 274 | RDEPENDS:${PN}-server += "net-snmp-server-snmpd net-snmp-server-snmptrapd" |
267 | RDEPENDS:${PN}-client += "net-snmp-mibs net-snmp-libs" | 275 | RDEPENDS:${PN}-client += "net-snmp-mibs net-snmp-libs" |
268 | RDEPENDS:${PN}-libs += "libpci \ | 276 | RDEPENDS:${PN}-libs += "${PN}-lib-netsnmp \ |
269 | ${PN}-lib-netsnmp \ | ||
270 | ${PN}-lib-agent \ | 277 | ${PN}-lib-agent \ |
271 | ${PN}-lib-helpers \ | 278 | ${PN}-lib-helpers \ |
272 | ${PN}-lib-mibs \ | 279 | ${PN}-lib-mibs \ |
273 | " | 280 | " |
281 | RDEPENDS:${PN}-libs:append:class-target = " libpci" | ||
274 | RDEPENDS:${PN}-ptest += "perl \ | 282 | RDEPENDS:${PN}-ptest += "perl \ |
275 | perl-module-test \ | 283 | perl-module-test \ |
276 | perl-module-file-basename \ | 284 | perl-module-file-basename \ |