added extra/net-snmp, fixes #375

This commit is contained in:
Kevin Mihelich 2013-02-05 01:39:31 +00:00
parent 797ad8a01a
commit 1845e13bba
5 changed files with 205 additions and 0 deletions

70
extra/net-snmp/PKGBUILD Normal file
View file

@ -0,0 +1,70 @@
# $Id: PKGBUILD 176934 2013-02-02 19:39:14Z eric $
# Maintainer:
# Contributor: Dale Blount <dale@archlinux.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - don't use PCI on v5/v6
pkgname=net-snmp
pkgver=5.7.2
pkgrel=1.1
pkgdesc="A suite of applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6"
arch=('i686' 'x86_64')
url="http://www.net-snmp.org/"
license=('BSD')
depends=('openssl' 'libnl' 'pciutils')
makedepends=('python2-distribute')
optdepends=('perl-term-readkey: for snmpcheck application'
'perl-tk: for snmpcheck and tkmib applications'
'python2: for the python modules')
provides=('ucd-snmp')
backup=('etc/conf.d/snmpd')
options=('!libtool' '!emptydirs')
source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz{,.asc}
snmpd.confd snmpd.rc snmpd.service libnl32.patch)
sha1sums=('c493027907f32400648244d81117a126aecd27ee'
'25ee4b2e7b5a1b91122d06e82d41ef5bb5359d6d'
'cf811da9e57bbca34d8e2a3c358bb3bfc0c2b33b'
'90600c0141eed10d6e3ca3ccc97ad8dda15c2112'
'f59ddc049c1c689f04e68c3c7cd8b8e301df3158'
'74a9848b95f63378eb1753fc309d2b74de5afb0f')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
# http://sourceforge.net/tracker/index.php?func=detail&aid=3250304&group_id=12694&atid=112694
patch -Np1 -i "$srcdir/libnl32.patch"
autoreconf -f -i
PYTHONPROG=/usr/bin/python2 ./configure --prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--enable-ucd-snmp-compatibility \
--enable-ipv6 \
--with-python-modules \
--with-default-snmp-version="3" \
--with-sys-contact="root@localhost" \
--with-sys-location="Unknown" \
--with-logfile="/var/log/snmpd.log" \
--with-mib-modules="host misc/ipfwacc ucd-snmp/diskio tunnel ucd-snmp/dlmod" \
--with-persistent-directory="/var/net-snmp" \
--disable-static
# ALARM: don't use PCI on v5/v6
if [ "$CARCH" = "arm" -o "$CARCH" = "armv6h" ]; then
sed -i 's/HAVE_PCI_LOOKUP_NAME 1/HAVE_PCI_LOOKUP_NAME 0/' net-snmp-config.h
sed -i 's/HAVE_PCI_PCI_H 1/HAVE_PCI_PCI_H 0/' net-snmp-config.h
fi
make NETSNMP_DONT_CHECK_VERSION=1
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
sed -i -e "s:install --basedir=\$\$dir:install --basedir=\$\$dir --root=${pkgdir}:" Makefile
make DESTDIR="${pkgdir}" INSTALL_PREFIX="${pkgdir}" INSTALLDIRS=vendor install
install -D -m755 "${srcdir}/snmpd.rc" "${pkgdir}/etc/rc.d/snmpd"
install -D -m644 "${srcdir}/snmpd.confd" "${pkgdir}/etc/conf.d/snmpd"
install -D -m644 "${srcdir}/snmpd.service" "${pkgdir}/usr/lib/systemd/system/snmpd.service"
install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}

View file

@ -0,0 +1,80 @@
diff -u -r net-snmp-5.7.1/agent/mibgroup/mibII/tcpTable.c net-snmp-5.7.1-libnl32/agent/mibgroup/mibII/tcpTable.c
--- net-snmp-5.7.1/agent/mibgroup/mibII/tcpTable.c 2011-09-28 06:53:47.000000000 +0200
+++ net-snmp-5.7.1-libnl32/agent/mibgroup/mibII/tcpTable.c 2012-02-09 20:02:49.136022132 +0100
@@ -566,8 +566,9 @@
static int
tcpTable_load_netlink(void)
{
+ int err;
/* TODO: perhaps use permanent nl handle? */
- struct nl_handle *nl = nl_handle_alloc();
+ struct nl_sock *nl = nl_socket_alloc();
if (nl == NULL) {
DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n"));
@@ -575,10 +576,10 @@
return -1;
}
- if (nl_connect(nl, NETLINK_INET_DIAG) < 0) {
- DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror()));
- snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror());
- nl_handle_destroy(nl);
+ if ((err = nl_connect(nl, NETLINK_INET_DIAG)) < 0) {
+ DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror(err)));
+ snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror(err));
+ nl_socket_free(nl);
return -1;
}
@@ -590,10 +591,10 @@
struct nl_msg *nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST);
nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0);
- if (nl_send_auto_complete(nl, nm) < 0) {
- DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror()));
- snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror());
- nl_handle_destroy(nl);
+ if ((err = nl_send_auto_complete(nl, nm)) < 0) {
+ DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror(err)));
+ snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror(err));
+ nl_socket_free(nl);
return -1;
}
nlmsg_free(nm);
@@ -604,9 +605,9 @@
while (running) {
if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) {
- DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror()));
- snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror());
- nl_handle_destroy(nl);
+ DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror(len)));
+ snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror(len));
+ nl_socket_free(nl);
return -1;
}
@@ -655,7 +656,7 @@
free(buf);
}
- nl_handle_destroy(nl);
+ nl_socket_free(nl);
if (tcp_head) {
DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n"));
diff -u -r net-snmp-5.7.1/configure.d/config_os_libs2 net-snmp-5.7.1-libnl32/configure.d/config_os_libs2
--- net-snmp-5.7.1/configure.d/config_os_libs2 2011-09-28 06:53:47.000000000 +0200
+++ net-snmp-5.7.1-libnl32/configure.d/config_os_libs2 2012-02-09 20:10:44.282165275 +0100
@@ -224,8 +224,9 @@
if test "x$with_nl" != "xno"; then
case $target_os in
linux*) # Check for libnl (linux)
+ CPPFLAGS="$CPPFLAGS $(pkg-config --cflags-only-I libnl-3.0)"
NETSNMP_SEARCH_LIBS(
- nl_connect, nl,
+ nl_connect, nl-3,
[AC_CHECK_HEADERS(netlink/netlink.h)],,, LMIBLIBS)
;;
esac

View file

@ -0,0 +1,5 @@
#
# Parameters to be passed to snmpd
#
SNMPD_ARGS=""

39
extra/net-snmp/snmpd.rc Normal file
View file

@ -0,0 +1,39 @@
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
. /etc/conf.d/snmpd
PID=`pidof -o %PPID /usr/sbin/snmpd`
case "$1" in
start)
stat_busy "Starting Net-SNMP"
[ -z "$PID" ] && /usr/sbin/snmpd $SNMPD_ARGS
if [ $? -gt 0 ]; then
stat_fail
else
echo $PID > /var/run/snmpd.pid
add_daemon snmpd
stat_done
fi
;;
stop)
stat_busy "Stopping Net-SNMP"
[ ! -z "$PID" ] && kill $PID &> /dev/null
if [ $? -gt 0 ]; then
stat_fail
else
rm /var/run/snmpd.pid
rm_daemon snmpd
stat_done
fi
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
exit 0

View file

@ -0,0 +1,11 @@
[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/sbin/snmpd
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target