/* ** Zabbix ** Copyright (C) 2001-2023 Zabbix SIA ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ #ifndef ZABBIX_SYSINC_H #define ZABBIX_SYSINC_H #include "config.h" #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_ASSERT_H # include #endif #ifdef HAVE_ERRNO_H # include #endif #ifdef HAVE_WINSOCK2_H # include #endif #ifdef HAVE_WS2TCPIP_H # include #endif #ifdef HAVE_WSPIAPI_H # include "Wspiapi.h" #endif #ifdef HAVE_IPHLPAPI_H # include #endif #ifdef HAVE_NETIOAPI_H # include #endif #ifdef HAVE_WINDOWS_H /* to speed build process and reduce size of the Win32 header files */ # define WIN32_LEAN_AND_MEAN 1 # include #endif #ifdef HAVE_PROCESS_H # include #endif #ifdef HAVE_CONIO_H # include #endif #ifdef HAVE_PDH_H # include # ifndef PDH_MAX_COUNTER_NAME # define PDH_MAX_COUNTER_NAME 1024 /* maximum counter name length */ # endif # ifndef PDH_MAX_COUNTER_PATH # define PDH_MAX_COUNTER_PATH 2048 /* maximum full counter path length */ # endif #endif #ifdef HAVE_PDHMSG_H # include #endif #ifdef HAVE_PSAPI_H # include #endif #ifdef HAVE_STDARG_H # include #endif #ifdef HAVE_CTYPE_H # include #endif #ifdef HAVE_GRP_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_SYSTEMCFG_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TIME_H # include #endif #ifdef HAVE_SYS_TIMES_H # include #endif #ifdef HAVE_LINUX_KERNEL_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # ifdef MAC_OS_X # define BIND_8_COMPAT 1 # endif # include #endif #ifdef HAVE_DIRENT_H # include #endif #ifdef HAVE_SYS_DKSTAT_H # include #endif #ifdef HAVE_DEVSTAT_H # include #endif #ifdef HAVE_FCNTL_H # include #endif #ifdef HAVE_KNLIST_H # include #endif #ifdef HAVE_KSTAT_H # include #endif #ifdef HAVE_WINLDAP_H # undef SEC_I_INCOMPLETE_CREDENTIALS # undef SEC_E_INCOMPLETE_CREDENTIALS # undef SEC_I_RENEGOTIATE # include #endif #ifdef HAVE_WINBER_H # include #endif #ifdef HAVE_MACH_HOST_INFO_H # include #endif #ifdef HAVE_MACH_MACH_HOST_H # include #endif #ifdef HAVE_MTENT_H # include #endif #ifdef HAVE_NETDB_H #if defined(_AIX) /* AIX 5.1 needs this to get hstrerror() declaration */ #define _USE_IRS #endif # include #endif #ifdef HAVE_SYS_WAIT_H # include #endif #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_PWD_H # include #endif #ifdef HAVE_SIGNAL_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_SYS_LOADAVG_H # include #endif #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_PROC_H # include #endif #ifdef HAVE_SYS_PSTAT_H # include #endif #ifdef HAVE_PTHREAD_H # include #endif #ifdef HAVE_SYS_DK_H # include #endif #ifdef HAVE_RESOLV_H # include #endif #ifdef HAVE_SYS_DISK_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_SWAP_H # include #endif #ifdef HAVE_SYS_SYSCALL_H # include #endif #ifdef HAVE_SYS_SYSCTL_H # include #endif #ifdef HAVE_SYS_SYSINFO_H # include #endif #ifdef HAVE_SYS_SYSMACROS_H # include #endif #ifdef HAVE_SYS_VAR_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_VMMETER_H # include #endif #ifdef HAVE_LIBPERFSTAT # ifdef HAVE_SYS_PROTOSW_H # include /* workaround for /usr/include/netinet/in6_var.h bug, see ZBX-6565 */ # endif # include #endif #ifdef HAVE_SYS_RESOURCE_H # include #endif #ifdef HAVE_NLIST_H # include #endif #ifdef HAVE_NET_IF_H # include #endif #ifdef HAVE_NET_IF_MIB_H # include #endif #ifdef HAVE_SYS_USER_H # include #endif #ifdef HAVE_KVM_H # include #endif #ifdef HAVE_SYSLOG_H # include #endif #ifdef HAVE_TIME_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_IPC_H # include #endif #ifdef HAVE_SYS_SEM_H # include #endif #ifdef HAVE_SYS_SHM_H # include #endif #ifdef HAVE_SYS_FILE_H # include #endif #ifdef HAVE_MATH_H # include #endif #ifdef HAVE_PCRE_H # include #endif #ifdef HAVE_PCRE2_H # define PCRE2_CODE_UNIT_WIDTH 8 # include #endif #ifdef HAVE_VM_VM_PARAM_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_TIMEB_H # include #endif #ifdef HAVE_SYS_UN_H # include #endif #ifdef HAVE_PROCINFO_H # undef T_NULL /* to solve definition conflict */ # include #endif #ifdef HAVE_LIBCURL # include # if !defined(HAVE_FUNCTION_CURL_EASY_ESCAPE) # define curl_easy_escape(handle, string, length) curl_escape(string, length) # endif # if 0x071004 >= LIBCURL_VERSION_NUM /* version 7.16.4 */ # define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD # endif # if 0x071400 <= LIBCURL_VERSION_NUM /* version 7.20.0 */ # define HAVE_SMTP_AUTHENTICATION 1 # endif # if 0x071501 <= LIBCURL_VERSION_NUM /* version 7.21.6 */ # define ZBX_CURLOPT_ACCEPT_ENCODING CURLOPT_ACCEPT_ENCODING # else # define ZBX_CURLOPT_ACCEPT_ENCODING CURLOPT_ENCODING # endif # if 0x073700 <= LIBCURL_VERSION_NUM /* version 7.55.0 */ # define ZBX_CURLINFO_SPEED_DOWNLOAD CURLINFO_SPEED_DOWNLOAD_T # define ZBX_CURLINFO_SPEED_DOWNLOAD_TYPE curl_off_t # define ZBX_CURLINFO_SPEED_DOWNLOAD_FMT "%" CURL_FORMAT_CURL_OFF_T # else # define ZBX_CURLINFO_SPEED_DOWNLOAD CURLINFO_SPEED_DOWNLOAD # define ZBX_CURLINFO_SPEED_DOWNLOAD_TYPE double # define ZBX_CURLINFO_SPEED_DOWNLOAD_FMT ZBX_FS_DBL # endif # define ZBX_CURLOPT_MAXREDIRS 10L #endif /* Required for advanced sigaction */ #ifdef HAVE_SYS_UCONTEXT_H # include #endif #ifdef HAVE_IO_H # include #endif #ifdef HAVE_SYS_MNTTAB_H # include #endif #ifdef HAVE_MNTENT_H # include #endif #ifdef HAVE_DLFCN_H # include #endif #ifdef HAVE_ZONE_H # include # include #endif #ifdef HAVE_STDDEF_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_FLOAT_H # include #endif #ifdef HAVE_SYS_UTSNAME_H # include #endif #ifdef HAVE_POLL_H # include #endif #endif