X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fsi%2Fsrc%2Fsr_si_static.c;h=0b726dcf5ba449c265de40c9f2fdefe0cba4d2c8;hb=6d112571b27574ae857da7cb8dc8758ffee4ff60;hp=ba22bc9431bd891fa018a561af3022c7c6898e8e;hpb=2dfb310585e1ea20d222aa1ed129c89e8c240935;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/si/src/sr_si_static.c b/src/rmr/si/src/sr_si_static.c index ba22bc9..0b726dc 100644 --- a/src/rmr/si/src/sr_si_static.c +++ b/src/rmr/si/src/sr_si_static.c @@ -143,7 +143,7 @@ static rmr_mbuf_t* alloc_zcmsg( uta_ctx_t* ctx, rmr_mbuf_t* msg, int size, int s /* memset( msg->tp_buf, 0, mlen ); // NOT for production (debug only) valgrind will complain about uninitalised use if we don't set - memcpy( msg->tp_buf, "@@!!@@!!@@!!@@!!@@!!@@!!@@!!@@!!**", 34 ); // NOT for production -- debugging eyecatcher + memcpy( msg->tp_buf, "@@!!@@!!@@!!@@!!@@!!@@!!@@!!@@!!**", TPHDR_LEN ); // NOT for production -- debugging eyecatcher */ alen = (int *) msg->tp_buf; *alen = mlen; // FIX ME: need a stuct to go in these first bytes, not just dummy len @@ -159,6 +159,7 @@ static rmr_mbuf_t* alloc_zcmsg( uta_ctx_t* ctx, rmr_mbuf_t* msg, int size, int s //SET_HDR_D2_LEN( hdr, ctx->d2_len ); // future } msg->len = 0; // length of data in the payload + msg->cookie = 0x4942; msg->alloc_len = mlen; // length of allocated transport buffer (caller size + rmr header) msg->sub_id = UNSET_SUBID; msg->mtype = UNSET_MSGTYPE; @@ -197,6 +198,7 @@ static rmr_mbuf_t* alloc_mbuf( uta_ctx_t* ctx, int state ) { memset( msg, 0, sizeof( *msg ) ); + msg->cookie = 0x4942; msg->sub_id = UNSET_SUBID; msg->mtype = UNSET_MSGTYPE; msg->tp_buf = NULL; @@ -546,52 +548,6 @@ exit( 1 ); return NULL; } -/* - Receives a 'raw' message from a non-RMr sender (no header expected). The returned - message buffer cannot be used to send, and the length information may or may - not be correct (it is set to the length received which might be more than the - bytes actually in the payload). - - Mostly this supports the route table collector, but could be extended with an - API external function. -*/ -static void* rcv_payload( uta_ctx_t* ctx, rmr_mbuf_t* old_msg ) { - return NULL; -/* -FIXME: do we need this in the SI world? The only user was the route table collector - int state; - rmr_mbuf_t* msg = NULL; // msg received - size_t rsize; // nng needs to write back the size received... grrr - - if( old_msg ) { - msg = old_msg; - } else { - msg = alloc_zcmsg( ctx, NULL, RMR_MAX_RCV_BYTES, RMR_OK, DEF_TR_LEN ); // will abort on failure, no need to check - } - - //msg->state = nng_recvmsg( ctx->nn_sock, (nng_msg **) &msg->tp_buf, NO_FLAGS ); // blocks hard until received - if( (msg->state = xlate_si_state( msg->state, RMR_ERR_RCVFAILED )) != RMR_OK ) { - return msg; - } - rsize = nng_msg_len( msg->tp_buf ); - - // do NOT use ref_tpbuf() here! Must fill these in manually. - msg->header = nng_msg_body( msg->tp_buf ); - msg->len = rsize; // len is the number of bytes received - msg->alloc_len = rsize; - msg->mtype = UNSET_MSGTYPE; // raw message has no type - msg->sub_id = UNSET_SUBID; // nor a subscription id - msg->state = RMR_OK; - msg->flags = MFL_RAW; - msg->payload = msg->header; // payload is the whole thing; no header - msg->xaction = NULL; - - if( DEBUG > 1 ) rmr_vlog( RMR_VL_DEBUG, "rcv_payload: got something: type=%d state=%d len=%d\n", msg->mtype, msg->state, msg->len ); - - return msg; -*/ -} - /* This does the hard work of actually sending the message to the given socket. On success, a new message struct is returned. On error, the original msg is returned with the state @@ -634,6 +590,9 @@ static rmr_mbuf_t* send_msg( uta_ctx_t* ctx, rmr_mbuf_t* msg, int nn_sock, int r msg->state = RMR_OK; do { tot_len = msg->len + PAYLOAD_OFFSET( hdr ) + TP_HDR_LEN; // we only send what was used + header lengths + if( tot_len > msg->alloc_len ) { + tot_len = msg->alloc_len; // likely bad length from user :( + } *((int*) msg->tp_buf) = tot_len; if( DEBUG > 1 ) rmr_vlog( RMR_VL_DEBUG, "send_msg: ending %d (%x) bytes usr_len=%d alloc=%d retries=%d\n", tot_len, tot_len, msg->len, msg->alloc_len, retries );