2 ** NetXMS - Network Management System
3 ** Copyright (C) 2003-2014 Victor Kirhenshtein
5 ** This program is free software; you can redistribute it and/or modify
6 ** it under the terms of the GNU Lesser General Public License as published by
7 ** the Free Software Foundation; either version 3 of the License, or
8 ** (at your option) any later version.
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.
15 ** You should have received a copy of the GNU Lesser General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #ifndef _nms_common_h_
24 #define _nms_common_h_
32 #if !defined(_WIN32) && !defined(UNDER_CE)
35 #if defined(WITH_OPENSSL) || defined(WITH_COMMONCRYPTO)
36 #define _WITH_ENCRYPTION 1
42 #define _WITH_ENCRYPTION 1
43 #define WITH_OPENSSL 1
45 #if !defined(WINDOWS_ONLY) && !defined(_CRT_SECURE_NO_DEPRECATE)
46 #define _CRT_SECURE_NO_DEPRECATE
50 // prevent defining min and max macros in Windows headers
55 // prevent defining ETIMEDOUT, ECONNRESET, etc. to wrong values
56 #define _CRT_NO_POSIX_ERROR_CODES
60 #if HAVE_JEMALLOC_JEMALLOC_H
61 #include <jemalloc/jemalloc.h>
74 #include <netxms-version.h>
78 #endif /* HAVE_WIDEC */
81 * Define __64BIT__ if compiling for 64bit platform with Visual C++
83 #if defined(_M_X64) || defined(_M_IA64) || defined(__LP64__) || defined(__PPC64__) || defined(__x86_64__)
90 * Wrappers for 64-bit integer constants
92 #if defined(__GNUC__) || defined(__HP_aCC) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
93 #define _LL(x) (x ## LL)
94 #define _ULL(x) (x ## ULL)
95 #elif defined(_MSC_VER)
96 #define _LL(x) (x ## i64)
97 #define _ULL(x) (x ## ui64)
106 #define MAX_SECRET_LENGTH 64
107 #define MAX_DB_STRING 256
108 #define MAX_PARAM_NAME 256
109 #define MAX_CONFIG_VALUE 2000
110 #define MAX_COLUMN_NAME 64
111 #define MAX_DNS_NAME 256
112 #define MAX_HELPDESK_REF_LEN 64
113 #define MAX_PASSWORD 256
114 #define MAX_SSH_LOGIN_LEN 64
115 #define MAX_SSH_PASSWORD_LEN 64
116 #define GROUP_FLAG ((UINT32)0x80000000)
118 #define NETXMS_MAX_CIPHERS 6
119 #define NETXMS_RSA_KEYLEN 2048
122 #define LLONG_MAX _LL(9223372036854775807)
126 #define LLONG_MIN (-LLONG_MAX - 1)
130 #define ULLONG_MAX _ULL(18446744073709551615)
133 #ifndef EVENTLOG_DEBUG_TYPE
134 #define EVENTLOG_DEBUG_TYPE 0x0080
137 #define INVALID_INDEX 0xFFFFFFFF
138 #define MD5_DIGEST_SIZE 16
139 #define SHA1_DIGEST_SIZE 20
140 #define SHA256_DIGEST_SIZE 32
142 #define FILE_BUFFER_SIZE 32768
145 * Compatibility defines for C sources
147 #if !defined(__cplusplus) && !defined(CORTEX) && !HAVE_BOOL
152 * Oracle Pro*C compatibility
160 * Java class path separator character
163 #define JAVA_CLASSPATH_SEPARATOR _T(';')
165 #define JAVA_CLASSPATH_SEPARATOR _T(':')
169 /***** Platform dependent includes and defines *****/
171 #if defined(_WIN32) || defined(UNDER_CE)
173 /********** WINDOWS ********************/
176 #define __BUILD_VERSION_STRING(s,v) s v
177 #define __STR_NX(x) #x
178 #define __STR(x) __STR_NX(x)
179 #define CPP_COMPILER_VERSION __STR(__BUILD_VERSION_STRING(Microsoft C/C++ Optimizing Compiler Version,_MSC_FULL_VER))
182 // Disable some warnings:
183 // 4577 - 'noexcept' used with no exception handling mode specified
184 #pragma warning(disable: 4577)
187 #define _WIN32_WINNT 0x0501
192 #define USE_BUNDLED_LIBTRE 1
193 #define USE_BUNDLED_GETOPT 1
195 #define SAFE_FGETWS_WITH_POPEN 1
197 #define FS_PATH_SEPARATOR _T("\\")
198 #define FS_PATH_SEPARATOR_A "\\"
199 #define FS_PATH_SEPARATOR_W L"\\"
200 #define FS_PATH_SEPARATOR_CHAR _T('\\')
202 #define WEXITSTATUS(x) (x)
205 #define HAVE_SCPRINTF 1
206 #define HAVE_VSCPRINTF 1
207 #define HAVE_SCWPRINTF 1
208 #define HAVE_VSCWPRINTF 1
212 #define HAVE_STRTOLL 1
213 #define HAVE_STRTOULL 1
214 #define HAVE_WCSTOLL 1
215 #define HAVE_WCSTOULL 1
218 #define HAVE_SNPRINTF 1
219 #define HAVE_VSNPRINTF 1
221 #define HAVE_GETADDRINFO 1
223 #define HAVE_STDARG_H 1
225 #define HAVE_ALLOCA 1
227 #define HAVE_WCSLEN 1
228 #define HAVE_WCSNCPY 1
229 #define HAVE_WCSDUP 1
230 #define HAVE_WUTIME 1
232 #define HAVE_LIBCURL 1
234 #define HAVE_DIRENT_D_TYPE 1
236 #include <winsock2.h>
238 #include <ws2tcpip.h>
244 #define va_copy(x,y) (x = y)
246 #define HAVE_DECL_VA_COPY 1
249 #include <sys/stat.h>
250 #include <sys/utime.h>
258 # define S_IRUSR 0400
261 # define S_IWUSR 0200
264 #define snprintf _snprintf
265 #define vsnprintf _vsnprintf
266 #define snwprintf _snwprintf
267 #define vsnwprintf _vsnwprintf
268 #define scprintf _scprintf
269 #define vscprintf _vscprintf
270 #define scwprintf _scwprintf
271 #define vscwprintf _vscwprintf
273 #define pclose _pclose
274 #define stricmp _stricmp
275 #define strnicmp _strnicmp
276 #define wcsicmp _wcsicmp
277 #define wcsnicmp _wcsnicmp
278 #define strlwr(s) _strlwr(s)
279 #define strupr(s) _strupr(s)
280 #define putenv(s) _putenv(s)
281 #define fileno(f) _fileno(f)
282 #define chdir(p) _chdir(p)
283 #define mkdir(p,m) _mkdir(p,m)
284 #define lseek(f,o,w) _lseek(f,o,w)
285 #define unlink(x) _unlink(x)
287 typedef UINT64 QWORD
; // for compatibility
288 typedef int socklen_t
;
290 typedef LONG ssize_t
;
292 typedef signed __int8
int8_t;
293 typedef signed __int16
int16_t;
294 typedef signed __int32
int32_t;
295 typedef signed __int64
int64_t;
296 typedef unsigned __int8
uint8_t;
297 typedef unsigned __int16
uint16_t;
298 typedef unsigned __int32
uint32_t;
299 typedef unsigned __int64
uint64_t;
301 #define INT64_FMT _T("%I64d")
302 #define INT64_FMTA "%I64d"
303 #define INT64_FMTW L"%I64d"
304 #define UINT64_FMT _T("%I64u")
305 #define UINT64_FMTA "%I64u"
306 #define UINT64_FMTW L"%I64u"
307 #define UINT64X_FMT(m) _T("%") m _T("I64X")
308 #if defined(__64BIT__) || (_MSC_VER > 1300)
309 #define TIME_T_FMT _T("%I64u")
310 #define TIME_T_FCAST(x) ((UINT64)(x))
312 #define TIME_T_FMT _T("%u")
313 #define TIME_T_FCAST(x) ((UINT32)(x))
318 #define HAVE_DECL_BSWAP_16 1
319 #define HAVE_DECL_BSWAP_32 1
320 #define HAVE_DECL_BSWAP_64 1
322 #define bswap_16(n) _byteswap_ushort(n)
323 #define bswap_32(n) _byteswap_ulong(n)
324 #define bswap_64(n) _byteswap_uint64(n)
328 // Socket compatibility
333 #define SetSocketReuseFlag(s) { \
335 setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(BOOL)); \
337 #define SetSocketExclusiveAddrUse(s) { \
339 setsockopt(s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (char *)&val, sizeof(BOOL)); \
341 #define SELECT_NFDS(x) ((int)(x))
342 #define SetSocketNonBlocking(s) { \
344 ioctlsocket(s, FIONBIO, &one); \
346 #define SetSocketBlocking(s) { \
348 ioctlsocket(s, FIONBIO, &zero); \
350 #define SetSocketNoDelay(s) { \
352 setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(BOOL)); \
354 #define SetSocketBroadcast(s) { \
356 setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&val, sizeof(BOOL)); \
360 #define O_RDONLY 0x0004
361 #define O_WRONLY 0x0001
362 #define O_RDWR 0x0002
363 #define O_CREAT 0x0100
364 #define O_EXCL 0x0200
365 #define O_TRUNC 0x0800
368 #if !defined(UNDER_CE)
369 #define HAVE_LIBEXPAT 1
372 #define XMPP_SUPPORTED 1
374 #define HAVE_LOCALE_H 1
375 #define HAVE_SETLOCALE 1
377 // Use Win32 API instead of msvcrt for memory allocation
378 #ifdef USE_WIN32_HEAP
380 #define malloc(n) HeapAlloc(GetProcessHeap(), 0, n)
381 #define realloc(p, n) (((p) == NULL) ? HeapAlloc(GetProcessHeap(), 0, n) : HeapReAlloc(GetProcessHeap(), 0, p, n))
382 #define free(p) HeapFree(GetProcessHeap(), 0, p)
383 #define _tcsdup(s) nx__tcsdup(s)
384 #define wcsdup(s) nx_wcsdup(s)
388 #define _tcsdup nx_wcsdup
390 #define _tcsdup nx_strdup
395 #define strdup _strdup
396 #define wcsdup _wcsdup
400 #else /* not _WIN32 */
402 /*********** UNIX *********************/
406 #define PREFIX L"/usr/local"
408 #define PREFIX "/usr/local"
410 #warning Installation prefix not defined, defaulting to /usr/local
429 // Fix for wcs* functions visibility in Solaris 11
430 #if defined(__sun) && (__cplusplus >= 199711L)
435 using std
::wcscasecmp
;
438 using std
::wcsncasecmp
;
444 #define FS_PATH_SEPARATOR _T("/")
445 #define FS_PATH_SEPARATOR_A "/"
446 #define FS_PATH_SEPARATOR_W L"/"
447 #define FS_PATH_SEPARATOR_CHAR _T('/')
458 #include <sys/types.h>
465 #if HAVE_SYS_INT_TYPES_H
466 #include <sys/int_types.h>
470 #include <sys/stat.h>
473 #if HAVE_SYS_SOCKET_H
474 #include <sys/socket.h>
477 #if HAVE_SYS_SELECT_H
478 #include <sys/select.h>
481 #if HAVE_NETINET_IN_H
482 #include <netinet/in.h>
485 #if HAVE_NETINET_TCP_H
486 #include <netinet/tcp.h>
494 #include <arpa/inet.h>
514 #include <builtins.h>
518 #undef HAVE_ITOA /* Minix has non-compatible itoa() */
519 #undef HAVE_GETHOSTBYNAME2_R
522 #include <sys/socket.h>
526 #if (SIZEOF_LONG == 4)
527 #if (SIZEOF_INT == 4)
529 typedef unsigned int UINT32
;
532 typedef unsigned long UINT32
;
537 typedef unsigned int UINT32
;
542 typedef unsigned short UINT16
;
544 typedef unsigned char BYTE
;
545 typedef INT32 LONG
; // for compatibility
546 typedef UINT32 DWORD
; // for compatibility
547 typedef UINT16 WORD
; // for compatibility
548 typedef void * HANDLE
;
549 typedef void * HMODULE
;
555 // We have to use long as INT64 on HP-UX - otherwise
556 // there will be compilation errors because of type redefinition in
562 typedef unsigned long UINT64
;
564 typedef long long INT64
;
565 typedef unsigned long long UINT64
;
570 #if HAVE_LONG_LONG && (SIZEOF_LONG_LONG == 8)
571 typedef long long INT64
;
573 typedef int64_t INT64
;
574 #elif SIZEOF_LONG == 8
577 #error Target system does not have signed 64bit integer type
580 #if HAVE_UNSIGNED_LONG_LONG && (SIZEOF_LONG_LONG == 8)
581 typedef unsigned long long UINT64
;
583 typedef uint64_t UINT64
;
585 typedef u_int64_t UINT64
;
586 #elif SIZEOF_LONG == 8
587 typedef unsigned long UINT64
;
589 #error Target system does not have unsigned 64bit integer type
594 typedef UINT64 QWORD
; // for compatibility
596 #define INT64_FMT _T("%lld")
597 #define INT64_FMTW L"%lld"
598 #define INT64_FMTA "%lld"
599 #define UINT64_FMT _T("%llu")
600 #define UINT64_FMTW L"%llu"
601 #define UINT64_FMTA "%llu"
602 #define UINT64X_FMT(m) _T("%") m _T("llX")
604 #define TIME_T_FMT _T("%llu")
605 #define TIME_T_FCAST(x) ((UINT64)(x))
607 #define TIME_T_FMT _T("%u")
608 #define TIME_T_FCAST(x) ((UINT32)(x))
618 // Some systems may define true and false which may break overloaded functions
626 #define MAX_PATH PATH_MAX
628 #define MAX_PATH 1024
632 // Windows compatibility layer for standard C I/O functions
635 inline int _access(const char *pathname
, int mode
) { return ::access(pathname
, mode
); }
636 inline int _open(const char *pathname
, int flags
) { return ::open(pathname
, flags
); }
637 inline int _open(const char *pathname
, int flags
, mode_t mode
) { return ::open(pathname
, flags
, mode
); }
638 inline ssize_t
_read(int fd
, void *buf
, size_t count
) { return ::read(fd
, buf
, count
); }
639 inline ssize_t
_write(int fd
, const void *buf
, size_t count
) { return ::write(fd
, buf
, count
); }
640 inline int _close(int fd
) { return ::close(fd
); }
644 #define _access(p, m) access((p), (m))
646 #define _close(f) close(f)
647 #define _read(f, b, l) read((f), (b), (l))
648 #define _write(f, b, l) write((f), (b), (l))
649 #define _close(f) close(f)
653 // Socket compatibility
656 #define closesocket(x) _close(x)
657 #define WSAGetLastError() (errno)
659 #define WSAEINTR EINTR
660 #define WSAEWOULDBLOCK EWOULDBLOCK
661 #define WSAEINPROGRESS EINPROGRESS
662 #define WSAESHUTDOWN ESHUTDOWN
663 #define INVALID_SOCKET (-1)
665 #define SetSocketReuseFlag(sd) { \
667 setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (const void *)&nVal, \
668 (socklen_t)sizeof(nVal)); \
671 #define SetSocketExclusiveAddrUse(s)
673 #define SetSocketNonBlocking(s) { \
674 int f = fcntl(s, F_GETFL); \
675 if (f != -1) fcntl(s, F_SETFL, f | O_NONBLOCK); \
678 #define SetSocketNoDelay(s) { \
680 setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (const void *)&val, sizeof(int)); \
683 #define SetSocketBroadcast(s) { \
685 setsockopt(s, SOL_SOCKET, SO_BROADCAST, (const void *)&val, sizeof(int)); \
688 #define SELECT_NFDS(x) (x)
690 #if !(HAVE_SOCKLEN_T) && !defined(_USE_GNU_PTH)
691 typedef unsigned int socklen_t
;
695 #define SUN_LEN(su) (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
698 // Shared library suffix
700 #if defined(_HPUX) && !defined(__64BIT__)
701 #define SHLIB_SUFFIX _T(".sl")
703 #define SHLIB_SUFFIX _T(".so")
707 typedef struct hostent HOSTENT
;
709 #if HAVE_DECL___VA_COPY && !HAVE_DECL_VA_COPY
710 #define HAVE_DECL_VA_COPY 1
711 #define va_copy(d,s) __va_copy(d,s)
717 * Value used to indicate invalid pointer where NULL is not appropriate
720 #define INVALID_POINTER_VALUE ((void *)_ULL(0xFFFFFFFFFFFFFFFF))
722 #define INVALID_POINTER_VALUE ((void *)0xFFFFFFFF)
726 * Casting between pointer and 32-bit integer
729 #define CAST_FROM_POINTER(p, t) ((t)((UINT64)(p)))
730 #define CAST_TO_POINTER(v, t) ((t)((UINT64)(v)))
732 #define CAST_FROM_POINTER(p, t) ((t)(p))
733 #define CAST_TO_POINTER(v, t) ((t)(v))
737 * open() flags compatibility
744 * Windows-specific structures for non-Windows platforms
748 typedef struct tagPOINT
757 * Event log severity codes
760 #define EVENTLOG_SUCCESS 0x0000
761 #define EVENTLOG_ERROR_TYPE 0x0001
762 #define EVENTLOG_WARNING_TYPE 0x0002
763 #define EVENTLOG_INFORMATION_TYPE 0x0004
764 #define EVENTLOG_AUDIT_SUCCESS 0x0008
765 #define EVENTLOG_AUDIT_FAILURE 0x0010
768 #define NXLOG_DEBUG EVENTLOG_DEBUG_TYPE
769 #define NXLOG_INFO EVENTLOG_INFORMATION_TYPE
770 #define NXLOG_WARNING EVENTLOG_WARNING_TYPE
771 #define NXLOG_ERROR EVENTLOG_ERROR_TYPE
776 #define IFTYPE_OTHER 1
777 #define IFTYPE_REGULAR1822 2
778 #define IFTYPE_HDH1822 3
779 #define IFTYPE_DDN_X25 4
780 #define IFTYPE_RFC877_X25 5
781 #define IFTYPE_ETHERNET_CSMACD 6
782 #define IFTYPE_ISO88023_CSMACD 7
783 #define IFTYPE_ISO88024_TOKENBUS 8
784 #define IFTYPE_ISO88025_TOKENRING 9
785 #define IFTYPE_ISO88026_MAN 10
786 #define IFTYPE_STARLAN 11
787 #define IFTYPE_PROTEON_10MBIT 12
788 #define IFTYPE_PROTEON_80MBIT 13
789 #define IFTYPE_HYPERCHANNEL 14
790 #define IFTYPE_FDDI 15
791 #define IFTYPE_LAPB 16
792 #define IFTYPE_SDLC 17
793 #define IFTYPE_DS1 18
795 #define IFTYPE_BASIC_ISDN 20
796 #define IFTYPE_PRIMARY_ISDN 21
797 #define IFTYPE_PROP_PTP_SERIAL 22
798 #define IFTYPE_PPP 23
799 #define IFTYPE_SOFTWARE_LOOPBACK 24
800 #define IFTYPE_EON 25
801 #define IFTYPE_ETHERNET_3MBIT 26
802 #define IFTYPE_NSIP 27
803 #define IFTYPE_SLIP 28
804 #define IFTYPE_ULTRA 29
805 #define IFTYPE_DS3 30
806 #define IFTYPE_SMDS 31
807 #define IFTYPE_FRAME_RELAY 32
808 #define IFTYPE_RS232 33
809 #define IFTYPE_PARA 34
810 #define IFTYPE_ARCNET 35
811 #define IFTYPE_ARCNET_PLUS 36
812 #define IFTYPE_ATM 37
813 #define IFTYPE_MIOX25 38
814 #define IFTYPE_SONET 39
815 #define IFTYPE_X25PLE 40
816 #define IFTYPE_ISO88022LLC 41
817 #define IFTYPE_LOCALTALK 42
818 #define IFTYPE_SMDS_DXI 43
819 #define IFTYPE_FRAME_RELAY_SERVICE 44
820 #define IFTYPE_V35 45
821 #define IFTYPE_HSSI 46
822 #define IFTYPE_HIPPI 47
823 #define IFTYPE_MODEM 48
824 #define IFTYPE_AAL5 49
825 #define IFTYPE_SONET_PATH 50
826 #define IFTYPE_SONET_VT 51
827 #define IFTYPE_SMDS_ICIP 52
828 #define IFTYPE_PROP_VIRTUAL 53
829 #define IFTYPE_PROP_MULTIPLEXOR 54
830 #define IFTYPE_IEEE80212 55
831 #define IFTYPE_FIBRECHANNEL 56
832 #define IFTYPE_HIPPIINTERFACE 57
833 #define IFTYPE_FRAME_RELAY_INTERCONNECT 58
834 #define IFTYPE_AFLANE8023 59
835 #define IFTYPE_AFLANE8025 60
836 #define IFTYPE_CCTEMUL 61
837 #define IFTYPE_FAST_ETHERNET 62
838 #define IFTYPE_ISDN 63
839 #define IFTYPE_V11 64
840 #define IFTYPE_V36 65
841 #define IFTYPE_G703_AT64K 66
842 #define IFTYPE_G703_AT2MB 67
843 #define IFTYPE_QLLC 68
844 #define IFTYPE_FASTETHERFX 69
845 #define IFTYPE_CHANNEL 70
846 #define IFTYPE_IEEE80211 71
847 #define IFTYPE_IBM370_PARCHAN 72
848 #define IFTYPE_ESCON 73
849 #define IFTYPE_DLSW 74
850 #define IFTYPE_ISDNS 75
851 #define IFTYPE_ISDNU 76
852 #define IFTYPE_LAPD 77
853 #define IFTYPE_IPSWITCH 78
854 #define IFTYPE_RSRB 79
855 #define IFTYPE_ATMLOGICAL 80
856 #define IFTYPE_DS0 81
857 #define IFTYPE_DS0_BUNDLE 82
858 #define IFTYPE_BSC 83
859 #define IFTYPE_ASYNC 84
860 #define IFTYPE_CNR 85
861 #define IFTYPE_ISO88025DTR 86
862 #define IFTYPE_EPLRS 87
863 #define IFTYPE_ARAP 88
864 #define IFTYPE_PROPCNLS 89
865 #define IFTYPE_HOSTPAD 90
866 #define IFTYPE_TERMPAD 91
867 #define IFTYPE_FRAME_RELAY_MPI 92
868 #define IFTYPE_X213 93
869 #define IFTYPE_ADSL 94
870 #define IFTYPE_RADSL 95
871 #define IFTYPE_SDSL 96
872 #define IFTYPE_VDSL 97
873 #define IFTYPE_ISO88025CRFPINT 98
874 #define IFTYPE_MYRINET 99
875 #define IFTYPE_VOICEEM 100
876 #define IFTYPE_VOICEFXO 101
877 #define IFTYPE_VOICEFXS 102
878 #define IFTYPE_VOICEENCAP 103
879 #define IFTYPE_VOICEOVERIP 104
880 #define IFTYPE_ATMDXI 105
881 #define IFTYPE_ATMFUNI 106
882 #define IFTYPE_ATMIMA 107
883 #define IFTYPE_PPPMULTILINKBUNDLE 108
884 #define IFTYPE_IPOVERCDLC 109
885 #define IFTYPE_IPOVERCLAW 110
886 #define IFTYPE_STACKTOSTACK 111
887 #define IFTYPE_VIRTUAL_IP_ADDRESS 112
888 #define IFTYPE_MPC 113
889 #define IFTYPE_IPOVERATM 114
890 #define IFTYPE_ISO88025FIBER 115
891 #define IFTYPE_TDLC 116
892 #define IFTYPE_GIGABIT_ETHERNET 117
893 #define IFTYPE_HDLC 118
894 #define IFTYPE_LAPF 119
895 #define IFTYPE_V37 120
896 #define IFTYPE_X25MLP 121
897 #define IFTYPE_X25_HUNT_GROUP 122
898 #define IFTYPE_TRANSPHDLC 123
899 #define IFTYPE_INTERLEAVE 124
900 #define IFTYPE_FAST 125
901 #define IFTYPE_IP 126
902 #define IFTYPE_DOCSCABLE_MACLAYER 127
903 #define IFTYPE_DOCSCABLE_DOWNSTREAM 128
904 #define IFTYPE_DOCSCABLE_UPSTREAM 129
905 #define IFTYPE_A12MPPSWITCH 130
906 #define IFTYPE_TUNNEL 131
907 #define IFTYPE_COFFEE 132
908 #define IFTYPE_CES 133
909 #define IFTYPE_ATM_SUBINTERFACE 134
910 #define IFTYPE_L2VLAN 135
911 #define IFTYPE_L3IPVLAN 136
912 #define IFTYPE_L3IPXVLAN 137
913 #define IFTYPE_DIGITAL_POWERLINE 138
914 #define IFTYPE_MEDIAMAIL_OVER_IP 139
915 #define IFTYPE_DTM 140
916 #define IFTYPE_DCN 141
917 #define IFTYPE_IPFORWARD 142
918 #define IFTYPE_MSDSL 143
919 #define IFTYPE_IEEE1394 144
920 #define IFTYPE_GSN 145
921 #define IFTYPE_DVBRCC_MACLAYER 146
922 #define IFTYPE_DVBRCC_DOWNSTREAM 147
923 #define IFTYPE_DVBRCC_UPSTREAM 148
924 #define IFTYPE_ATM_VIRTUAL 149
925 #define IFTYPE_MPLS_TUNNEL 150
926 #define IFTYPE_SRP 151
927 #define IFTYPE_VOICE_OVER_ATM 152
928 #define IFTYPE_VOICE_OVER_FRAME_RELAY 153
929 #define IFTYPE_IDSL 154
930 #define IFTYPE_COMPOSITE_LINK 155
931 #define IFTYPE_SS7_SIGLINK 156
932 #define IFTYPE_PROPWIRELESSP2P 157
933 #define IFTYPE_FRFORWARD 158
934 #define IFTYPE_RFC1483 159
935 #define IFTYPE_USB 160
936 #define IFTYPE_IEEE8023ADLAG 161
937 #define IFTYPE_BGP_POLICY_ACCOUNTING 162
938 #define IFTYPE_FRF16MFR_BUNDLE 163
939 #define IFTYPE_H323_GATEKEEPER 164
940 #define IFTYPE_H323_PROXY 165
941 #define IFTYPE_MPLS 166
942 #define IFTYPE_MFSIGLINK 167
943 #define IFTYPE_HDSL2 168
944 #define IFTYPE_SHDSL 169
945 #define IFTYPE_DS1FDL 170
946 #define IFTYPE_POS 171
947 #define IFTYPE_DVBASI_IN 172
948 #define IFTYPE_DVBASI_OUT 173
949 #define IFTYPE_PLC 174
950 #define IFTYPE_NFAS 175
951 #define IFTYPE_TR008 176
952 #define IFTYPE_GR303RDT 177
953 #define IFTYPE_GR303IDT 178
954 #define IFTYPE_ISUP 179
955 #define IFTYPE_PROPDOCSWIRELESSMACLAYER 180
956 #define IFTYPE_PROPDOCSWIRELESSDOWNSTREAM 181
957 #define IFTYPE_PROPDOCSWIRELESSUPSTREAM 182
958 #define IFTYPE_HIPERLAN2 183
959 #define IFTYPE_PROPBWAP2MP 184
960 #define IFTYPE_SONET_OVERHEAD_CHANNEL 185
961 #define IFTYPE_DW_OVERHEAD_CHANNEL 186
962 #define IFTYPE_AAL2 187
963 #define IFTYPE_RADIOMAC 188
964 #define IFTYPE_ATMRADIO 189
965 #define IFTYPE_IMT 190
966 #define IFTYPE_MVL 191
967 #define IFTYPE_REACHDSL 192
968 #define IFTYPE_FRDLCIENDPT 193
969 #define IFTYPE_ATMVCIENDPT 194
970 #define IFTYPE_OPTICAL_CHANNEL 195
971 #define IFTYPE_OPTICAL_TRANSPORT 196
972 #define IFTYPE_PROPATM 197
973 #define IFTYPE_VOICE_OVER_CABLE 198
974 #define IFTYPE_INFINIBAND 199
975 #define IFTYPE_TELINK 200
976 #define IFTYPE_Q2931 201
977 #define IFTYPE_VIRTUALTG 202
978 #define IFTYPE_SIPTG 203
979 #define IFTYPE_SIPSIG 204
980 #define IFTYPE_DOCSCABLEUPSTREAMCHANNEL 205
981 #define IFTYPE_ECONET 206
982 #define IFTYPE_PON155 207
983 #define IFTYPE_PON622 208
984 #define IFTYPE_BRIDGE 209
985 #define IFTYPE_LINEGROUP 210
986 #define IFTYPE_VOICEEMFGD 211
987 #define IFTYPE_VOICEFGDEANA 212
988 #define IFTYPE_VOICEDID 213
989 #define IFTYPE_MPEG_TRANSPORT 214
990 #define IFTYPE_SIXTOFOUR 215
991 #define IFTYPE_GTP 216
992 #define IFTYPE_PDNETHERLOOP1 217
993 #define IFTYPE_PDNETHERLOOP2 218
994 #define IFTYPE_OPTICAL_CHANNEL_GROUP 219
995 #define IFTYPE_HOMEPNA 220
996 #define IFTYPE_GFP 221
997 #define IFTYPE_CISCO_ISL_VLAN 222
998 #define IFTYPE_ACTELIS_METALOOP 223
999 #define IFTYPE_FCIPLINK 224
1000 #define IFTYPE_RPR 225
1001 #define IFTYPE_QAM 226
1002 #define IFTYPE_LMP 227
1003 #define IFTYPE_CBLVECTASTAR 228
1004 #define IFTYPE_DOCSCABLEMCMTSDOWNSTREAM 229
1005 #define IFTYPE_ADSL2 230
1006 #define IFTYPE_MACSECCONTROLLEDIF 231
1007 #define IFTYPE_MACSECUNCONTROLLEDIF 232
1008 #define IFTYPE_AVICIOPTICALETHER 233
1009 #define IFTYPE_ATM_BOND 234
1010 #define IFTYPE_VOICEFGDOS 235
1011 #define IFTYPE_MOCA_VERSION1 236
1012 #define IFTYPE_IEEE80216WMAN 237
1013 #define IFTYPE_ADSL2PLUS 238
1014 #define IFTYPE_DVBRCSMACLAYER 239
1015 #define IFTYPE_DVBTDM 240
1016 #define IFTYPE_DVBRCSTDMA 241
1017 #define IFTYPE_X86LAPS 242
1018 #define IFTYPE_WWANPP 243
1019 #define IFTYPE_WWANPP2 244
1020 #define IFTYPE_VOICEEBS 245
1021 #define IFTYPE_IFPWTYPE 246
1022 #define IFTYPE_ILAN 247
1023 #define IFTYPE_PIP 248
1024 #define IFTYPE_ALUELP 249
1025 #define IFTYPE_GPON 250
1026 #define IFTYPE_VDSL2 251
1027 #define IFTYPE_CAPWAP_DOT11_PROFILE 252
1028 #define IFTYPE_CAPWAP_DOT11_BSS 253
1029 #define IFTYPE_CAPWAP_WTP_VIRTUAL_RADIO 254
1030 #define IFTYPE_BITS 255
1031 #define IFTYPE_DOCSCABLEUPSTREAMRFPORT 256
1032 #define IFTYPE_CABLEDOWNSTREAMRFPORT 257
1033 #define IFTYPE_VMWARE_VIRTUAL_NIC 258
1034 #define IFTYPE_IEEE802154 259
1035 #define IFTYPE_OTNODU 260
1036 #define IFTYPE_OTNOTU 261
1037 #define IFTYPE_IFVFITYPE 262
1038 #define IFTYPE_G9981 263
1039 #define IFTYPE_G9982 264
1040 #define IFTYPE_G9983 265
1041 #define IFTYPE_ALUEPON 266
1042 #define IFTYPE_ALUEPONONU 267
1043 #define IFTYPE_ALUEPONPHYSICALUNI 268
1044 #define IFTYPE_ALUEPONLOGICALLINK 269
1045 #define IFTYPE_ALUGPONONU 270
1046 #define IFTYPE_ALUGPONPHYSICALUNI 271
1047 #define IFTYPE_VMWARE_NIC_TEAM 272
1050 * IP Header -- RFC 791
1052 typedef struct tagIPHDR
1054 BYTE m_cVIHL
; // Version and IHL
1055 BYTE m_cTOS
; // Type Of Service
1056 WORD m_wLen
; // Total Length
1057 WORD m_wId
; // Identification
1058 WORD m_wFlagOff
; // Flags and Fragment Offset
1059 BYTE m_cTTL
; // Time To Live
1060 BYTE m_cProtocol
; // Protocol
1061 WORD m_wChecksum
; // Checksum
1062 struct in_addr m_iaSrc
; // Internet Address - Source
1063 struct in_addr m_iaDst
; // Internet Address - Destination
1067 * ICMP Header - RFC 792
1069 typedef struct tagICMPHDR
1071 BYTE m_cType
; // Type
1072 BYTE m_cCode
; // Code
1073 WORD m_wChecksum
; // Checksum
1074 WORD m_wId
; // Identification
1075 WORD m_wSeq
; // Sequence
1079 * INADDR_NONE can be undefined on some systems
1082 #define INADDR_NONE (0xFFFFFFFF)
1086 * Check if given string is NULL and always return valid pointer
1088 #define CHECK_NULL(x) ((x) == NULL ? _T("(null)") : (x))
1089 #define CHECK_NULL_A(x) ((x) == NULL ? "(null)" : (x))
1090 #define CHECK_NULL_EX(x) ((x) == NULL ? _T("") : (x))
1091 #define CHECK_NULL_EX_A(x) ((x) == NULL ? "" : (x))
1094 * Free memory block if it isn't NULL
1096 #if FREE_IS_NULL_SAFE
1097 #define safe_free(x) free(x);
1098 #define safe_free_and_null(x) { free(x); x = NULL; }
1100 #define safe_free(x) { if ((x) != NULL) free(x); }
1101 #define safe_free_and_null(x) { if ((x) != NULL) { free(x); x = NULL; } }
1105 * free() wrapper if it isn't NULL safe
1107 #if defined(__cplusplus) && !FREE_IS_NULL_SAFE
1108 inline void nx_free(void *p
)
1113 #define free nx_free
1117 * delete object and nullify pointer
1119 #define delete_and_null(x) { delete x; x = NULL; }
1122 * Convert half-byte's value to hex digit and vice versa
1124 #define bin2hex(x) ((x) < 10 ? ((x) + _T('0')) : ((x) + (_T('A') - 10)))
1126 #define hex2bin(x) ((((x) >= _T('0')) && ((x) <= _T('9'))) ? ((x) - _T('0')) : \
1127 (((towupper(x) >= _T('A')) && (towupper(x) <= _T('F'))) ? (towupper(x) - _T('A') + 10) : 0))
1129 #define hex2bin(x) ((((x) >= '0') && ((x) <= '9')) ? ((x) - '0') : \
1130 (((toupper(x) >= 'A') && (toupper(x) <= 'F')) ? (toupper(x) - 'A' + 10) : 0))
1134 * Define MIN() and MAX()
1137 #define MIN(a, b) ((a) < (b) ? (a) : (b))
1139 #define MAX(a, b) ((a) > (b) ? (a) : (b))
1142 * Define _tcsicmp() for non-windows
1145 #define stricmp strcasecmp
1146 #define strnicmp strncasecmp
1147 #define wcsicmp wcscasecmp
1148 #define wcsnicmp wcsncasecmp
1152 * Compare two numbers and return -1, 0, or 1
1154 #define COMPARE_NUMBERS(n1,n2) (((n1) < (n2)) ? -1 : (((n1) > (n2)) ? 1 : 0))
1157 * Increment pointer for given number of bytes
1159 #define inc_ptr(ptr, step, ptype) ptr = (ptype *)(((char *)ptr) + step)
1162 * Validate numerical value
1164 #define VALIDATE_VALUE(var,x,y,z) { if ((var < x) || (var > y)) var = z; }
1167 * DCI (data collection item) data types
1169 #define DCI_DT_INT 0
1170 #define DCI_DT_UINT 1
1171 #define DCI_DT_INT64 2
1172 #define DCI_DT_UINT64 3
1173 #define DCI_DT_STRING 4
1174 #define DCI_DT_FLOAT 5
1175 #define DCI_DT_NULL 6
1176 #define DCI_DT_DEPRECATED 255 /* used internally by agent */
1179 * Insert parameter as string
1182 #define STRING(x) L#x
1184 #define STRING(x) #x
1191 #define HPIPE HANDLE
1192 #define INVALID_PIPE_HANDLE INVALID_HANDLE_VALUE
1195 #define INVALID_PIPE_HANDLE (-1)
1200 #include <algorithm>
1203 * Session enumeration callback return codes
1205 enum EnumerationCallbackResult
1213 #endif /* _nms_common_h_ */