aboutsummaryrefslogtreecommitdiff
path: root/net-mgmt/netxms/files
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2014-10-06 08:26:53 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2014-10-06 08:26:53 +0000
commitdabe82482012505bb5386fd133b67bebca87ebbe (patch)
treedc694a58fd211c723a22a5b9df7789a985ff575d /net-mgmt/netxms/files
parent28cc2614db65cc7962ca7443cb8e40bb1c0196ee (diff)
downloadports-dabe82482012505bb5386fd133b67bebca87ebbe.tar.gz
ports-dabe82482012505bb5386fd133b67bebca87ebbe.zip
Update to 1.2.16 [1]
switch to libc API instead of nosing in kernel memory via kvm(3) [2] PR: 194096 Submitted by: glebius [1] maintainer [2] Approved by: maintainer
Notes
Notes: svn path=/head/; revision=370146
Diffstat (limited to 'net-mgmt/netxms/files')
-rw-r--r--net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-freebsd.cpp23
-rw-r--r--net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.cpp181
-rw-r--r--net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.h10
-rw-r--r--net-mgmt/netxms/files/pkg-install.in18
4 files changed, 214 insertions, 18 deletions
diff --git a/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-freebsd.cpp b/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-freebsd.cpp
new file mode 100644
index 000000000000..395a63bcad3c
--- /dev/null
+++ b/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-freebsd.cpp
@@ -0,0 +1,23 @@
+--- src/agent/subagents/freebsd/freebsd.cpp.orig 2014-10-02 16:57:50.000000000 +0400
++++ src/agent/subagents/freebsd/freebsd.cpp 2014-10-02 16:58:48.000000000 +0400
+@@ -48,14 +48,14 @@
+ { _T("FileSystem.UsedPerc(*)"), H_DiskInfo, (const TCHAR *)DISK_USED_PERC, DCI_DT_FLOAT, DCIDESC_FS_USEDPERC },
+
+ { _T("Net.Interface.AdminStatus(*)"), H_NetIfAdmStatus, NULL, DCI_DT_INT, DCIDESC_NET_INTERFACE_ADMINSTATUS },
+- { _T("Net.Interface.BytesIn(*)"), H_NetIfInfoFromKVM, (const TCHAR *)IF_INFO_BYTES_IN, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_BYTESIN },
+- { _T("Net.Interface.BytesOut(*)"), H_NetIfInfoFromKVM, (const TCHAR *)IF_INFO_BYTES_OUT, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_BYTESOUT },
+- { _T("Net.Interface.InErrors(*)"), H_NetIfInfoFromKVM, (const TCHAR *)IF_INFO_IN_ERRORS, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_INERRORS },
++ { _T("Net.Interface.BytesIn(*)"), H_NetIfInfo, (const TCHAR *)IF_INFO_BYTES_IN, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_BYTESIN },
++ { _T("Net.Interface.BytesOut(*)"), H_NetIfInfo, (const TCHAR *)IF_INFO_BYTES_OUT, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_BYTESOUT },
++ { _T("Net.Interface.InErrors(*)"), H_NetIfInfo, (const TCHAR *)IF_INFO_IN_ERRORS, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_INERRORS },
+ { _T("Net.Interface.Link(*)"), H_NetIfLink, NULL, DCI_DT_DEPRECATED, DCIDESC_DEPRECATED },
+ { _T("Net.Interface.OperStatus(*)"), H_NetIfLink, NULL, DCI_DT_INT, DCIDESC_NET_INTERFACE_OPERSTATUS },
+- { _T("Net.Interface.OutErrors(*)"), H_NetIfInfoFromKVM, (const TCHAR *)IF_INFO_OUT_ERRORS, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_OUTERRORS },
+- { _T("Net.Interface.PacketsIn(*)"), H_NetIfInfoFromKVM, (const TCHAR *)IF_INFO_PACKETS_IN, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_PACKETSIN },
+- { _T("Net.Interface.PacketsOut(*)"), H_NetIfInfoFromKVM, (const TCHAR *)IF_INFO_PACKETS_OUT, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_PACKETSOUT },
++ { _T("Net.Interface.OutErrors(*)"), H_NetIfInfo, (const TCHAR *)IF_INFO_OUT_ERRORS, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_OUTERRORS },
++ { _T("Net.Interface.PacketsIn(*)"), H_NetIfInfo, (const TCHAR *)IF_INFO_PACKETS_IN, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_PACKETSIN },
++ { _T("Net.Interface.PacketsOut(*)"), H_NetIfInfo, (const TCHAR *)IF_INFO_PACKETS_OUT, DCI_DT_UINT64, DCIDESC_NET_INTERFACE_PACKETSOUT },
+ { _T("Net.IP.Forwarding"), H_NetIpForwarding, (const TCHAR *)4, DCI_DT_INT, DCIDESC_NET_IP_FORWARDING },
+ { _T("Net.IP6.Forwarding"), H_NetIpForwarding, (const TCHAR *)6, DCI_DT_INT, DCIDESC_NET_IP6_FORWARDING },
+
diff --git a/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.cpp b/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.cpp
new file mode 100644
index 000000000000..d3c874f16520
--- /dev/null
+++ b/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.cpp
@@ -0,0 +1,181 @@
+--- src/agent/subagents/freebsd/net.cpp.orig 2014-10-02 16:54:48.000000000 +0400
++++ src/agent/subagents/freebsd/net.cpp 2014-10-02 17:19:53.000000000 +0400
+@@ -32,7 +32,6 @@
+ #include <net/if_media.h>
+ #include <net/if_dl.h>
+ #include <net/if_types.h>
+-#include <net/if_var.h>
+ #include <net/route.h>
+ #include <net/iso88025.h>
+ #include <netinet/if_ether.h>
+@@ -40,8 +39,7 @@
+ #include <ifaddrs.h>
+ #include <arpa/inet.h>
+ #include <net/ethernet.h>
+-#include <kvm.h>
+-#include <nlist.h>
++#include <ifaddrs.h>
+
+ #include "net.h"
+
+@@ -60,14 +58,6 @@
+ int index;
+ } IFLIST;
+
+-struct nlist nl[] = {
+-#define N_IFNET 0
+- { (char *)"_ifnet" },
+- { NULL },
+-};
+-
+-kvm_t *kvmd = NULL;
+-
+ LONG H_NetIpForwarding(const TCHAR *pszParam, const TCHAR *pArg, TCHAR *pValue)
+ {
+ int nVer = CAST_FROM_POINTER(pArg, int);
+@@ -568,94 +558,66 @@
+ return nRet;
+ }
+
+-LONG H_NetIfInfoFromKVM(const TCHAR *pszParam, const TCHAR *pArg, TCHAR *pValue)
++LONG H_NetIfInfo(const TCHAR *pszParam, const TCHAR *pArg, TCHAR *pValue)
+ {
+- int nRet = SYSINFO_RC_SUCCESS;
+ char szArg[512];
+- u_long ifnetaddr;
+- struct ifnet ifnet;
+- struct ifnethead ifnethead;
+-#if __FreeBSD__ < 5
+- char szTName[IFNAMSIZ];
+-#endif
+- char szName[IFNAMSIZ];
++ struct ifaddrs *ifap, *ifa;
++ u_int index;
+
+ AgentGetParameterArgA(pszParam, 1, szArg, sizeof(szArg));
+
+- if (szArg[0] != 0)
++ if (szArg[0] == 0)
++ return SYSINFO_RC_SUCCESS;
++
++ if (szArg[0] >= '0' && szArg[0] <= '9')
++ index = atoi(szArg);
++ else
++ index = 0;
++
++ if (getifaddrs(&ifap) != 0)
+ {
+- if (szArg[0] >= '0' && szArg[0] <= '9')
+- {
+- // index
+- if (if_indextoname(atoi(szArg), szArg) != szArg)
+- {
+- // not found
+- nRet = SYSINFO_RC_ERROR;
+- }
+- }
++ return SYSINFO_RC_ERROR;
++ }
+
+- if (nRet == SYSINFO_RC_SUCCESS)
+- {
+- nRet = SYSINFO_RC_ERROR;
++ for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
++ if (ifa->ifa_addr->sa_family != AF_LINK)
++ continue;
++ if (index) {
++ if (index != if_nametoindex(ifa->ifa_name))
++ continue;
++ } else if (strcmp(ifa->ifa_name, szArg) != 0)
++ continue;
+
+- if (kvmd == NULL) {
+- kvmd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, NULL);
+- if (kvmd == NULL)
+- return SYSINFO_RC_ERROR;
+- if (kvm_nlist(kvmd, nl) < 0)
+- return SYSINFO_RC_ERROR;
+- if (nl[0].n_type == 0)
+- return SYSINFO_RC_ERROR;
+- }
+- ifnetaddr = nl[N_IFNET].n_value;
+- if (kvm_read(kvmd, ifnetaddr, &ifnethead, sizeof(ifnethead)) != sizeof(ifnethead))
+- return SYSINFO_RC_ERROR;
+- ifnetaddr = (u_long)TAILQ_FIRST(&ifnethead);
+- while (ifnetaddr) {
+- if (kvm_read(kvmd, ifnetaddr, &ifnet, sizeof(ifnet)) != sizeof(ifnet))
+- return SYSINFO_RC_ERROR;
+- ifnetaddr = (u_long)TAILQ_NEXT(&ifnet, if_link);
+-#if __FreeBSD__ >= 5
+- strlcpy(szName, ifnet.if_xname, sizeof(szName));
+-#else
+- if (kvm_read(kvmd, ifnet.if_name, szTName, sizeof(szTName)) != sizeof(szTName))
+- return SYSINFO_RC_ERROR;
+- szTName[sizeof(szTName) - 1] = '\0';
+- snprintf(szName, sizeof(szName), "%s%d", szTName, ifnet.if_unit);
+-#endif
+- if (strcmp(szName, szArg) == 0) {
+- nRet = SYSINFO_RC_SUCCESS;
+- switch((long)pArg)
+- {
+- case IF_INFO_BYTES_IN:
+- ret_uint(pValue, ifnet.if_ibytes);
+- break;
+- case IF_INFO_BYTES_OUT:
+- ret_uint(pValue, ifnet.if_obytes);
+- break;
+- case IF_INFO_IN_ERRORS:
+- ret_uint(pValue, ifnet.if_ierrors);
+- break;
+- case IF_INFO_OUT_ERRORS:
+- ret_uint(pValue, ifnet.if_oerrors);
+- break;
+- case IF_INFO_PACKETS_IN:
+- ret_uint(pValue, ifnet.if_ipackets);
+- break;
+- case IF_INFO_PACKETS_OUT:
+- ret_uint(pValue, ifnet.if_opackets);
+- break;
+- default:
+- nRet = SYSINFO_RC_UNSUPPORTED;
+- break;
+- }
+- break;
+- }
+- else
+- continue;
+- }
++#define IFA_STAT(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
++
++ switch((long)pArg)
++ {
++ case IF_INFO_BYTES_IN:
++ ret_uint(pValue, IFA_STAT(ibytes));
++ break;
++ case IF_INFO_BYTES_OUT:
++ ret_uint(pValue, IFA_STAT(obytes));
++ break;
++ case IF_INFO_IN_ERRORS:
++ ret_uint(pValue, IFA_STAT(ierrors));
++ break;
++ case IF_INFO_OUT_ERRORS:
++ ret_uint(pValue, IFA_STAT(oerrors));
++ break;
++ case IF_INFO_PACKETS_IN:
++ ret_uint(pValue, IFA_STAT(ipackets));
++ break;
++ case IF_INFO_PACKETS_OUT:
++ ret_uint(pValue, IFA_STAT(opackets));
++ break;
++ default:
++ freeifaddrs(ifap);
++ return SYSINFO_RC_UNSUPPORTED;
+ }
++ freeifaddrs(ifap);
++ return SYSINFO_RC_SUCCESS;
+ }
+
+- return nRet;
++ freeifaddrs(ifap);
++ return SYSINFO_RC_ERROR;
+ }
diff --git a/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.h b/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.h
new file mode 100644
index 000000000000..673f5b57493f
--- /dev/null
+++ b/net-mgmt/netxms/files/patch-src-agent-subagents-freebsd-net.h
@@ -0,0 +1,10 @@
+--- src/agent/subagents/freebsd/net.h.orig 2014-10-02 16:59:04.000000000 +0400
++++ src/agent/subagents/freebsd/net.h 2014-10-02 16:59:10.000000000 +0400
+@@ -39,6 +39,6 @@
+ LONG H_NetArpCache(const TCHAR *, const TCHAR *, StringList *);
+ LONG H_NetIfList(const TCHAR *, const TCHAR *, StringList *);
+ LONG H_NetRoutingTable(const TCHAR *, const TCHAR *, StringList *);
+-LONG H_NetIfInfoFromKVM(const TCHAR *, const TCHAR *, TCHAR *);
++LONG H_NetIfInfo(const TCHAR *, const TCHAR *, TCHAR *);
+
+ #endif // __NET_H__
diff --git a/net-mgmt/netxms/files/pkg-install.in b/net-mgmt/netxms/files/pkg-install.in
deleted file mode 100644
index 874d9139ff90..000000000000
--- a/net-mgmt/netxms/files/pkg-install.in
+++ /dev/null
@@ -1,18 +0,0 @@
-#! /bin/sh
-
-# $FreeBSD$
-
-PATH=/bin:/usr/sbin
-TSHOME=${PKG_PREFIX}/share/netxms
-
-USER=netxms
-GROUP=${USER}
-
-case "$2" in
-PRE-INSTALL)
- ;;
-POST-INSTALL)
- chown -R ${USER}:${GROUP} ${TSHOME}
- chmod -R u+w,o-rx ${TSHOME}
- ;;
-esac