]> source.dussan.org Git - rspamd.git/commitdiff
Adopt logger for new radix.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 1 Oct 2014 15:29:37 +0000 (16:29 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 1 Oct 2014 15:29:37 +0000 (16:29 +0100)
src/libutil/logger.c
src/libutil/radix.c

index 54968ac58f97bbdefead7da9fcc0c8ad566599e5..5db081b61ff1377fbc5af513d3c59001d460a2dc 100644 (file)
@@ -56,7 +56,7 @@ struct rspamd_logger_s {
        enum rspamd_log_type type;
        pid_t pid;
        GQuark process_type;
-       radix_tree_t *debug_ip;
+       radix_compressed_t *debug_ip;
        guint32 last_line_cksum;
        guint32 repeats;
        gchar *saved_message;
@@ -290,11 +290,6 @@ rspamd_set_logger (struct rspamd_config *cfg,
        GQuark ptype,
        struct rspamd_main *rspamd)
 {
-       gchar **strvec, *p, *err;
-       gint num, i, k;
-       struct in_addr addr;
-       guint32 mask = 0xFFFFFFFF;
-
        if (rspamd->logger == NULL) {
                rspamd->logger = g_malloc (sizeof (rspamd_logger_t));
                memset (rspamd->logger, 0, sizeof (rspamd_logger_t));
@@ -340,45 +335,19 @@ rspamd_set_logger (struct rspamd_config *cfg,
        if (rspamd->cfg->debug_ip_map != NULL) {
                /* Try to add it as map first of all */
                if (rspamd->logger->debug_ip) {
-                       radix_tree_free (rspamd->logger->debug_ip);
+                       radix_destroy_compressed (rspamd->logger->debug_ip);
                }
-               rspamd->logger->debug_ip = radix_tree_create ();
+               rspamd->logger->debug_ip = radix_create_compressed ();
                if (!add_map (rspamd->cfg, rspamd->cfg->debug_ip_map,
                        "IP addresses for which debug logs are enabled",
                        read_radix_list, fin_radix_list,
                        (void **)&rspamd->logger->debug_ip)) {
-                       /* Try to parse it as list */
-                       strvec = g_strsplit_set (rspamd->cfg->debug_ip_map, ",; ", 0);
-                       num = g_strv_length (strvec);
-
-                       for (i = 0; i < num; i++) {
-                               g_strstrip (strvec[i]);
-
-                               if ((p = strchr (strvec[i], '/')) != NULL) {
-                                       /* Try to extract mask */
-                                       *p = '\0';
-                                       p++;
-                                       errno = 0;
-                                       k = strtoul (p, &err, 10);
-                                       if (errno != 0 || *err != '\0' || k > 32) {
-                                               continue;
-                                       }
-                               }
-                               else {
-                                       k = 32;
-                               }
-                               if (inet_aton (strvec[i], &addr)) {
-                                       /* Check ip */
-                                       mask = mask << (32 - k);
-                                       radix32tree_insert (rspamd->logger->debug_ip,
-                                               ntohl (addr.s_addr), mask, 1);
-                               }
-                       }
-                       g_strfreev (strvec);
+                       rspamd_config_parse_ip_list (rspamd->cfg->debug_ip_map,
+                                       &rspamd->logger->debug_ip);
                }
        }
        else if (rspamd->logger->debug_ip) {
-               radix_tree_free (rspamd->logger->debug_ip);
+               radix_destroy_compressed (rspamd->logger->debug_ip);
                rspamd->logger->debug_ip = NULL;
        }
 
@@ -815,8 +784,8 @@ rspamd_conditional_debug (rspamd_logger_t *rspamd_log,
        if (rspamd_log->cfg->log_level >= G_LOG_LEVEL_DEBUG ||
                rspamd_log->is_debug) {
                if (rspamd_log->debug_ip && addr != NULL) {
-                       if (addr->af == AF_INET && radix32tree_find (rspamd_log->debug_ip,
-                               ntohl (addr->addr.s4.sin_addr.s_addr)) == RADIX_NO_VALUE) {
+                       if (radix_find_compressed_addr (rspamd_log->debug_ip, addr)
+                                       == RADIX_NO_VALUE) {
                                return;
                        }
                }
index 240a7d67de14111a330e393d5d6ae3bc964a90dc..c8aaaf94623f8f903b865356243f27fdf8016f76 100644 (file)
 #include "main.h"
 #include "mem_pool.h"
 
-static void * radix_alloc (radix_tree_t * tree);
-
-#undef RADIX_DEBUG
-#ifndef RADIX_DEBUG
-#undef msg_debug
-#define msg_debug(...) do {} while (0)
-#endif
-
-struct radix_node_s {
-       radix_node_t *right;
-       radix_node_t *left;
-       radix_node_t *parent;
-       uintptr_t value;
-       guint32 key;
-};
-
-struct radix_tree_s {
-       radix_node_t *root;
-       size_t size;
-       rspamd_mempool_t *pool;
-};
 
 struct radix_compressed_node {
        union {
@@ -73,6 +52,29 @@ struct radix_tree_compressed {
        size_t size;
 };
 
+
+#ifdef LEGACY_RADIX
+static void * radix_alloc (radix_tree_t * tree);
+
+#undef RADIX_DEBUG
+#ifndef RADIX_DEBUG
+#undef msg_debug
+#define msg_debug(...) do {} while (0)
+#endif
+
+struct radix_node_s {
+       radix_node_t *right;
+       radix_node_t *left;
+       radix_node_t *parent;
+       uintptr_t value;
+       guint32 key;
+};
+struct radix_tree_s {
+       radix_node_t *root;
+       size_t size;
+       rspamd_mempool_t *pool;
+};
+
 radix_tree_t *
 radix_tree_create (void)
 {
@@ -373,6 +375,7 @@ radix32_tree_find_addr (radix_tree_t *tree, rspamd_inet_addr_t *addr)
 
        return radix32tree_find (tree, ntohl (addr->addr.s4.sin_addr.s_addr));
 }
+#endif /* Old radix code */
 
 static gboolean
 radix_compare_compressed (struct radix_compressed_node *node,