event==OC_EV_MS_NEW_MEMBERSHIP?"NEW MEMBERSHIP": event==OC_EV_MS_NOT_PRIMARY?"NOT PRIMARY": event==OC_EV_MS_PRIMARY_RESTORED?"PRIMARY RESTORED": event==OC_EV_MS_EVICTED?"EVICTED": "NO QUORUM MEMBERSHIP");
ccm_event_name(event));
cib_ccm_msg_callback(	oc_ed_t event, void *cookie, size_t size, const void *data){	unsigned lpc = 0;	int offset = 0;	const oc_ev_membership_t *membership = data;	crm_devel("received callback");		if(event==OC_EV_MS_NEW_MEMBERSHIP 	   || event==OC_EV_MS_NOT_PRIMARY	   || event==OC_EV_MS_PRIMARY_RESTORED) {		cib_have_quorum = TRUE;	} else {		cib_have_quorum = FALSE;	}	crm_info("Quorum %s after event=%s", 		 cib_have_quorum?"(re)attained":"lost",		 event==OC_EV_MS_NEW_MEMBERSHIP?"NEW MEMBERSHIP":		 event==OC_EV_MS_NOT_PRIMARY?"NOT PRIMARY":		 event==OC_EV_MS_PRIMARY_RESTORED?"PRIMARY RESTORED":		 event==OC_EV_MS_EVICTED?"EVICTED":		 "NO QUORUM MEMBERSHIP");		if(data == NULL) {		return;	}		if(ccm_membership != NULL) {		g_hash_table_foreach_remove(			ccm_membership, ghash_str_clfree, NULL);	}	ccm_membership = g_hash_table_new(g_str_hash, g_str_equal);	offset = membership->m_memb_idx;		for(lpc = 0; lpc < membership->m_n_member; lpc++) {		oc_node_t a_node = membership->m_array[lpc+offset];		char *uname = crm_strdup(a_node.node_uname);		crm_devel("Copying ccm member node %d:%s", lpc, uname);		g_hash_table_insert(ccm_membership, uname, uname);		}		oc_ev_callback_done(cookie);		return;}