> -----Original Message----- > From: SuryaNarayana Garlapati [mailto:suryanarayana.garlap...@oracle.com] > Sent: den 7 april 2014 14:43 > To: Hans Feldt; praveen.malv...@oracle.com; nagendr...@oracle.com; Hans > Nordebäck > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [devel] [PATCH 1 of 3] avsv: include and use sirank in SUSI msg > [#574] > > 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. [Hans] why is that required? The AVD version was previously bumped to 6 without bumping AVND version remaining at 5.
> 2. As there is no change in AVND messaging, its MDS sub part version > should not be changed. [Hans] No I am even more confused. What end should change and why? I thought AVND should be changed since it now supports new attributes in some messages. How can AVD now that otherwise? I thought this was linked to the receiving end to indicate its protocol support. /Hans > > 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, ¶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