]> arthur.barton.de Git - netdata.git/blobdiff - src/common.h
allow any pattern of network interfaces and disk paths to be excluded; fixes #1556...
[netdata.git] / src / common.h
index ff868b91743eaa70b94a0b4594aac46e28c5ac34..de4ff7a5d89190d06b3cccc950f50ee71e906760 100644 (file)
@@ -5,6 +5,9 @@
 #include <config.h>
 #endif
 
+// ----------------------------------------------------------------------------
+// system include files for all netdata C programs
+
 /* select the memory allocator, based on autoconf findings */
 #if defined(ENABLE_JEMALLOC)
 
 
 #else /* !defined(ENABLE_JEMALLOC) && !defined(ENABLE_TCMALLOC) */
 
-#ifndef __FreeBSD__
+#if !(defined(__FreeBSD__) || defined(__APPLE__))
 #include <malloc.h>
-#endif /* __FreeBSD__ */
+#endif /* __FreeBSD__ || __APPLE__ */
 
 #endif
 
 #include <pthread.h>
 #include <errno.h>
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stddef.h>
-
 #include <ctype.h>
 #include <string.h>
 #include <strings.h>
-
 #include <arpa/inet.h>
 #include <netinet/tcp.h>
 
 #include <netdb.h>
 #endif
 
+#include <net/if.h>
+
 #include <poll.h>
 #include <signal.h>
 #include <syslog.h>
 #include <sys/mman.h>
-#ifndef __FreeBSD__
+
+#if !(defined(__FreeBSD__) || defined(__APPLE__))
 #include <sys/prctl.h>
-#endif /* __FreeBSD__ */
+#endif /* __FreeBSD__ || __APPLE__*/
+
 #include <sys/resource.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <zlib.h>
 #endif
 
+// ----------------------------------------------------------------------------
+// netdata common definitions
+
 #if (SIZEOF_VOID_P == 8)
 #define ENVIRONMENT64
 #elif (SIZEOF_VOID_P == 4)
 #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
 #endif // __GNUC__
 
+#ifdef HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL
+#define NEVERNULL __attribute__((returns_nonnull))
+#else
+#define NEVERNULL
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_MALLOC
+#define MALLOCLIKE __attribute__((malloc))
+#else
+#define MALLOCLIKE
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_FORMAT
+#define PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))
+#else
+#define PRINTFLIKE(f, a)
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_NORETURN
+#define NORETURN __attribute__ ((noreturn))
+#else
+#define NORETURN
+#endif
+
+#ifdef HAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT
+#define WARNUNUSED __attribute__ ((warn_unused_result))
+#else
+#define WARNUNUSED
+#endif
+
+#ifdef abs
+#undef abs
+#endif
+#define abs(x) ((x < 0)? -x : x)
+
+#define GUID_LEN 36
+
+// ----------------------------------------------------------------------------
+// netdata include files
+
 #include "avl.h"
 #include "clocks.h"
 #include "log.h"
 #include "plugin_checks.h"
 #include "plugin_idlejitter.h"
 #include "plugin_nfacct.h"
-#ifndef __FreeBSD__
-#include "plugin_proc.h"
-#else
+
+#if defined(__FreeBSD__)
 #include "plugin_freebsd.h"
-#endif /* __FreeBSD__ */
+#elif defined(__APPLE__)
+#include "plugin_macos.h"
+#else
+#include "plugin_proc.h"
+#endif /* __FreeBSD__, __APPLE__*/
+
 #include "plugin_tc.h"
 #include "plugins_d.h"
-
+#include "socket.h"
 #include "eval.h"
 #include "health.h"
-
 #include "rrd.h"
 #include "rrd2json.h"
-
 #include "web_client.h"
 #include "web_server.h"
-
 #include "registry.h"
 #include "daemon.h"
 #include "main.h"
 #include "unit_test.h"
-
 #include "ipc.h"
 #include "backends.h"
 
-#ifdef abs
-#undef abs
-#endif
-#define abs(x) ((x < 0)? -x : x)
-
 extern void netdata_fix_chart_id(char *s);
 extern void netdata_fix_chart_name(char *s);
 
@@ -176,7 +218,7 @@ extern char *trim(char *s);
 
 extern char *strncpyz(char *dst, const char *src, size_t n);
 extern int  vsnprintfz(char *dst, size_t n, const char *fmt, va_list args);
-extern int  snprintfz(char *dst, size_t n, const char *fmt, ...) __attribute__ (( format (printf, 3, 4)));
+extern int  snprintfz(char *dst, size_t n, const char *fmt, ...) PRINTFLIKE(3, 4);
 
 // memory allocation functions that handle failures
 #ifdef NETDATA_LOG_ALLOCATIONS
@@ -192,10 +234,10 @@ extern void *mallocz_int(const char *file, const char *function, const unsigned
 extern void *reallocz_int(const char *file, const char *function, const unsigned long line, void *ptr, size_t size);
 extern void freez_int(const char *file, const char *function, const unsigned long line, void *ptr);
 #else
-extern char *strdupz(const char *s);
-extern void *callocz(size_t nmemb, size_t size);
-extern void *mallocz(size_t size);
-extern void *reallocz(void *ptr, size_t size);
+extern char *strdupz(const char *s) MALLOCLIKE NEVERNULL;
+extern void *callocz(size_t nmemb, size_t size) MALLOCLIKE NEVERNULL;
+extern void *mallocz(size_t size) MALLOCLIKE NEVERNULL;
+extern void *reallocz(void *ptr, size_t size) MALLOCLIKE NEVERNULL;
 extern void freez(void *ptr);
 #endif
 
@@ -235,4 +277,14 @@ extern void get_system_HZ(void);
 
 extern int read_single_number_file(const char *filename, unsigned long long *result);
 
+typedef enum {
+    NETDATA_SIMPLE_PATTERN_MODE_EXACT,
+    NETDATA_SIMPLE_PATTERN_MODE_PREFIX,
+    NETDATA_SIMPLE_PATTERN_MODE_SUFFIX,
+    NETDATA_SIMPLE_PATTERN_MODE_SUBSTRING
+} NETDATA_SIMPLE_PREFIX_MODE;
+typedef void NETDATA_SIMPLE_PATTERN;
+extern NETDATA_SIMPLE_PATTERN *netdata_simple_pattern_list_create(const char *list, NETDATA_SIMPLE_PREFIX_MODE default_mode);
+extern int netdata_simple_pattern_list_matches(NETDATA_SIMPLE_PATTERN *list, const char *str);
+
 #endif /* NETDATA_COMMON_H */