--- net-snmp-5.6.1/agent/mibgroup/mibII/tcpTable.c.org 2011-03-27 22:39:13.428728506 +0200 +++ net-snmp-5.6.1/agent/mibgroup/mibII/tcpTable.c 2011-03-27 22:39:47.606956561 +0200 @@ -555,8 +555,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")); @@ -564,10 +565,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; } @@ -579,10 +580,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); @@ -593,9 +594,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; } @@ -644,7 +645,7 @@ free(buf); } - nl_handle_destroy(nl); + nl_socket_free(nl); if (tcp_head) { DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n")); --- net-snmp-5.7.1/configure.d/config_os_libs2.orig 2011-09-28 06:53:47.000000000 +0200 +++ net-snmp-5.7.1/configure.d/config_os_libs2 2011-10-30 12:25:15.940463045 +0100 @@ -222,10 +222,11 @@ # if test "x$with_nl" != "xno"; then + CPPFLAGS="$CPPFLAGS -I/usr/include/libnl3" case $target_os in linux*) # Check for libnl (linux) NETSNMP_SEARCH_LIBS( - nl_connect, nl, + nl_connect, nl-3, [AC_CHECK_HEADERS(netlink/netlink.h)],,, LMIBLIBS) ;; esac