Note, a 4.4 patch will come that uses the work in this patch. It would be needed to verify the correctness of this patch.
/Hans On 03/28/2014 02:14 PM, Hans Feldt wrote: > osaf/libs/common/avsv/avsv_d2nedu.c | 8 +++++++- > osaf/libs/common/avsv/include/avsv_d2nmsg.h | 1 + > osaf/services/saf/avsv/avd/avd_util.c | 1 + > osaf/services/saf/avsv/avnd/avnd_sudb.c | 5 +++++ > osaf/services/saf/avsv/avnd/include/avnd_su.h | 1 + > 5 files changed, 15 insertions(+), 1 deletions(-) > > > When the AMF node director receives the REG_SU message, it reads the > saAmfSUFailover attribute from IMM. If IMM does not respond in a timely manner > the amfnd process will be aborted and the node restarted. > > By including su_failover (an int) in the REG_SU msg, the read from IMM can be > skipped. > > 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 > @@ -575,6 +575,7 @@ uint32_t avsv_edp_su_info_msg(EDU_HDL *h > uint32_t rc = NCSCC_RC_SUCCESS; > AVSV_SU_INFO_MSG *struct_ptr = NULL, **d_ptr = NULL; > uint16_t ver2 = AVSV_AVD_AVND_MSG_FMT_VER_2; > + uint16_t ver5 = AVSV_AVD_AVND_MSG_FMT_VER_5; > > EDU_INST_SET avsv_su_info_msg_rules[] = { > {EDU_START, avsv_edp_su_info_msg, EDQ_LNKLIST, 0, 0, > @@ -595,11 +596,16 @@ uint32_t avsv_edp_su_info_msg(EDU_HDL *h > {EDU_EXEC, ncs_edp_ncs_bool, 0, 0, 0, > (long)&((AVSV_SU_INFO_MSG *)0)->is_ncs, 0, NULL}, > > + /* Include su_is_external in version 2 and higher */ > {EDU_VER_GE, NULL, 0, 0, 2, 0, 0, (EDU_EXEC_RTINE)((uint16_t > *)(&(ver2)))}, > - > {EDU_EXEC, ncs_edp_ncs_bool, 0, 0, 0, > (long)&((AVSV_SU_INFO_MSG *)0)->su_is_external, 0, NULL}, > > + /* Include su_failover in version 5 and higher */ > + {EDU_VER_GE, NULL, 0, 0, 2, 0, 0, (EDU_EXEC_RTINE)((uint16_t > *)(&(ver5)))}, > + {EDU_EXEC, ncs_edp_ncs_bool, 0, 0, 0, > + (long)&((AVSV_SU_INFO_MSG *)0)->su_failover, 0, NULL}, > + > {EDU_TEST_LL_PTR, avsv_edp_su_info_msg, 0, 0, 0, > (long)&((AVSV_SU_INFO_MSG *)0)->next, 0, NULL}, > {EDU_END, 0, 0, 0, 0, 0, 0, NULL}, > 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 > @@ -116,6 +116,7 @@ typedef struct avsv_su_info_msg { > uint32_t su_restart_max; > bool is_ncs; > bool su_is_external; /*indicates if this SU is external */ > + bool su_failover; > struct avsv_su_info_msg *next; > } AVSV_SU_INFO_MSG; > > 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 > @@ -509,6 +509,7 @@ static uint32_t avd_prep_su_info(AVD_CL_ > su_info->su_restart_prob = su->sg_of_su->saAmfSGSuRestartProb; > su_info->is_ncs = su->sg_of_su->sg_ncs_spec; > su_info->su_is_external = su->su_is_external; > + su_info->su_failover = su->saAmfSUFailover; > > su_info->next = su_msg->msg_info.d2n_reg_su.su_list; > su_msg->msg_info.d2n_reg_su.su_list = su_info; > diff --git a/osaf/services/saf/avsv/avnd/avnd_sudb.c > b/osaf/services/saf/avsv/avnd/avnd_sudb.c > --- a/osaf/services/saf/avsv/avnd/avnd_sudb.c > +++ b/osaf/services/saf/avsv/avnd/avnd_sudb.c > @@ -148,6 +148,11 @@ AVND_SU *avnd_sudb_rec_add(AVND_CB *cb, > su->is_ncs = info->is_ncs; > su->su_is_external = info->su_is_external; > > + /* SU failover was introduced in director version 6, if the director is > + * older then that, read from IMM */ > + if (cb->avd_mds_ver >= 6) > + su->su_failover = info->su_failover; > + > /* > * Update the rest of the parameters with default values. > */ > diff --git a/osaf/services/saf/avsv/avnd/include/avnd_su.h > b/osaf/services/saf/avsv/avnd/include/avnd_su.h > --- a/osaf/services/saf/avsv/avnd/include/avnd_su.h > +++ b/osaf/services/saf/avsv/avnd/include/avnd_su.h > @@ -157,6 +157,7 @@ typedef struct avnd_su_tag { > /* To have the knowledge in AvND if this su belongs to NCS_SG */ > bool is_ncs; > bool su_is_external; /*indicates if this SU is external */ > + bool su_failover; > > } AVND_SU; > > > ------------------------------------------------------------------------------ > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel