diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2014-10-06 08:26:53 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2014-10-06 08:26:53 +0000 |
commit | dabe82482012505bb5386fd133b67bebca87ebbe (patch) | |
tree | dc694a58fd211c723a22a5b9df7789a985ff575d /net-mgmt/netxms/files | |
parent | 28cc2614db65cc7962ca7443cb8e40bb1c0196ee (diff) | |
download | ports-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')
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 |