After further testing, i found that si rank is always being read from 
IMM. Will update you more on this.
As of now, please hold for some time.

On Monday 07 April 2014 06:12 PM, SuryaNarayana Garlapati wrote:
> Nack.
>
> Following points needs to be considered.
>
> 1. As there is a change in messaging change with the AVD, You should 
> bump up the AVD MDS Sub part version.
> 2. As there is no change in AVND messaging, its MDS sub part version 
> should not be changed.
>
> Attached is modified patch.
> I had tested 4.3 as active and 4.3+patch as standby and did couple of 
> switchovers and failovers(vice versa).
>
> Can you also please run your tests with this patch and let me know the 
> results?
>
> Regards
> Surya
>
> On Monday 07 April 2014 11:05 AM, Hans Feldt wrote:
>> osaf/libs/common/avsv/avsv_d2nedu.c            |  35 ++++++++++-------
>>   osaf/libs/common/avsv/include/avsv_d2nmsg.h    |   5 +-
>>   osaf/services/saf/avsv/avd/avd_mds.c           |  11 +++--
>>   osaf/services/saf/avsv/avd/avd_util.c          |   1 +
>>   osaf/services/saf/avsv/avd/include/avd_mds.h   |   2 +-
>>   osaf/services/saf/avsv/avnd/avnd_mds.c         |  33 +++++++++++++---
>>   osaf/services/saf/avsv/avnd/avnd_sidb.c        |  42 
>> +-------------------
>>   osaf/services/saf/avsv/avnd/avnd_su.c          |  51 
>> ++++++++++++++++++++++++-
>>   osaf/services/saf/avsv/avnd/include/avnd_evt.h |   1 +
>>   osaf/services/saf/avsv/avnd/include/avnd_mds.h |   5 ++-
>>   10 files changed, 114 insertions(+), 72 deletions(-)
>>
>>
>> amfnd process aborted in immutils and node rebooted by amf watchdog 
>> with the
>> following log:
>> 2013-09-09 11:50:02 osafamfnd SC-2-1 err osafamfnd[5336]: 
>> saImmOmInitialize FAILED, rc = 5
>>
>> When the AMF node director receives a SUSI ASGN message, it reads SI 
>> rank
>> from IMM. If IMM does not respond in a timely manner the amfnd 
>> process will be
>> aborted and the node restarted by the AMF watchdog.
>>
>> By including SI rank (an int) in the SUSI ASGN msg, the read from IMM 
>> can be
>> skipped/done conditionally based on the amfnd MDS version.
>>
>> diff --git a/osaf/libs/common/avsv/avsv_d2nedu.c 
>> b/osaf/libs/common/avsv/avsv_d2nedu.c
>> --- a/osaf/libs/common/avsv/avsv_d2nedu.c
>> +++ b/osaf/libs/common/avsv/avsv_d2nedu.c
>> @@ -56,6 +56,7 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl,
>>       uint32_t rc = NCSCC_RC_SUCCESS;
>>       AVSV_DND_MSG *struct_ptr = NULL, **d_ptr = NULL;
>>       uint16_t ver3 = AVSV_AVD_AVND_MSG_FMT_VER_3;
>> +    uint16_t ver5 = AVSV_AVD_AVND_MSG_FMT_VER_5;
>>         EDU_INST_SET avsv_dnd_msg_rules[] = {
>>           {EDU_START, avsv_edp_dnd_msg, 0, 0, 0,
>> @@ -217,6 +218,12 @@ uint32_t avsv_edp_dnd_msg(EDU_HDL *hdl,
>>            (long)&((AVSV_DND_MSG 
>> *)0)->msg_info.d2n_su_si_assign.su_name, 0, NULL},
>>           {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0,
>>            (long)&((AVSV_DND_MSG 
>> *)0)->msg_info.d2n_su_si_assign.si_name, 0, NULL},
>> +
>> +        /* Include SI rank in version 5 and higher */
>> +        {EDU_VER_GE, NULL, 0, 0, 2, 0, 0, (EDU_EXEC_RTINE)((uint16_t 
>> *)(&(ver5)))},
>> +        {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
>> +         (long)&((AVSV_DND_MSG 
>> *)0)->msg_info.d2n_su_si_assign.si_rank, 0, NULL},
>> +
>>           {EDU_EXEC, m_NCS_EDP_SAAMFHASTATET, 0, 0, 0,
>>            (long)&((AVSV_DND_MSG 
>> *)0)->msg_info.d2n_su_si_assign.ha_state, 0, NULL},
>>           {EDU_VER_GE, NULL,   0, 0, 2, 0, 0, 
>> (EDU_EXEC_RTINE)((uint16_t *)(&(ver3)))},
>> @@ -410,20 +417,20 @@ int avsv_dnd_msg_test_type_fnc(NCSCONTEX
>>           LCL_JMP_OFFSET_AVSV_D2N_REG_SU_MSG = 48,
>>           LCL_JMP_OFFSET_AVSV_D2N_REG_COMP_MSG = 53,
>>           LCL_JMP_OFFSET_AVSV_D2N_INFO_SU_SI_ASSIGN_MSG = 58,
>> -        LCL_JMP_OFFSET_AVSV_D2N_PG_TRACK_ACT_RSP_MSG = 68,
>> -        LCL_JMP_OFFSET_AVSV_D2N_PG_UPD_MSG = 75,
>> -        LCL_JMP_OFFSET_AVSV_D2N_OPERATION_REQUEST_MSG = 79,
>> -        LCL_JMP_OFFSET_AVSV_D2N_PRESENCE_SU_MSG = 82,
>> -        LCL_JMP_OFFSET_AVSV_D2N_DATA_VERIFY_MSG = 86,
>> -        LCL_JMP_OFFSET_AVSV_D2N_DATA_ACK_MSG = 91,
>> -        LCL_JMP_OFFSET_AVSV_D2N_SHUTDOWN_APP_SU_MSG = 93,
>> -        LCL_JMP_OFFSET_AVSV_D2N_SET_LEDS_MSG = 95,
>> -        LCL_JMP_OFFSET_AVSV_N2D_COMP_VALID_MSG = 97,
>> -        LCL_JMP_OFFSET_AVSV_D2N_COMP_VALID_RESP_MSG = 105,
>> -        LCL_JMP_OFFSET_AVSV_D2N_ROLE_CHANGE_MSG = 109,
>> -        LCL_JMP_OFFSET_AVSV_D2N_ADMIN_OP_REQ_MSG = 112,
>> -        LCL_JMP_OFFSET_AVSV_D2N_HEARTBEAT_MSG = 116,
>> -        LCL_JMP_OFFSET_AVSV_D2N_REBOOT_MSG = 117
>> +        LCL_JMP_OFFSET_AVSV_D2N_PG_TRACK_ACT_RSP_MSG = 70,
>> +        LCL_JMP_OFFSET_AVSV_D2N_PG_UPD_MSG = 77,
>> +        LCL_JMP_OFFSET_AVSV_D2N_OPERATION_REQUEST_MSG = 81,
>> +        LCL_JMP_OFFSET_AVSV_D2N_PRESENCE_SU_MSG = 84,
>> +        LCL_JMP_OFFSET_AVSV_D2N_DATA_VERIFY_MSG = 88,
>> +        LCL_JMP_OFFSET_AVSV_D2N_DATA_ACK_MSG = 93,
>> +        LCL_JMP_OFFSET_AVSV_D2N_SHUTDOWN_APP_SU_MSG = 95,
>> +        LCL_JMP_OFFSET_AVSV_D2N_SET_LEDS_MSG = 97,
>> +        LCL_JMP_OFFSET_AVSV_N2D_COMP_VALID_MSG = 99,
>> +        LCL_JMP_OFFSET_AVSV_D2N_COMP_VALID_RESP_MSG = 107,
>> +        LCL_JMP_OFFSET_AVSV_D2N_ROLE_CHANGE_MSG = 111,
>> +        LCL_JMP_OFFSET_AVSV_D2N_ADMIN_OP_REQ_MSG = 114,
>> +        LCL_JMP_OFFSET_AVSV_D2N_HEARTBEAT_MSG = 118,
>> +        LCL_JMP_OFFSET_AVSV_D2N_REBOOT_MSG = 119
>>       };
>>       AVSV_DND_MSG_TYPE type;
>>   diff --git a/osaf/libs/common/avsv/include/avsv_d2nmsg.h 
>> b/osaf/libs/common/avsv/include/avsv_d2nmsg.h
>> --- a/osaf/libs/common/avsv/include/avsv_d2nmsg.h
>> +++ b/osaf/libs/common/avsv/include/avsv_d2nmsg.h
>> @@ -39,14 +39,12 @@
>>   #include <avsv_defs.h>
>>   #include <stdbool.h>
>>   -/* In Service upgrade support */
>> -#define AVND_MDS_SUB_PART_VERSION   4
>> -
>>   /* Message format versions */
>>   #define AVSV_AVD_AVND_MSG_FMT_VER_1    1
>>   #define AVSV_AVD_AVND_MSG_FMT_VER_2    2
>>   #define AVSV_AVD_AVND_MSG_FMT_VER_3    3
>>   #define AVSV_AVD_AVND_MSG_FMT_VER_4    4
>> +#define AVSV_AVD_AVND_MSG_FMT_VER_5    5
>>     /* Internode/External Components Validation result */
>>   typedef enum {
>> @@ -470,6 +468,7 @@ typedef struct avsv_d2n_info_su_si_assig
>>       bool single_csi; /* To differentiate single csi assignment from 
>> SI assignment.*/
>>       uint32_t num_assigns;
>>       AVSV_SUSI_ASGN *list;
>> +    uint32_t si_rank;
>>   } AVSV_D2N_INFO_SU_SI_ASSIGN_MSG_INFO;
>>     typedef struct avsv_d2n_pg_track_act_rsp_msg_info_tag {
>> diff --git a/osaf/services/saf/avsv/avd/avd_mds.c 
>> b/osaf/services/saf/avsv/avd/avd_mds.c
>> --- a/osaf/services/saf/avsv/avd/avd_mds.c
>> +++ b/osaf/services/saf/avsv/avd/avd_mds.c
>> @@ -42,14 +42,17 @@
>>   #include <avd_msg.h>
>>   #include "avd.h"
>>   -const MDS_CLIENT_MSG_FORMAT_VER 
>> avd_avnd_msg_fmt_map_table[AVD_AVND_SUBPART_VER_MAX] = {
>> +const MDS_CLIENT_MSG_FORMAT_VER avd_avnd_msg_fmt_map_table[] = {
>>       AVSV_AVD_AVND_MSG_FMT_VER_1, AVSV_AVD_AVND_MSG_FMT_VER_2,
>> -    AVSV_AVD_AVND_MSG_FMT_VER_3, AVSV_AVD_AVND_MSG_FMT_VER_4};
>> +    AVSV_AVD_AVND_MSG_FMT_VER_3, AVSV_AVD_AVND_MSG_FMT_VER_4,
>> +    AVSV_AVD_AVND_MSG_FMT_VER_5
>> +};
>>   -const MDS_CLIENT_MSG_FORMAT_VER 
>> avd_avd_msg_fmt_map_table[AVD_AVD_SUBPART_VER_MAX] = {
>> +const MDS_CLIENT_MSG_FORMAT_VER avd_avd_msg_fmt_map_table[] = {
>>       AVD_AVD_MSG_FMT_VER_1, AVD_AVD_MSG_FMT_VER_2,
>>       AVD_AVD_MSG_FMT_VER_3, AVD_AVD_MSG_FMT_VER_4,
>> -    AVD_AVD_MSG_FMT_VER_5};
>> +    AVD_AVD_MSG_FMT_VER_5
>> +};
>>     /* fwd decl */
>>   diff --git a/osaf/services/saf/avsv/avd/avd_util.c 
>> b/osaf/services/saf/avsv/avd/avd_util.c
>> --- a/osaf/services/saf/avsv/avd/avd_util.c
>> +++ b/osaf/services/saf/avsv/avd/avd_util.c
>> @@ -930,6 +930,7 @@ uint32_t avd_snd_susi_msg(AVD_CL_CB *cb,
>>             susi_msg->msg_info.d2n_su_si_assign.si_name = 
>> susi->si->name;
>>           susi_msg->msg_info.d2n_su_si_assign.ha_state = susi->state;
>> +        susi_msg->msg_info.d2n_su_si_assign.si_rank = 
>> susi->si->saAmfSIRank;
>>             /* Fill the SU SI pointer to l_susi which will be used 
>> from now
>>            * for information related to this SU SI
>> diff --git a/osaf/services/saf/avsv/avd/include/avd_mds.h 
>> b/osaf/services/saf/avsv/avd/include/avd_mds.h
>> --- a/osaf/services/saf/avsv/avd/include/avd_mds.h
>> +++ b/osaf/services/saf/avsv/avd/include/avd_mds.h
>> @@ -36,7 +36,7 @@
>>   #define AVD_MDS_SUB_PART_VERSION   5
>>     #define AVD_AVND_SUBPART_VER_MIN   1
>> -#define AVD_AVND_SUBPART_VER_MAX   4
>> +#define AVD_AVND_SUBPART_VER_MAX   5
>>     #define AVD_AVD_SUBPART_VER_MIN    1
>>   #define AVD_AVD_SUBPART_VER_MAX    5
>> diff --git a/osaf/services/saf/avsv/avnd/avnd_mds.c 
>> b/osaf/services/saf/avsv/avnd/avnd_mds.c
>> --- a/osaf/services/saf/avsv/avnd/avnd_mds.c
>> +++ b/osaf/services/saf/avsv/avnd/avnd_mds.c
>> @@ -37,11 +37,27 @@
>>   #include "avsv_n2avaedu.h"
>>   #include "ncsencdec_pub.h"
>>   -const MDS_CLIENT_MSG_FORMAT_VER 
>> avnd_avd_msg_fmt_map_table[AVND_AVD_SUBPART_VER_MAX] =
>> -    { AVSV_AVD_AVND_MSG_FMT_VER_1, AVSV_AVD_AVND_MSG_FMT_VER_2, 
>> AVSV_AVD_AVND_MSG_FMT_VER_3, AVSV_AVD_AVND_MSG_FMT_VER_4};
>> -const MDS_CLIENT_MSG_FORMAT_VER 
>> avnd_avnd_msg_fmt_map_table[AVND_AVND_SUBPART_VER_MAX] =
>> -    { AVSV_AVND_AVND_MSG_FMT_VER_1 };
>> -const MDS_CLIENT_MSG_FORMAT_VER 
>> avnd_ava_msg_fmt_map_table[AVND_AVA_SUBPART_VER_MAX] = { 
>> AVSV_AVND_AVA_MSG_FMT_VER_1 };
>> +/* messages to director */
>> +const MDS_CLIENT_MSG_FORMAT_VER avnd_avd_msg_fmt_map_table[] = {
>> +    AVSV_AVD_AVND_MSG_FMT_VER_1, AVSV_AVD_AVND_MSG_FMT_VER_2,
>> +    AVSV_AVD_AVND_MSG_FMT_VER_3, AVSV_AVD_AVND_MSG_FMT_VER_4,
>> +    AVSV_AVD_AVND_MSG_FMT_VER_4
>> +};
>> +
>> +/* messages from director */
>> +const MDS_CLIENT_MSG_FORMAT_VER avd_avnd_msg_fmt_map_table[] = {
>> +    AVSV_AVD_AVND_MSG_FMT_VER_1, AVSV_AVD_AVND_MSG_FMT_VER_2,
>> +    AVSV_AVD_AVND_MSG_FMT_VER_3, AVSV_AVD_AVND_MSG_FMT_VER_4,
>> +    AVSV_AVD_AVND_MSG_FMT_VER_5
>> +};
>> +
>> +const MDS_CLIENT_MSG_FORMAT_VER avnd_avnd_msg_fmt_map_table[] = {
>> +    AVSV_AVND_AVND_MSG_FMT_VER_1
>> +};
>> +
>> +const MDS_CLIENT_MSG_FORMAT_VER avnd_ava_msg_fmt_map_table[] = {
>> +    AVSV_AVND_AVA_MSG_FMT_VER_1
>> +};
>>     /* static function declarations */
>>   @@ -507,6 +523,9 @@ uint32_t avnd_mds_rcv(AVND_CB *cb, MDS_C
>>           goto done;
>>       }
>>   +    /* save the msg version for possible later use in event 
>> handlers */
>> +    evt->msg_fmt_ver = rcv_info->i_msg_fmt_ver;
>> +
>>       /* nullify the msg as it is used in the event */
>>       memset(&msg, 0, sizeof(AVND_MSG));
>>   @@ -971,7 +990,7 @@ uint32_t avnd_mds_dec(AVND_CB *cb, MDS_C
>>       case NCSMDS_SVC_ID_AVD:
>>           if (!m_NCS_MSG_FORMAT_IS_VALID(dec_info->i_msg_fmt_ver,
>>                              AVND_AVD_SUBPART_VER_MIN,
>> -                           AVND_AVD_SUBPART_VER_MAX, 
>> avnd_avd_msg_fmt_map_table)) {
>> +                           AVND_AVD_SUBPART_VER_MAX, 
>> avd_avnd_msg_fmt_map_table)) {
>>               LOG_ER("%s,%u: wrong msg fmt not valid %u", 
>> __FUNCTION__, __LINE__,
>>                       dec_info->i_msg_fmt_ver);
>>               return NCSCC_RC_FAILURE;
>> @@ -1067,7 +1086,7 @@ uint32_t avnd_mds_flat_dec(AVND_CB *cb,
>>       case NCSMDS_SVC_ID_AVD:
>>           if (!m_NCS_MSG_FORMAT_IS_VALID(dec_info->i_msg_fmt_ver,
>>                              AVND_AVD_SUBPART_VER_MIN,
>> -                           AVND_AVD_SUBPART_VER_MAX, 
>> avnd_avd_msg_fmt_map_table)) {
>> +                           AVND_AVD_SUBPART_VER_MAX, 
>> avd_avnd_msg_fmt_map_table)) {
>>               LOG_ER("%s,%u: wrong msg fmt not valid %u", 
>> __FUNCTION__, __LINE__,
>>                       dec_info->i_msg_fmt_ver);
>>               return NCSCC_RC_FAILURE;
>> diff --git a/osaf/services/saf/avsv/avnd/avnd_sidb.c 
>> b/osaf/services/saf/avsv/avnd/avnd_sidb.c
>> --- a/osaf/services/saf/avsv/avnd/avnd_sidb.c
>> +++ b/osaf/services/saf/avsv/avnd/avnd_sidb.c
>> @@ -139,43 +139,6 @@ AVND_SU_SI_REC *avnd_silist_getlast(void
>>           return NULL;
>>   }
>>   -/**
>> - * Return SI rank read from IMM
>> - *
>> - * @param dn DN of SI
>> - *
>> - * @return      rank of SI or -1 if not configured for SI
>> - */
>> -static uint32_t get_sirank(const SaNameT *dn)
>> -{
>> -    SaAisErrorT error;
>> -    SaImmAccessorHandleT accessorHandle;
>> -    const SaImmAttrValuesT_2 **attributes;
>> -    SaImmAttrNameT attributeNames[2] = {"saAmfSIRank", NULL};
>> -    SaImmHandleT immOmHandle;
>> -    SaVersionT immVersion = {'A', 2, 1};
>> -    uint32_t rank = -1; // lowest possible rank if uninitialized
>> -
>> -    immutil_saImmOmInitialize(&immOmHandle, NULL, &immVersion);
>> -    immutil_saImmOmAccessorInitialize(immOmHandle, &accessorHandle);
>> -
>> -    osafassert((error = immutil_saImmOmAccessorGet_2(accessorHandle, 
>> dn,
>> -        attributeNames, (SaImmAttrValuesT_2 ***)&attributes)) == 
>> SA_AIS_OK);
>> -
>> -    osafassert((error = immutil_getAttr(attributeNames[0], 
>> attributes, 0, &rank)) == SA_AIS_OK);
>> -
>> -    // saAmfSIRank attribute has a default value of zero (returned 
>> by IMM)
>> -    if (rank == 0) {
>> -        // Unconfigured ranks are treated as lowest possible rank
>> -        rank = -1;
>> -    }
>> -
>> -    immutil_saImmOmAccessorFinalize(accessorHandle);
>> -    immutil_saImmOmFinalize(immOmHandle);
>> -
>> -    return rank;
>> -}
>> -
>> /****************************************************************************
>>     Name          : avnd_su_si_rec_add
>>    @@ -220,6 +183,7 @@ AVND_SU_SI_REC *avnd_su_si_rec_add(AVND_
>>        */
>>       /* update the si-name (key) */
>>       memcpy(&si_rec->name, &param->si_name, sizeof(SaNameT));
>> +    si_rec->rank = param->si_rank;
>>       si_rec->curr_state = param->ha_state;
>>         /*
>> @@ -247,7 +211,6 @@ AVND_SU_SI_REC *avnd_su_si_rec_add(AVND_
>>       /* Add to global SI list sorted by rank if appl SU */
>>       if (!su->is_ncs) {
>>           uint32_t res;
>> -        si_rec->rank = get_sirank(&param->si_name);
>>           si_rec->cb_dll_node.key = (uint8_t *)&si_rec->rank;
>>           res = ncs_db_link_list_add(&cb->si_list, 
>> &si_rec->cb_dll_node);
>>           osafassert(res == NCSCC_RC_SUCCESS);
>> @@ -268,7 +231,8 @@ AVND_SU_SI_REC *avnd_su_si_rec_add(AVND_
>>           csi_param = csi_param->next;
>>       }
>>   -    TRACE_1("SU-SI record added, SU= %s : 
>> SI=%s",param->su_name.value,param->si_name.value);
>> +    TRACE_1("SU-SI record added, '%s', '%s', rank:%u", 
>> param->su_name.value,
>> +            param->si_name.value, si_rec->rank);
>>       return si_rec;
>>      err:
>> diff --git a/osaf/services/saf/avsv/avnd/avnd_su.c 
>> b/osaf/services/saf/avsv/avnd/avnd_su.c
>> --- a/osaf/services/saf/avsv/avnd/avnd_su.c
>> +++ b/osaf/services/saf/avsv/avnd/avnd_su.c
>> @@ -33,6 +33,7 @@
>>     #include <logtrace.h>
>>   #include <avnd.h>
>> +#include <immutil.h>
>>     static uint32_t avnd_avd_su_update_on_fover(AVND_CB *cb, 
>> AVSV_D2N_REG_SU_MSG_INFO *info);
>>   @@ -224,6 +225,47 @@ static void handle_su_si_assign_in_term_
>>       }
>>   }
>>   +/**
>> + * Return SI rank read from IMM
>> + *
>> + * @param dn DN of SI
>> + *
>> + * @return      rank of SI or -1 if not configured for SI
>> + */
>> +static uint32_t get_sirank(const SaNameT *dn)
>> +{
>> +    SaAisErrorT error;
>> +    SaImmAccessorHandleT accessorHandle;
>> +    const SaImmAttrValuesT_2 **attributes;
>> +    SaImmAttrNameT attributeNames[2] = {"saAmfSIRank", NULL};
>> +    SaImmHandleT immOmHandle;
>> +    SaVersionT immVersion = {'A', 2, 1};
>> +    uint32_t rank = -1; // lowest possible rank if uninitialized
>> +
>> +    // TODO remove, just for test
>> +    LOG_NO("get_sirank %s", dn->value);
>> +
>> +    TRACE_ENTER2("%s", dn->value);
>> +    immutil_saImmOmInitialize(&immOmHandle, NULL, &immVersion);
>> +    immutil_saImmOmAccessorInitialize(immOmHandle, &accessorHandle);
>> +
>> +    osafassert((error = immutil_saImmOmAccessorGet_2(accessorHandle, 
>> dn,
>> +        attributeNames, (SaImmAttrValuesT_2 ***)&attributes)) == 
>> SA_AIS_OK);
>> +
>> +    osafassert((error = immutil_getAttr(attributeNames[0], 
>> attributes, 0, &rank)) == SA_AIS_OK);
>> +
>> +    // saAmfSIRank attribute has a default value of zero (returned 
>> by IMM)
>> +    if (rank == 0) {
>> +        // Unconfigured ranks are treated as lowest possible rank
>> +        rank = -1;
>> +    }
>> +
>> +    immutil_saImmOmAccessorFinalize(accessorHandle);
>> +    immutil_saImmOmFinalize(immOmHandle);
>> +
>> +    return rank;
>> +}
>> +
>> /****************************************************************************
>>     Name          : avnd_evt_avd_info_su_si_assign_msg
>>    @@ -263,9 +305,12 @@ uint32_t avnd_evt_avd_info_su_si_assign_
>>       avnd_msgid_assert(info->msg_id);
>>       cb->rcv_msg_id = info->msg_id;
>>   -    if ((info->msg_act == AVSV_SUSI_ACT_DEL) ||
>> -            (info->msg_act == AVSV_SUSI_ACT_MOD)) {
>> -
>> +    if (info->msg_act == AVSV_SUSI_ACT_ASGN) {
>> +        /* SI rank was introduced in version 5 of the amfnd 
>> protocol, if the
>> +         * message version is older then that, read SI rank from IMM */
>> +        if (evt->msg_fmt_ver < 5)
>> +            info->si_rank = get_sirank(&info->si_name);
>> +    } else {
>>           if (info->si_name.length > 0) {
>>               if (avnd_su_si_rec_get(cb, &info->su_name, 
>> &info->si_name) == NULL)
>>                   LOG_ER("susi_assign_evh: '%s' is not assigned to 
>> '%s'",
>> diff --git a/osaf/services/saf/avsv/avnd/include/avnd_evt.h 
>> b/osaf/services/saf/avsv/avnd/include/avnd_evt.h
>> --- a/osaf/services/saf/avsv/avnd/include/avnd_evt.h
>> +++ b/osaf/services/saf/avsv/avnd/include/avnd_evt.h
>> @@ -159,6 +159,7 @@ typedef struct avnd_pm_mon_evt {
>>   typedef struct avnd_evt_tag {
>>       struct avnd_evt_tag *next;
>>       MDS_SYNC_SND_CTXT mds_ctxt;
>> +    MDS_CLIENT_MSG_FORMAT_VER msg_fmt_ver;
>>       NCS_IPC_PRIORITY priority;
>>       AVND_EVT_TYPE type;
>>   diff --git a/osaf/services/saf/avsv/avnd/include/avnd_mds.h 
>> b/osaf/services/saf/avsv/avnd/include/avnd_mds.h
>> --- a/osaf/services/saf/avsv/avnd/include/avnd_mds.h
>> +++ b/osaf/services/saf/avsv/avnd/include/avnd_mds.h
>> @@ -30,8 +30,11 @@
>>   #ifndef AVND_MDS_H
>>   #define AVND_MDS_H
>>   +/* In Service upgrade support */
>> +#define AVND_MDS_SUB_PART_VERSION   5
>> +
>>   #define AVND_AVD_SUBPART_VER_MIN   1
>> -#define AVND_AVD_SUBPART_VER_MAX   4
>> +#define AVND_AVD_SUBPART_VER_MAX   5
>>     #define AVND_AVND_SUBPART_VER_MIN   1
>>   #define AVND_AVND_SUBPART_VER_MAX   1
>>
>> ------------------------------------------------------------------------------
>>  
>>
>> Put Bad Developers to Shame
>> Dominate Development with Jenkins Continuous Integration
>> Continuously Automate Build, Test & Deployment
>> Start a new project now. Try Jenkins in the cloud.
>> http://p.sf.net/sfu/13600_Cloudbees_APR
>> _______________________________________________
>> Opensaf-devel mailing list
>> Opensaf-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>
>
>
> ------------------------------------------------------------------------------
> Put Bad Developers to Shame
> Dominate Development with Jenkins Continuous Integration
> Continuously Automate Build, Test & Deployment
> Start a new project now. Try Jenkins in the cloud.
> http://p.sf.net/sfu/13600_Cloudbees_APR
>
>
> _______________________________________________
> Opensaf-devel mailing list
> Opensaf-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees_APR
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to