See previous mail. /Hans On 04/07/2014 11:38 AM, Nagendra Kumar wrote: > I didn't get an addition of avd_avnd_msg_fmt_map_table ? > >> -----Original Message----- >> From: praveen malviya >> Sent: 07 April 2014 14:55 >> To: Hans Feldt >> Cc: Nagendra Kumar; hans.nordeb...@ericsson.com; opensaf- >> de...@lists.sourceforge.net >> Subject: Re: [PATCH 1 of 3] avsv: include and use sirank in SUSI msg [#574] >> >> I have a doubt in-lined with [Praveen] >> >> Thanks, >> Praveen >> On 07-Apr-14 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 >>> +}; >> [Praveen] Here I did not get why AVSV_AVD_AVND_MSG_FMT_VER_4 is >> repeated >> 2 times. >> >> Thanks >> Praveen >>> + >>> +/* 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, ¶m->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(¶m->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