From 2397358844ca394a1b283ecb05beca56afdbbc0d Mon Sep 17 00:00:00 2001 From: Roman Khlopkov <roman.khlopkov@demlabs.net> Date: Tue, 20 Jun 2023 13:56:00 +0300 Subject: [PATCH] [+] Chain protocol version control --- dap-sdk | 2 +- modules/channel/chain/dap_stream_ch_chain.c | 5 +++++ modules/channel/chain/dap_stream_ch_chain_pkt.c | 6 +++--- modules/channel/chain/include/dap_stream_ch_chain_pkt.h | 2 ++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/dap-sdk b/dap-sdk index 34ea338946..08250a34c8 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 34ea33894637309e6853b4f69c463523d82651b2 +Subproject commit 08250a34c8c40afb400b5e734dc7097e38a234d3 diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 3bf7f438b3..484dab019e 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -1016,6 +1016,11 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) sizeof(l_chain_pkt->hdr)); return; } + if (l_chain_pkt->hdr.version != DAP_STREAM_CH_CHAIN_PKT_VERSION) { + debug_if(s_debug_more, L_ATT, "Unsupported protocol version %d, current version %d", + l_chain_pkt->hdr.version, DAP_STREAM_CH_CHAIN_PKT_VERSION); + return; + } size_t l_chain_pkt_data_size = l_ch_pkt->hdr.data_size - sizeof(l_chain_pkt->hdr); dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain_pkt->hdr.net_id); if (!l_net) { diff --git a/modules/channel/chain/dap_stream_ch_chain_pkt.c b/modules/channel/chain/dap_stream_ch_chain_pkt.c index f939d3231f..2aeced269a 100644 --- a/modules/channel/chain/dap_stream_ch_chain_pkt.c +++ b/modules/channel/chain/dap_stream_ch_chain_pkt.c @@ -56,7 +56,7 @@ size_t dap_stream_ch_chain_pkt_write_unsafe(dap_stream_ch_t *a_ch, uint8_t a_typ size_t l_chain_pkt_size = sizeof(dap_stream_ch_chain_pkt_hdr_t) + a_data_size; dap_stream_ch_chain_pkt_t *l_chain_pkt = DAP_NEW_Z_SIZE(dap_stream_ch_chain_pkt_t, l_chain_pkt_size); *l_chain_pkt = (dap_stream_ch_chain_pkt_t){ - .hdr = { .version = 1, .net_id.uint64 = a_net_id, .cell_id.uint64 = a_cell_id, .chain_id.uint64 = a_chain_id } + .hdr = { .version = DAP_STREAM_CH_CHAIN_PKT_VERSION, .net_id.uint64 = a_net_id, .cell_id.uint64 = a_cell_id, .chain_id.uint64 = a_chain_id } }; if (a_data_size && a_data) @@ -87,7 +87,7 @@ size_t dap_stream_ch_chain_pkt_write_mt(dap_stream_worker_t *a_worker, dap_strea size_t l_chain_pkt_size = sizeof(dap_stream_ch_chain_pkt_hdr_t) + a_data_size; dap_stream_ch_chain_pkt_t *l_chain_pkt = DAP_NEW_Z_SIZE(dap_stream_ch_chain_pkt_t, l_chain_pkt_size ); *l_chain_pkt = (dap_stream_ch_chain_pkt_t){ - .hdr = { .version = 1, .net_id.uint64 = a_net_id, .cell_id.uint64 = a_cell_id, .chain_id.uint64 = a_chain_id } + .hdr = { .version = DAP_STREAM_CH_CHAIN_PKT_VERSION, .net_id.uint64 = a_net_id, .cell_id.uint64 = a_cell_id, .chain_id.uint64 = a_chain_id } }; if (a_data_size && a_data) @@ -119,7 +119,7 @@ size_t dap_stream_ch_chain_pkt_write_inter(dap_events_socket_t * a_es_input, dap size_t l_chain_pkt_size = sizeof(dap_stream_ch_chain_pkt_hdr_t) + a_data_size; dap_stream_ch_chain_pkt_t *l_chain_pkt = DAP_NEW_Z_SIZE(dap_stream_ch_chain_pkt_t, l_chain_pkt_size ); *l_chain_pkt = (dap_stream_ch_chain_pkt_t){ - .hdr = { .version = 1, .net_id.uint64 = a_net_id, .cell_id.uint64 = a_cell_id, .chain_id.uint64 = a_chain_id } + .hdr = { .version = DAP_STREAM_CH_CHAIN_PKT_VERSION, .net_id.uint64 = a_net_id, .cell_id.uint64 = a_cell_id, .chain_id.uint64 = a_chain_id } }; if (a_data_size && a_data) diff --git a/modules/channel/chain/include/dap_stream_ch_chain_pkt.h b/modules/channel/chain/include/dap_stream_ch_chain_pkt.h index 42d77cb534..a54a3b2eed 100644 --- a/modules/channel/chain/include/dap_stream_ch_chain_pkt.h +++ b/modules/channel/chain/include/dap_stream_ch_chain_pkt.h @@ -36,6 +36,8 @@ #include "dap_stream_ch.h" +#define DAP_STREAM_CH_CHAIN_PKT_VERSION 0x01 + #define DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN 0x01 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB 0x11 -- GitLab