1/*
2** Zabbix
3** Copyright (C) 2001-2021 Zabbix SIA
4**
5** This program is free software; you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation; either version 2 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program; if not, write to the Free Software
17** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18**/
19
20package zbxlib
21
22/* cspell:disable */
23
24/*
25#cgo CFLAGS: -I${SRCDIR}/../../../../../include
26
27#include "common.h"
28#include "sysinfo.h"
29#include "module.h"
30
31int	SYSTEM_LOCALTIME(AGENT_REQUEST *request, AGENT_RESULT *result);
32int	NET_DNS(AGENT_REQUEST *request, AGENT_RESULT *result);
33int	NET_DNS_RECORD(AGENT_REQUEST *request, AGENT_RESULT *result);
34int	PROC_MEM(AGENT_REQUEST *request, AGENT_RESULT *result);
35int	PROC_NUM(AGENT_REQUEST *request, AGENT_RESULT *result);
36int	SYSTEM_BOOTTIME(AGENT_REQUEST *request, AGENT_RESULT *result);
37int	NET_TCP_LISTEN(AGENT_REQUEST *request, AGENT_RESULT *result);
38int	CHECK_SERVICE(AGENT_REQUEST *request, AGENT_RESULT *result);
39int	CHECK_SERVICE_PERF(AGENT_REQUEST *request, AGENT_RESULT *result);
40int	NET_UDP_LISTEN(AGENT_REQUEST *request, AGENT_RESULT *result);
41int	GET_SENSOR(AGENT_REQUEST *request, AGENT_RESULT *result);
42int	SYSTEM_CPU_LOAD(AGENT_REQUEST *request, AGENT_RESULT *result);
43int	SYSTEM_CPU_SWITCHES(AGENT_REQUEST *request, AGENT_RESULT *result);
44int	SYSTEM_CPU_INTR(AGENT_REQUEST *request, AGENT_RESULT *result);
45int	SYSTEM_HW_CHASSIS(AGENT_REQUEST *request, AGENT_RESULT *result);
46int	SYSTEM_HW_CPU(AGENT_REQUEST *request, AGENT_RESULT *result);
47int	SYSTEM_HW_DEVICES(AGENT_REQUEST *request, AGENT_RESULT *result);
48int	SYSTEM_HW_MACADDR(AGENT_REQUEST *request, AGENT_RESULT *result);
49int	SYSTEM_SW_OS(AGENT_REQUEST *request, AGENT_RESULT *result);
50int	SYSTEM_SW_PACKAGES(AGENT_REQUEST *request, AGENT_RESULT *result);
51int	SYSTEM_SWAP_IN(AGENT_REQUEST *request, AGENT_RESULT *result);
52int	SYSTEM_SWAP_OUT(AGENT_REQUEST *request, AGENT_RESULT *result);
53int	SYSTEM_SWAP_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
54int	SYSTEM_USERS_NUM(AGENT_REQUEST *request, AGENT_RESULT *result);
55int	VFS_DIR_COUNT(AGENT_REQUEST *request, AGENT_RESULT *result);
56int	VFS_DIR_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
57int	VFS_FS_DISCOVERY(AGENT_REQUEST *request, AGENT_RESULT *result);
58int	VFS_FS_INODE(AGENT_REQUEST *request, AGENT_RESULT *result);
59int	VFS_FS_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
60int	VFS_FS_GET(AGENT_REQUEST *request, AGENT_RESULT *result);
61int	VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result);
62*/
63import "C"
64
65import (
66	"unsafe"
67)
68
69func resolveMetric(key string) (cfunc unsafe.Pointer) {
70	switch key {
71	case "system.localtime":
72		cfunc = unsafe.Pointer(C.SYSTEM_LOCALTIME)
73	case "net.dns":
74		cfunc = unsafe.Pointer(C.NET_DNS)
75	case "net.dns.record":
76		cfunc = unsafe.Pointer(C.NET_DNS_RECORD)
77	case "system.boottime":
78		cfunc = unsafe.Pointer(C.SYSTEM_BOOTTIME)
79	case "net.tcp.listen":
80		cfunc = unsafe.Pointer(C.NET_TCP_LISTEN)
81	case "net.udp.listen":
82		cfunc = unsafe.Pointer(C.NET_UDP_LISTEN)
83	case "sensor":
84		cfunc = unsafe.Pointer(C.GET_SENSOR)
85	case "system.cpu.load":
86		cfunc = unsafe.Pointer(C.SYSTEM_CPU_LOAD)
87	case "system.cpu.switches":
88		cfunc = unsafe.Pointer(C.SYSTEM_CPU_SWITCHES)
89	case "system.cpu.intr":
90		cfunc = unsafe.Pointer(C.SYSTEM_CPU_INTR)
91	case "system.hw.chassis":
92		cfunc = unsafe.Pointer(C.SYSTEM_HW_CHASSIS)
93	case "system.hw.cpu":
94		cfunc = unsafe.Pointer(C.SYSTEM_HW_CPU)
95	case "system.hw.devices":
96		cfunc = unsafe.Pointer(C.SYSTEM_HW_DEVICES)
97	case "system.hw.macaddr":
98		cfunc = unsafe.Pointer(C.SYSTEM_HW_MACADDR)
99	case "system.sw.os":
100		cfunc = unsafe.Pointer(C.SYSTEM_SW_OS)
101	case "system.swap.in":
102		cfunc = unsafe.Pointer(C.SYSTEM_SWAP_IN)
103	case "system.swap.out":
104		cfunc = unsafe.Pointer(C.SYSTEM_SWAP_OUT)
105	case "vfs.dir.count":
106		cfunc = unsafe.Pointer(C.VFS_DIR_COUNT)
107	case "vfs.dir.size":
108		cfunc = unsafe.Pointer(C.VFS_DIR_SIZE)
109	}
110	return
111}
112