Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Jack Mitchell <ml@communistcode.co.uk>
To: openembedded-core@lists.openembedded.org
Cc: Jack Mitchell <jack.mitchell@dbbroadcast.co.uk>
Subject: [meta-oe][PATCHv2 1/2] net-snmp: fix failure when starting on system without pci bus
Date: Wed, 17 Apr 2013 11:46:36 +0100	[thread overview]
Message-ID: <1366195597-13363-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




             reply	other threads:[~2013-04-17 11:04 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-17 10:46 Jack Mitchell [this message]
2013-04-17 10:46 ` [meta-oe][PATCHv2 2/2] net-snmp: Update to 5.7.2 Jack Mitchell
2013-04-17 11:10   ` Martin Jansa
2013-04-17 11:18     ` Jack Mitchell
2013-04-17 11:09 ` [meta-oe][PATCHv2 1/2] net-snmp: fix failure when starting on system without pci bus Jack Mitchell

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=1366195597-13363-1-git-send-email-ml@communistcode.co.uk \
    --to=ml@communistcode.co.uk \
    --cc=jack.mitchell@dbbroadcast.co.uk \
    --cc=openembedded-core@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox