msg_options = set_xml_attr( NULL, XML_TAG_OPTIONS, XML_ATTR_OP, CRM_OP_UPDATE, TRUE);  request = create_request( msg_options, fragment, NULL, CRM_SYSTEM_DCIB, CRM_SYSTEM_DC, NULL, NULL);
crmd_client_status_callback(const char * node, const char * client,		 const char * status, void * private){	const char    *join = NULL;	const char   *extra = NULL;	xmlNodePtr   update = NULL;	xmlNodePtr fragment = NULL;	xmlNodePtr msg_options = NULL;	xmlNodePtr request = NULL;	crm_debug("received callback");	set_bit_inplace(fsa_input_register, R_PEER_DATA);		if(safe_str_eq(status, JOINSTATUS)){		status = ONLINESTATUS;		extra  = XML_CIB_ATTR_CLEAR_SHUTDOWN;	} else if(safe_str_eq(status, LEAVESTATUS)){		status = OFFLINESTATUS;		join   = CRMD_JOINSTATE_DOWN;		extra  = XML_CIB_ATTR_CLEAR_SHUTDOWN;	}		crm_notice("Status update: Client %s/%s now has status [%s]\n",		   node, client, status);	if(AM_I_DC == FALSE) {		crm_debug("Got client status callback in non-DC mode");		return;			}		update = create_node_state(		node, node, NULL, NULL, status, join, NULL);		set_xml_property_copy(update, extra, XML_BOOLEAN_TRUE);		fragment = create_cib_fragment(update, NULL);		msg_options = set_xml_attr(		NULL, XML_TAG_OPTIONS, XML_ATTR_OP, CRM_OP_UPDATE, TRUE);		request = create_request(		msg_options, fragment, NULL,		CRM_SYSTEM_DCIB, CRM_SYSTEM_DC, NULL, NULL);		crm_xml_debug(fragment, "Client status update");		free_xml(fragment);	free_xml(update);		register_fsa_input(C_CRMD_STATUS_CALLBACK, I_CIB_OP, request);	s_crmd_fsa(C_CRMD_STATUS_CALLBACK);}