rsc2rsc_new(id, strength_e, start_after, rsc_lh, rsc_rh);
unpack_rsc_order(xmlNodePtr xml_obj,		  GListPtr rsc_list,		  GListPtr *ordering_constraints){	enum con_strength strength_e = pecs_ignore;	const char *id       = xmlGetProp(xml_obj, XML_ATTR_ID);	const char *id_lh    = xmlGetProp(xml_obj, "from");	const char *id_rh    = xmlGetProp(xml_obj, "to");	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;		} else if(safe_str_eq(type, "after")) {		rsc2rsc_new(id, strength_e, start_after, rsc_lh, rsc_rh);		order_new(rsc_rh, stop_rsc, NULL, rsc_lh, stop_rsc, NULL,			  pecs_must, ordering_constraints);		order_new(rsc_lh, start_rsc, NULL, rsc_rh, start_rsc, NULL,			  pecs_must, ordering_constraints);	} else {		rsc2rsc_new(id, strength_e, start_before, rsc_lh, rsc_rh);		order_new(rsc_lh, stop_rsc, NULL, rsc_rh, stop_rsc, NULL,			  pecs_must, ordering_constraints);		order_new(rsc_rh, start_rsc, NULL, rsc_lh, start_rsc, NULL,			  pecs_must, ordering_constraints);	}	return TRUE;}