Hi Hung,
Reviewed the patch.
Ack.
/Neel.
On 2017/04/13 02:22 PM, Hung Nguyen wrote:
> Add new 'isUp' flag to IMMD_IMMND_INFO_NODE.
> If a new IMMND node is added during MDS UP event or intro message,
> the flag is set to true.
> If a new IMMND node is added during coldsync, the flag is set to false.
> The flag will be set to true when MDS UP event comes.
> ---
> src/imm/immd/immd_cb.h | 1 +
> src/imm/immd/immd_db.c | 34 +++++++++++++++++++++-------------
> src/imm/immd/immd_evt.c | 2 ++
> src/imm/immd/immd_mbcsv.c | 5 +++++
> 4 files changed, 29 insertions(+), 13 deletions(-)
>
> diff --git a/src/imm/immd/immd_cb.h b/src/imm/immd/immd_cb.h
> index af63a98..09a9c2c 100644
> --- a/src/imm/immd/immd_cb.h
> +++ b/src/imm/immd/immd_cb.h
> @@ -59,6 +59,7 @@ typedef struct immd_immnd_info_node {
> bool isCoord;
> bool syncStarted;
> bool pbeConfigured; /* Pbe-file-name configured. Pbe may still be
> disabled. */
> + bool isUp; /* True if received the MDS UP event */
> } IMMD_IMMND_INFO_NODE;
>
> typedef struct immd_immnd_detached_node { /* IMMD SBY tracking of departed
> diff --git a/src/imm/immd/immd_db.c b/src/imm/immd/immd_db.c
> index 7968b07..ec005d9 100644
> --- a/src/imm/immd/immd_db.c
> +++ b/src/imm/immd/immd_db.c
> @@ -80,20 +80,28 @@ uint32_t immd_immnd_info_node_get(NCS_PATRICIA_TREE
> *immnd_tree, MDS_DEST *dest,
> void immd_immnd_info_node_getnext(NCS_PATRICIA_TREE *immnd_tree, MDS_DEST
> *dest,
> IMMD_IMMND_INFO_NODE **immnd_info_node)
> {
> - NODE_ID key;
> - memset(&key, 0, sizeof(NODE_ID));
> - /* Fill the Key */
> -
> - if (dest) {
> - key = m_NCS_NODE_ID_FROM_MDS_DEST((*dest));
> + IMMD_IMMND_INFO_NODE* next_node = NULL;
> + MDS_DEST* current_dest = dest;
> + do {
> + if (current_dest) {
> + NODE_ID key;
> + memset(&key, 0, sizeof(NODE_ID));
> + key = m_NCS_NODE_ID_FROM_MDS_DEST((*current_dest));
> +
> + next_node =
> + (IMMD_IMMND_INFO_NODE *)ncs_patricia_tree_getnext(
> + immnd_tree, (uint8_t *)&key);
> + if (next_node) {
> + current_dest = &next_node->immnd_dest;
> + }
> + } else {
> + next_node =
> + (IMMD_IMMND_INFO_NODE *)ncs_patricia_tree_getnext(
> + immnd_tree, (uint8_t *)NULL);
> + }
> + } while (next_node && !next_node->isUp);
>
> - *immnd_info_node =
> - (IMMD_IMMND_INFO_NODE *)ncs_patricia_tree_getnext(
> - immnd_tree, (uint8_t *)&key);
> - } else
> - *immnd_info_node =
> - (IMMD_IMMND_INFO_NODE *)ncs_patricia_tree_getnext(
> - immnd_tree, (uint8_t *)NULL);
> + *immnd_info_node = next_node;
>
> return;
> }
> diff --git a/src/imm/immd/immd_evt.c b/src/imm/immd/immd_evt.c
> index 49ac7c3..c1371fc 100644
> --- a/src/imm/immd/immd_evt.c
> +++ b/src/imm/immd/immd_evt.c
> @@ -1054,6 +1054,8 @@ static IMMD_IMMND_INFO_NODE
> *immd_add_immnd_node(IMMD_CB *cb, MDS_DEST dest)
> return NULL;
> }
>
> + node_info->isUp = true;
> +
> if (add_flag) {
> TRACE("IMMND node has already been added, dest %" PRIu64, dest);
> }
> diff --git a/src/imm/immd/immd_mbcsv.c b/src/imm/immd/immd_mbcsv.c
> index 8ccadd1..bed2c28 100644
> --- a/src/imm/immd/immd_mbcsv.c
> +++ b/src/imm/immd/immd_mbcsv.c
> @@ -1243,6 +1243,11 @@ static uint32_t mbcsv_dec_sync_resp(IMMD_CB *cb,
> NCS_MBCSV_CB_ARG *arg)
> immd_immnd_info_node_find_add(&cb->immnd_tree, &dest,
> &node_info, &add_flag);
> osafassert(node_info);
> + if (!add_flag) {
> + /* New node is added to the list,
> + * MDS UP event is not received */
> + node_info->isUp = false;
> + }
>
> ptr = ncs_dec_flatten_space(&arg->info.decode.i_uba, data,
> sizeof(uint32_t));
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel