lrm_state = find_xml_node(lrm_state, "lrm_resources");
lrm_state = find_xml_node(lrm_state, XML_LRM_TAG_RESOURCES);
unpack_status(xmlNodePtr status,	      GSListPtr nodes,	      GSListPtr rsc_list,	      GSListPtr *node_constraints){	pdebug("Begining unpack %s", __FUNCTION__);	while(status != NULL) {		const char *id        = xmlGetProp(status, "id");		const char *state     = xmlGetProp(status, "state");		const char *exp_state = xmlGetProp(status, "exp_state");		const char *shutdown  = xmlGetProp(status, "shutdown");		xmlNodePtr lrm_state  = find_xml_node(status, "lrm");		xmlNodePtr attrs      = find_xml_node(status, "attributes");		lrm_state = find_xml_node(lrm_state, "lrm_resources");		lrm_state = find_xml_node(lrm_state, "lrm_resource");		status = status->next;		pdebug("Processing node %s", id);		if(id == NULL){			// error			continue;		}		pdebug("Processing node attrs");				node_t *this_node = pe_find_node(nodes, id);		if(this_node == NULL) {			cl_log(LOG_ERR,			       "Node %s in status section no longer exists",			       id);			continue;		}				while(attrs != NULL){			const char *name = xmlGetProp(attrs, "name");			const char *value = xmlGetProp(attrs, "value");						if(name != NULL && value != NULL			   && safe_val(NULL, this_node, details) != NULL) {				pdebug("Adding %s => %s",					      name, value);				g_hash_table_insert(this_node->details->attrs,						    crm_strdup(name),						    crm_strdup(value));			}			attrs = attrs->next;		}		pdebug("determining node state");				if(safe_str_eq(exp_state, "active")		   && safe_str_eq(state, "active")) {			// process resource, make +ve preference			this_node->details->online = TRUE;					} else {			pdebug("remove %s", __FUNCTION__);			// remove node from contention			this_node->weight = -1;			this_node->fixed = TRUE;			pdebug("state %s, expected %s, shutdown %s",			       state, exp_state, shutdown);						if(shutdown != NULL			   /* avoid reissuing shutdowns once the CRMd has			    * been shutdown (even if heartbeat hasnt)			    */			   && (safe_str_eq(exp_state, "down"))//			   && (safe_str_eq(state, "active"))				){				// create shutdown req				this_node->details->shutdown = TRUE;				pdebug("Node %s is due for shutdown", id);							} else if(safe_str_eq(exp_state, "active")				  && safe_str_neq(state, "active")) {				// mark unclean in the xml				this_node->details->unclean = TRUE;				pdebug("Node %s is due for STONITH", id);							}		}		pdebug("Processing node lrm state");		process_node_lrm_state(this_node, lrm_state,				       rsc_list,  nodes,				       node_constraints);	}	return TRUE;	}