xmlNodePtr xml_obj, GListPtr rsc_list, GListPtr *ordering_constraints)
crm_data_t * xml_obj, GListPtr rsc_list, GListPtr *ordering_constraints)
unpack_rsc_order(	xmlNodePtr xml_obj, GListPtr rsc_list, GListPtr *ordering_constraints){	gboolean symetrical_bool = TRUE;	gboolean action_is_start = TRUE;	gboolean type_is_after   = TRUE;		const char *id         = xmlGetProp(xml_obj, XML_ATTR_ID);	const char *id_lh      = xmlGetProp(xml_obj, XML_CONS_ATTR_FROM);	const char *id_rh      = xmlGetProp(xml_obj, XML_CONS_ATTR_TO);	const char *action     = xmlGetProp(xml_obj, XML_CONS_ATTR_ACTION);	const char *symetrical = xmlGetProp(xml_obj, XML_CONS_ATTR_SYMETRICAL);	const char *type       = xmlGetProp(xml_obj, XML_ATTR_TYPE);	resource_t *rsc_lh   = pe_find_resource(rsc_list, id_lh);	resource_t *rsc_rh   = pe_find_resource(rsc_list, id_rh);	if(xml_obj == NULL) {		crm_err("No constraint object to process.");		return FALSE;	} else if(id == NULL) {		crm_err("%s constraint must have an id", xml_obj->name);		return FALSE;			} else if(rsc_lh == NULL || rsc_rh == NULL) {		crm_err("Constraint %s needs two sides lh: %p rh: %p"			" (NULL indicates missing side)",			id, rsc_lh, rsc_rh);		return FALSE;		}	if(safe_str_eq(symetrical, XML_BOOLEAN_FALSE)) {		symetrical_bool = FALSE;	}	if(safe_str_eq(type, "before")) {		type_is_after = FALSE;	}	if(safe_str_eq(action, CRMD_RSCSTATE_STOP)) {		action_is_start = FALSE;	}#if 1	if((type_is_after && action_is_start)	   || (type_is_after == FALSE && action_is_start == FALSE)){		if(symetrical_bool || action_is_start == FALSE) {			order_new(rsc_lh, stop_rsc, NULL, rsc_rh, stop_rsc, NULL,				  pecs_startstop, ordering_constraints);		}				if(symetrical_bool || action_is_start) {			order_new(rsc_rh, start_rsc, NULL, rsc_lh, start_rsc, NULL,				  pecs_startstop, ordering_constraints);		}	} else {		if(symetrical_bool || action_is_start == FALSE) {			order_new(rsc_rh, stop_rsc, NULL, rsc_lh, stop_rsc, NULL,				  pecs_startstop, ordering_constraints);		}		if(symetrical_bool || action_is_start) {			order_new(rsc_lh, start_rsc, NULL, rsc_rh, start_rsc, NULL,				  pecs_startstop, ordering_constraints);		}	}	#else		if(type_is_after) {		order_new(rsc_lh, stop_rsc, NULL, rsc_rh, stop_rsc, NULL,			  pecs_startstop, ordering_constraints);		order_new(rsc_rh, start_rsc, NULL, rsc_lh, start_rsc, NULL,			  pecs_startstop, ordering_constraints);	} else {		order_new(rsc_rh, stop_rsc, NULL, rsc_lh, stop_rsc, NULL,			  pecs_startstop, ordering_constraints);		order_new(rsc_lh, start_rsc, NULL, rsc_rh, start_rsc, NULL,			  pecs_startstop, ordering_constraints);	}#endif	return TRUE;}