From: Jack Mitchell <ml@communistcode.co.uk>
To: openembedded-devel@lists.openembedded.org
Cc: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
Subject: [meta-oe][PATCHv3 1/3] net-snmp: fix failure when starting on system without pci bus
Date: Wed, 17 Apr 2013 13:01:19 +0100 [thread overview]
Message-ID: <1366200081-12326-1-git-send-email-ml@communistcode.co.uk> (raw)
From: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
The snmpd daemon cannot start on platforms without a pci bus:
snmpd[15460]: pcilib: Cannot open /proc/bus/pci
snmpd[15460]: pcilib: Cannot find any working access method.
snmpd should not depend on a PCI bus and should simply move on.
Signed-off-by: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
---
.../recipes-extended/net-snmp/files/ifmib.patch | 66 ++++++++++++++++++++++
.../recipes-extended/net-snmp/net-snmp_5.7.1.bb | 1 +
2 files changed, 67 insertions(+)
create mode 100644 meta-oe/recipes-extended/net-snmp/files/ifmib.patch
diff --git a/meta-oe/recipes-extended/net-snmp/files/ifmib.patch b/meta-oe/recipes-extended/net-snmp/files/ifmib.patch
new file mode 100644
index 0000000..859c52c
--- /dev/null
+++ b/meta-oe/recipes-extended/net-snmp/files/ifmib.patch
@@ -0,0 +1,66 @@
+Signed-off-by: Jack Mitchell <jack@embed.me.uk>
+Upstream-Status: Pending
+Bug-Report: http://sourceforge.net/p/net-snmp/bugs/2449/
+
+diff --git a/agent/mibgroup/if-mib/data_access/interface_linux.c b/agent/mibgroup/if-mib/data_access/interface_linux.c
+index 3419811..d6eb91a 100644
+--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
++++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
+@@ -18,7 +18,31 @@ netsnmp_feature_require(interface_ioctl_flags_set)
+
+ #ifdef HAVE_PCI_LOOKUP_NAME
+ #include <pci/pci.h>
++#include <setjmp.h>
+ static struct pci_access *pci_access;
++
++/* Avoid letting libpci call exit(1) when no PCI bus is available. */
++static int do_longjmp =0;
++static jmp_buf err_buf;
++static void
++netsnmp_pci_error(char *msg, ...)
++{
++ va_list args;
++ char *buf;
++ int buflen;
++
++ va_start(args, msg);
++ buflen = strlen("pcilib: ")+strlen(msg)+2;
++ buf = malloc(buflen);
++ snprintf(buf, buflen, "pcilib: %s\n", msg);
++ snmp_vlog(LOG_ERR, buf, args);
++ free(buf);
++ va_end(args);
++ if (do_longjmp)
++ longjmp(err_buf, 1);
++ else
++ exit(1);
++}
+ #endif
+
+ #ifdef HAVE_LINUX_ETHTOOL_H
+@@ -147,10 +171,22 @@ netsnmp_arch_interface_init(void)
+
+ #ifdef HAVE_PCI_LOOKUP_NAME
+ pci_access = pci_alloc();
+- if (pci_access)
++ if (!pci_access) {
++ snmp_log(LOG_ERR, "pcilib: pci_alloc failed\n");
++ return;
++ }
++
++ pci_access->error = netsnmp_pci_error;
++
++ do_longjmp = 1;
++ if (setjmp(err_buf)) {
++ pci_cleanup(pci_access);
++ snmp_log(LOG_ERR, "pcilib: pci_init failed\n");
++ pci_access = NULL;
++ }
++ else if (pci_access)
+ pci_init(pci_access);
+- else
+- snmp_log(LOG_ERR, "Unable to create pci access method\n");
++ do_longjmp = 0;
+ #endif
+ }
+
diff --git a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
index 14c1036..19aa163 100644
--- a/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
+++ b/meta-oe/recipes-extended/net-snmp/net-snmp_5.7.1.bb
@@ -12,6 +12,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
file://systemd-support.patch \
file://snmpd.service \
file://snmptrapd.service \
+ file://ifmib.patch \
"
EXTRA_OECONF += "--disable-embedded-perl --with-perl-modules=no"
--
1.8.2
next reply other threads:[~2013-04-17 12:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-17 12:01 Jack Mitchell [this message]
2013-04-17 12:01 ` [meta-oe][PATCHv3 2/3] net-snmp: Update to 5.7.2 Jack Mitchell
2013-04-17 12:01 ` [meta-oe][PATCHv3 3/3] net-snmp: merge .inc into .bb and clean up obsolete parts of recipe Jack Mitchell
2013-04-17 12:12 ` [meta-oe][PATCHv3 1/3] net-snmp: fix failure when starting on system without pci bus Jack Mitchell
2013-04-17 12:27 ` Paul Eggleton
2013-04-17 12:48 ` Martin Jansa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1366200081-12326-1-git-send-email-ml@communistcode.co.uk \
--to=ml@communistcode.co.uk \
--cc=jack.mitchell@dbbroadcast.co.uk \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.