]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add some auxiliary functions for upstreams
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 15 May 2017 15:11:55 +0000 (16:11 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 15 May 2017 15:11:55 +0000 (16:11 +0100)
src/libutil/upstream.c
src/libutil/upstream.h

index 7e64b866c1ad8fd3c939d0849d44edd03f5f8e7e..9070245795ecd10da26636552e4479673b0ecda8 100644 (file)
@@ -473,6 +473,14 @@ rspamd_upstream_ok (struct upstream *up)
        RSPAMD_UPSTREAM_UNLOCK (up->lock);
 }
 
+void
+rspamd_upstream_set_weight (struct upstream *up, guint weight)
+{
+       RSPAMD_UPSTREAM_LOCK (up->lock);
+       up->weight = weight;
+       RSPAMD_UPSTREAM_UNLOCK (up->lock);
+}
+
 #define SEED_CONSTANT 0xa574de7df64e9b9dULL
 
 struct upstream_list*
@@ -611,6 +619,13 @@ rspamd_upstreams_set_flags (struct upstream_list *ups,
        ups->flags = flags;
 }
 
+void
+rspamd_upstreams_set_rotation (struct upstream_list *ups,
+               enum rspamd_upstream_rotation rot)
+{
+       ups->rot_alg = rot;
+}
+
 gboolean
 rspamd_upstream_add_addr (struct upstream *up, rspamd_inet_addr_t *addr)
 {
@@ -973,6 +988,6 @@ rspamd_upstreams_foreach (struct upstream_list *ups,
        for (i = 0; i < ups->ups->len; i ++) {
                up = g_ptr_array_index (ups->ups, i);
 
-               cb (up, ud);
+               cb (up, i, ud);
        }
 }
index 07b9302e8baa25c21011ad57ba5d97bcb8cf7844..ddc480afea512518e120369bbab6872b08a523b0 100644 (file)
@@ -62,6 +62,12 @@ void rspamd_upstream_fail (struct upstream *up);
  */
 void rspamd_upstream_ok (struct upstream *up);
 
+/**
+ * Set weight for an upstream
+ * @param up
+ */
+void rspamd_upstream_set_weight (struct upstream *up, guint weight);
+
 /**
  * Create new list of upstreams
  * @return
@@ -76,6 +82,14 @@ struct upstream_list* rspamd_upstreams_create (struct upstream_ctx *ctx);
 void rspamd_upstreams_set_flags (struct upstream_list *ups,
                enum rspamd_upstream_flag flags);
 
+/**
+ * Sets rotation policy for upstreams list
+ * @param ups
+ * @param rot
+ */
+void rspamd_upstreams_set_rotation (struct upstream_list *ups,
+               enum rspamd_upstream_rotation rot);
+
 /**
  * Destroy list of upstreams
  * @param ups
@@ -131,7 +145,7 @@ gboolean rspamd_upstreams_from_ucl (struct upstream_list *ups,
                const ucl_object_t *in, guint16 def_port, void *data);
 
 
-typedef void (*rspamd_upstream_traverse_func) (struct upstream *up,
+typedef void (*rspamd_upstream_traverse_func) (struct upstream *up, guint idx,
                void *ud);
 
 /**