From e0c459be755f002e81bbefb0a8a78ee38d3b87ba Mon Sep 17 00:00:00 2001 From: Xenofon Foukas <x.foukas@sms.ed.ac.uk> Date: Wed, 6 Jan 2016 11:57:03 +0200 Subject: [PATCH] Changed handlers not to require the xid in their signature. Containted in the received message, or generated in them --- openair2/ENB_APP/enb_agent.c | 4 ++-- openair2/ENB_APP/enb_agent_common.c | 16 +++++++++++++--- openair2/ENB_APP/enb_agent_common.h | 13 +++++-------- openair2/ENB_APP/enb_agent_handler.c | 6 ++---- openair2/ENB_APP/enb_agent_mac.c | 4 +++- openair2/ENB_APP/enb_agent_mac.h | 2 +- 6 files changed, 26 insertions(+), 19 deletions(-) diff --git a/openair2/ENB_APP/enb_agent.c b/openair2/ENB_APP/enb_agent.c index 01eb61fc0b..3c9ad7d24d 100644 --- a/openair2/ENB_APP/enb_agent.c +++ b/openair2/ENB_APP/enb_agent.c @@ -140,7 +140,7 @@ void *receive_thread(void *args) { LOG_D(ENB_AGENT,"received message with size %d\n", size); - msg=enb_agent_handle_message(d->mod_id, d->rx_xid, data, size); + msg=enb_agent_handle_message(d->mod_id, data, size); free(data); @@ -149,7 +149,7 @@ void *receive_thread(void *args) { // check if there is something to send back to the controller if (msg != NULL){ - data=enb_agent_send_message(d->tx_xid,msg,&size); + data=enb_agent_send_message(msg,&size); if (message_put(d->tx_mq, data, size, priority)){ err_code = PROTOCOL__PROGRAN_ERR__MSG_ENQUEUING; diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c index c719777aaf..0fe2c8e1ac 100644 --- a/openair2/ENB_APP/enb_agent_common.c +++ b/openair2/ENB_APP/enb_agent_common.c @@ -102,9 +102,11 @@ int prp_create_header(xid_t xid, Protocol__PrpType type, Protocol__PrpHeader ** } -int enb_agent_hello(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg) { +int enb_agent_hello(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg) { Protocol__PrpHeader *header; + /*TODO: Need to set random xid or xid from received hello message*/ + xid_t xid = 1; if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_HELLO, &header) != 0) goto error; @@ -154,8 +156,10 @@ int enb_agent_destroy_hello(Protocol__ProgranMessage *msg) { } -int enb_agent_echo_request(mid_t mod_id, xid_t xid, const void* params, Protocol__ProgranMessage **msg) { +int enb_agent_echo_request(mid_t mod_id, const void* params, Protocol__ProgranMessage **msg) { Protocol__PrpHeader *header; + /*TODO: Need to set a random xid*/ + xid_t xid = 1; if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_ECHO_REQUEST, &header) != 0) goto error; @@ -203,7 +207,13 @@ int enb_agent_destroy_echo_request(Protocol__ProgranMessage *msg) { -int enb_agent_echo_reply(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg) { +int enb_agent_echo_reply(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg) { + + xid_t xid; + Protocol__ProgranMessage *input = (Protocol__ProgranMessage *)params; + Protocol__PrpEchoRequest *echo_req = input->echo_request_msg; + xid = (echo_req->header)->xid; + Protocol__PrpHeader *header; if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_ECHO_REPLY, &header) != 0) goto error; diff --git a/openair2/ENB_APP/enb_agent_common.h b/openair2/ENB_APP/enb_agent_common.h index 9c5f4044fa..f918914f92 100644 --- a/openair2/ENB_APP/enb_agent_common.h +++ b/openair2/ENB_APP/enb_agent_common.h @@ -58,8 +58,7 @@ typedef int (*enb_agent_message_decoded_callback)( mid_t mod_id, - xid_t xid, - const void *params, + const void *params, Protocol__ProgranMessage **msg ); @@ -72,23 +71,21 @@ int enb_agent_deserialize_message(void *data, int size, Protocol__ProgranMessage int prp_create_header(xid_t xid, Protocol__PrpType type, Protocol__PrpHeader **header); -int enb_agent_hello(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg); +int enb_agent_hello(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg); int enb_agent_destroy_hello(Protocol__ProgranMessage *msg); -int enb_agent_echo_request(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg); +int enb_agent_echo_request(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg); int enb_agent_destroy_echo_request(Protocol__ProgranMessage *msg); -int enb_agent_echo_reply(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg); +int enb_agent_echo_reply(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg); int enb_agent_destroy_echo_reply(Protocol__ProgranMessage *msg); Protocol__ProgranMessage* enb_agent_handle_message (mid_t mod_id, - xid_t xid, uint8_t *data, uint32_t size); -void * enb_agent_send_message(xid_t xid, - Protocol__ProgranMessage *msg, +void * enb_agent_send_message(Protocol__ProgranMessage *msg, uint32_t * size); diff --git a/openair2/ENB_APP/enb_agent_handler.c b/openair2/ENB_APP/enb_agent_handler.c index 1b8457d474..8c2b9e010a 100644 --- a/openair2/ENB_APP/enb_agent_handler.c +++ b/openair2/ENB_APP/enb_agent_handler.c @@ -68,7 +68,6 @@ static const char *enb_agent_direction2String[] = { Protocol__ProgranMessage* enb_agent_handle_message (mid_t mod_id, - xid_t xid, uint8_t *data, uint32_t size){ @@ -93,7 +92,7 @@ Protocol__ProgranMessage* enb_agent_handle_message (mid_t mod_id, } - err_code = ((*messages_callback[decoded_message->msg_case-1][decoded_message->msg_dir-1])(mod_id, xid, (void *) decoded_message, &reply_message)); + err_code = ((*messages_callback[decoded_message->msg_case-1][decoded_message->msg_dir-1])(mod_id, (void *) decoded_message, &reply_message)); if ( err_code < 0 ){ goto error; } @@ -110,8 +109,7 @@ error: -void * enb_agent_send_message(xid_t xid, - Protocol__ProgranMessage *msg, +void * enb_agent_send_message(Protocol__ProgranMessage *msg, uint32_t * size){ void * buffer; diff --git a/openair2/ENB_APP/enb_agent_mac.c b/openair2/ENB_APP/enb_agent_mac.c index 4801d21686..d2504e4dec 100644 --- a/openair2/ENB_APP/enb_agent_mac.c +++ b/openair2/ENB_APP/enb_agent_mac.c @@ -38,7 +38,7 @@ #include "log.h" -int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg){ +int enb_agent_mac_handle_stats(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg){ // TODO: Must deal with sanitization of input // TODO: Must check if RNTIs and cell ids of the request actually exist @@ -47,6 +47,7 @@ int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Prot void *buffer; int size; err_code_t err_code; + xid_t xid; //TODO: We do not deal with multiple CCs at the moment and eNB id is 0 int cc_id = 0; @@ -63,6 +64,7 @@ int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Prot Protocol__ProgranMessage *input = (Protocol__ProgranMessage *)params; Protocol__PrpStatsRequest *stats_req = input->stats_request_msg; + xid = (stats_req->header)->xid; // Check the type of request that is made switch(stats_req->body_case) { diff --git a/openair2/ENB_APP/enb_agent_mac.h b/openair2/ENB_APP/enb_agent_mac.h index 6584111825..569eb51e5e 100644 --- a/openair2/ENB_APP/enb_agent_mac.h +++ b/openair2/ENB_APP/enb_agent_mac.h @@ -70,7 +70,7 @@ typedef struct { } report_config_t; -int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg); +int enb_agent_mac_handle_stats(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg); int enb_agent_mac_stats_reply(mid_t mod_id, xid_t xid, const report_config_t *report_config, Protocol__ProgranMessage **msg); -- 2.26.2