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*
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)
{
for (i = 0; i < ups->ups->len; i ++) {
up = g_ptr_array_index (ups->ups, i);
- cb (up, ud);
+ cb (up, i, ud);
}
}
*/
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
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
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);
/**