+
+ membership = xmlGetProp(ident, (const xmlChar *) "membership");
+ if (membership == NULL) {
+ printlog(LOG_CRITICAL, "Ident missing membership protocol selection.\n");
+ return EINVAL;
+ } else {
+ if (!xmlStrcmp(membership, (const xmlChar *) "SWIM")) {
+ common->membership = SWIM;
+ } else if (!xmlStrcmp(membership, (const xmlChar *) "ZOOKEEPER")) {
+#ifdef BUILD_ZOOKEEPER
+ common->membership = ZOOKEEPER;
+#else
+ printlog(LOG_CRITICAL, "Zookeeper requested, but support not compiled into DRL at configure time.\n");
+ xmlFree(membership);
+ return EINVAL;
+#endif
+ } else {
+ printlog(LOG_CRITICAL, "Unknown/invalid gossip group membership protocol.\n");
+ xmlFree(membership);
+ return EINVAL;
+ }
+ xmlFree(membership);
+ }
+
+ failure_behavior = xmlGetProp(ident, (const xmlChar *) "failure_behavior");
+ if (failure_behavior == NULL) {
+ printlog(LOG_CRITICAL, "Ident missing failure handling behavior.\n");
+ return EINVAL;
+ } else {
+ if (!xmlStrcmp(failure_behavior, (const xmlChar *) "PANIC")) {
+ common->failure_behavior = PANIC;
+ } else if (!xmlStrcmp(failure_behavior, (const xmlChar *) "QUORUM")) {
+ common->failure_behavior = QUORUM;
+ } else {
+ printlog(LOG_CRITICAL, "Unknown/invalid gossip failure behavior policy.\n");
+ xmlFree(failure_behavior);
+ return EINVAL;
+ }
+ xmlFree(failure_behavior);
+ }