summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2010-04-16 17:58:28 +0200
committerStephen Gallagher <sgallagh@redhat.com>2010-04-30 07:50:58 -0400
commit576dba543b969989a23a810217fc28351cd2a6ed (patch)
treeae666f94b4941cd538f8279b4639ce6eef880984 /src/util
parent5ac807da80c331d8ccc0a1ad75ad35e305c1b0c0 (diff)
downloadsssd-576dba543b969989a23a810217fc28351cd2a6ed.tar.gz
sssd-576dba543b969989a23a810217fc28351cd2a6ed.tar.xz
sssd-576dba543b969989a23a810217fc28351cd2a6ed.zip
Support SRV servers in failover
Adds a new failover API call fo_add_srv_server that allows the caller to specify a server that is later resolved into a list of specific servers using SRV requests. Also adds a new failover option that specifies how often should the servers resolved from SRV query considered valid until we need a refresh. The "real" servers to connect to are returned to the user as usual, using the fo_resolve_service_{send,recv} calls. Make SRV resolution work with c-ares 1.6
Diffstat (limited to 'src/util')
-rw-r--r--src/util/dlinklist.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/util/dlinklist.h b/src/util/dlinklist.h
index be5ff914b..f323de702 100644
--- a/src/util/dlinklist.h
+++ b/src/util/dlinklist.h
@@ -110,6 +110,22 @@ do { \
} \
} while (0)
+/* insert all elements from list2 after the given element 'el' in the
+ * first list */
+#define DLIST_ADD_LIST_AFTER(list1, el, list2, type) \
+do { \
+ if (!(list1) || !(el) || !(list2)) { \
+ DLIST_CONCATENATE(list1, list2, type); \
+ } else { \
+ type tmp; \
+ for (tmp = (list2); tmp->next; tmp = tmp->next) ; \
+ (list2)->prev = (el); \
+ tmp->next = (el)->next; \
+ (el)->next = (list2); \
+ if ((el)->next != NULL) (el)->next->prev = tmp; \
+ } \
+} while (0);
+
#define DLIST_FOR_EACH(p, list) \
for ((p) = (list); (p) != NULL; (p) = (p)->next)