From a5a6ffb506aa3c2a0c7fe8fd09abf3f737984aa5 Mon Sep 17 00:00:00 2001 From: "Enrico Loparco (eloparco)" Date: Tue, 23 Mar 2021 14:58:34 +0100 Subject: [HICN-645] Fix data structures to support hicn-light-daemon and hicn-light-control communication The daemon should be able to start, receive commands from hicn-light-control and execute them. Signed-off-by: Enrico Loparco (eloparco) Change-Id: I0ca5bb3d9bdfb37ac8cfa9f671f6c162c9a394f5 Signed-off-by: Enrico Loparco (eloparco) --- hicn-light/src/hicn/core/forwarder.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'hicn-light/src/hicn/core/forwarder.c') diff --git a/hicn-light/src/hicn/core/forwarder.c b/hicn-light/src/hicn/core/forwarder.c index 4a31075f6..9954ecd0a 100644 --- a/hicn-light/src/hicn/core/forwarder.c +++ b/hicn-light/src/hicn/core/forwarder.c @@ -1130,7 +1130,11 @@ forwarder_receive(forwarder_t * forwarder, listener_t * listener, uint8_t * packet = msgbuf_get_packet(msgbuf); size_t size = msgbuf_get_len(msgbuf); - assert(messageHandler_GetTotalPacketLength(packet) == size); // XXX confirm ? + + // TODO: the assert fails + // size_t tmp = messageHandler_GetTotalPacketLength(packet); + // (void) tmp; + // assert(messageHandler_GetTotalPacketLength(packet) == size); // XXX confirm ? /* Connection lookup */ const connection_table_t * table = forwarder_get_connection_table(listener->forwarder); @@ -1179,11 +1183,13 @@ forwarder_receive(forwarder_t * forwarder, listener_t * listener, return msgbuf_get_len(msgbuf); case MSGBUF_TYPE_COMMAND: - // XXX before it used to create the connection + // Create the connection to send the ack back if (!connection_id_is_valid(msgbuf->connection_id)) - return forwarder_drop(forwarder, msgbuf_id); - msgbuf->command.type = *(packet + 1); // XXX use header - if (msgbuf->command.type >= COMMAND_TYPE_N) { + msgbuf->connection_id = listener_create_connection(listener, pair); + + msg_header_t * msg = (msg_header_t*) packet; + msgbuf->command.type = msg->header.commandID; + if (msgbuf->command.type >= COMMAND_TYPE_N || msgbuf->command.type == COMMAND_TYPE_UNDEFINED) { ERROR("Invalid command"); return -msgbuf_get_len(msgbuf); } -- cgit 1.2.3-korg