diff --git a/orte/mca/rml/oob/rml_oob.h b/orte/mca/rml/oob/rml_oob.h index 5f3dfd9aa5..481891165f 100644 --- a/orte/mca/rml/oob/rml_oob.h +++ b/orte/mca/rml/oob/rml_oob.h @@ -55,6 +55,21 @@ struct orte_rml_oob_msg_header_t { }; typedef struct orte_rml_oob_msg_header_t orte_rml_oob_msg_header_t; +#define ORTE_RML_OOB_MSG_HEADER_HTON(hdr) \ + do { \ + ORTE_PROCESS_NAME_HTON((hdr).origin); \ + ORTE_PROCESS_NAME_HTON((hdr).destination); \ + (hdr).tag = htonl((hdr).tag); \ + } while (0) + + +#define ORTE_RML_OOB_MSG_HEADER_NTOH(hdr) \ + do { \ + ORTE_PROCESS_NAME_NTOH((hdr).origin); \ + ORTE_PROCESS_NAME_NTOH((hdr).destination); \ + (hdr).tag = ntohl((hdr).tag); \ + } while (0) + struct orte_rml_oob_msg_t { opal_object_t super; diff --git a/orte/mca/rml/oob/rml_oob_recv.c b/orte/mca/rml/oob/rml_oob_recv.c index c77f6105d9..e7736eda52 100644 --- a/orte/mca/rml/oob/rml_oob_recv.c +++ b/orte/mca/rml/oob/rml_oob_recv.c @@ -38,6 +38,7 @@ orte_rml_recv_msg_callback(int status, status -= sizeof(orte_rml_oob_msg_header_t); } + ORTE_RML_OOB_MSG_HEADER_NTOH(*hdr); msg->msg_cbfunc.iov(status, &hdr->origin, iov + 1, count - 1, hdr->tag, msg->msg_cbdata); if (!msg->msg_persistent) OBJ_RELEASE(msg); @@ -47,6 +48,8 @@ orte_rml_recv_msg_callback(int status, status = orte_dss.load(&msg->msg_recv_buffer, iov[1].iov_base, iov[1].iov_len); + + ORTE_RML_OOB_MSG_HEADER_NTOH(*hdr); msg->msg_cbfunc.buffer(status, &hdr->origin, &msg->msg_recv_buffer, hdr->tag, msg->msg_cbdata); diff --git a/orte/mca/rml/oob/rml_oob_send.c b/orte/mca/rml/oob/rml_oob_send.c index 213544b430..b5040c8716 100644 --- a/orte/mca/rml/oob/rml_oob_send.c +++ b/orte/mca/rml/oob/rml_oob_send.c @@ -43,6 +43,7 @@ orte_rml_send_msg_callback(int status, if (status > 0) { status -= sizeof(orte_rml_oob_msg_header_t); } + ORTE_RML_OOB_MSG_HEADER_NTOH(*hdr); msg->msg_cbfunc.iov(status, peer, iov + 1, count - 1, hdr->tag, msg->msg_cbdata); OBJ_RELEASE(msg); @@ -51,6 +52,7 @@ orte_rml_send_msg_callback(int status, if (status > 0) { status -= sizeof(orte_rml_oob_msg_header_t); } + ORTE_RML_OOB_MSG_HEADER_NTOH(*hdr); msg->msg_cbfunc.buffer(status, peer, msg->user_buffer, hdr->tag, msg->msg_cbdata); OBJ_RELEASE(msg->user_buffer); @@ -96,6 +98,7 @@ orte_rml_oob_send(orte_process_name_t* peer, msg->msg_header.origin = *ORTE_PROC_MY_NAME; msg->msg_header.destination = *peer; msg->msg_header.tag = tag; + ORTE_RML_OOB_MSG_HEADER_HTON(msg->msg_header); if (0 == orte_ns.compare_fields(ORTE_NS_CMP_ALL, &next, peer)) { real_tag = tag; @@ -166,6 +169,7 @@ orte_rml_oob_send_nb(orte_process_name_t* peer, msg->msg_header.origin = *ORTE_PROC_MY_NAME; msg->msg_header.destination = *peer; msg->msg_header.tag = tag; + ORTE_RML_OOB_MSG_HEADER_HTON(msg->msg_header); if (0 == orte_ns.compare_fields(ORTE_NS_CMP_ALL, &next, peer)) { real_tag = tag; @@ -258,6 +262,7 @@ orte_rml_oob_send_buffer_nb(orte_process_name_t* peer, msg->msg_header.origin = *ORTE_PROC_MY_NAME; msg->msg_header.destination = *peer; msg->msg_header.tag = tag; + ORTE_RML_OOB_MSG_HEADER_HTON(msg->msg_header); if (0 == orte_ns.compare_fields(ORTE_NS_CMP_ALL, &next, peer)) { real_tag = tag;