Hi Hung, Reviewed and tested the patch. Ack.
/Neel. On 2016/10/21 10:08 AM, Hung Nguyen wrote: > osaf/services/saf/immsv/immd/immd_cb.h | 4 +- > osaf/services/saf/immsv/immd/immd_main.c | 2 +- > osaf/services/saf/immsv/immd/immd_mbcsv.c | 32 > +++++++++++++++++++++++++++--- > osaf/services/saf/immsv/immnd/ImmModel.cc | 2 +- > osaf/services/saf/immsv/immnd/ImmModel.hh | 2 +- > osaf/services/saf/immsv/immnd/immnd_cb.h | 2 +- > 6 files changed, 34 insertions(+), 10 deletions(-) > > > Store mScAbsenceAllowed as 32 bit unsigned integer. > > diff --git a/osaf/services/saf/immsv/immd/immd_cb.h > b/osaf/services/saf/immsv/immd/immd_cb.h > --- a/osaf/services/saf/immsv/immd/immd_cb.h > +++ b/osaf/services/saf/immsv/immd/immd_cb.h > @@ -39,7 +39,7 @@ > IMMD_WRT_IMMND_SUBPART_VER_MIN + 1 ) > > #define IMMSV_IMMD_MBCSV_VERSION_MIN 4 > -#define IMMSV_IMMD_MBCSV_VERSION 6 > +#define IMMSV_IMMD_MBCSV_VERSION 7 > > typedef struct immd_saved_fevs_msg { > IMMSV_FEVS fevsMsg; > @@ -139,7 +139,7 @@ typedef struct immd_cb_tag { > bool m2PbeExtraWait; /* true => Used only to prolong wait if both SCs > have been introduced but one has not yet > replied. */ > bool nid_started; /* true if started by NID */ > - SaUint16T mScAbsenceAllowed; /* Non zero if SC absence is allowed (loss > of both IMMDs/SCs). > + SaUint32T mScAbsenceAllowed; /* Non zero if SC absence is allowed (loss > of both IMMDs/SCs). > Value is number of seconds of SC absence > tolerated. */ > MDS_DEST payload_coord_dest; /* IMMND coord may be at payload if > mScAbsenceAllowed is nonzero */ > uint32_t mScAbsenceVeteranMaxWait; /* Amount of seconds IMMD waits for > veteran IMMDs after sc absence */ > diff --git a/osaf/services/saf/immsv/immd/immd_main.c > b/osaf/services/saf/immsv/immd/immd_main.c > --- a/osaf/services/saf/immsv/immd/immd_main.c > +++ b/osaf/services/saf/immsv/immd/immd_main.c > @@ -276,7 +276,7 @@ int main(int argc, char *argv[]) > int64_t start_time = 0LL; > uint32_t print_at_secs = 1LL; > int term_fd; > - uint16_t scAbsenceAllowed = 0; > + uint32_t scAbsenceAllowed = 0; > > daemonize(argc, argv); > > diff --git a/osaf/services/saf/immsv/immd/immd_mbcsv.c > b/osaf/services/saf/immsv/immd/immd_mbcsv.c > --- a/osaf/services/saf/immsv/immd/immd_mbcsv.c > +++ b/osaf/services/saf/immsv/immd/immd_mbcsv.c > @@ -770,11 +770,19 @@ static uint32_t mbcsv_enc_msg_resp(IMMD_ > ncs_encode_8bit(&uns8_ptr, cb->mIs2Pbe); > } > > - if (peer_version >= 6) { > + /* See ticket #2130 */ > + if (peer_version == 6) { > uns16_ptr = ncs_enc_reserve_space(&arg->info.encode.io_uba, > sizeof(uint16_t)); > osafassert(uns16_ptr); > ncs_enc_claim_space(&arg->info.encode.io_uba, sizeof(uint16_t)); > - ncs_encode_16bit(&uns16_ptr, cb->mScAbsenceAllowed); > + ncs_encode_16bit(&uns16_ptr, (uint16_t) cb->mScAbsenceAllowed); > + } > + > + if (peer_version >= 7) { > + uns32_ptr = ncs_enc_reserve_space(&arg->info.encode.io_uba, > sizeof(uint32_t)); > + osafassert(uns32_ptr); > + ncs_enc_claim_space(&arg->info.encode.io_uba, sizeof(uint32_t)); > + ncs_encode_32bit(&uns32_ptr, cb->mScAbsenceAllowed); > } > > /* Alter this to follow same pattern as logsv */ > @@ -1184,16 +1192,32 @@ static uint32_t mbcsv_dec_sync_resp(IMMD > } > } > > - if (peer_version >= 6) { > + /* See ticket #2130 */ > + if (peer_version == 6) { > uint16_t scAbsenceAllowed; > > ptr = ncs_dec_flatten_space(&arg->info.decode.i_uba, data, > sizeof(uint16_t)); > scAbsenceAllowed = ncs_decode_16bit(&ptr); > ncs_dec_skip_space(&arg->info.decode.i_uba, sizeof(uint16_t)); > > + if((uint16_t) cb->mScAbsenceAllowed != scAbsenceAllowed) { > + LOG_ER("SC absence allowed in not the same as on active > IMMD. " > + "Active: %u, Standby: %u. Exiting.", > + scAbsenceAllowed, (uint16_t) > cb->mScAbsenceAllowed); > + exit(1); > + } > + } > + > + if (peer_version >= 7) { > + uint32_t scAbsenceAllowed; > + > + ptr = ncs_dec_flatten_space(&arg->info.decode.i_uba, data, > sizeof(uint32_t)); > + scAbsenceAllowed = ncs_decode_32bit(&ptr); > + ncs_dec_skip_space(&arg->info.decode.i_uba, sizeof(uint32_t)); > + > if(cb->mScAbsenceAllowed != scAbsenceAllowed) { > LOG_ER("SC absence allowed in not the same as on active > IMMD. " > - "Active: %u, Standby: %d. Exiting.", > + "Active: %u, Standby: %u. Exiting.", > scAbsenceAllowed, > cb->mScAbsenceAllowed); > exit(1); > } > diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc > b/osaf/services/saf/immsv/immnd/ImmModel.cc > --- a/osaf/services/saf/immsv/immnd/ImmModel.cc > +++ b/osaf/services/saf/immsv/immnd/ImmModel.cc > @@ -18425,7 +18425,7 @@ ImmModel::getParentDn(std::string& paren > } > > void > -ImmModel::setScAbsenceAllowed(SaUint16T scAbsenceAllowed) > +ImmModel::setScAbsenceAllowed(SaUint32T scAbsenceAllowed) > { > ObjectMap::iterator oi = sObjectMap.find(immObjectDn); > osafassert(oi != sObjectMap.end()); > diff --git a/osaf/services/saf/immsv/immnd/ImmModel.hh > b/osaf/services/saf/immsv/immnd/ImmModel.hh > --- a/osaf/services/saf/immsv/immnd/ImmModel.hh > +++ b/osaf/services/saf/immsv/immnd/ImmModel.hh > @@ -493,7 +493,7 @@ public: > struct ImmsvAdminOperationParam > **rparams, > SaUint64T searchcount); > > - void setScAbsenceAllowed(SaUint16T scAbsenceAllowed); > + void setScAbsenceAllowed(SaUint32T scAbsenceAllowed); > > SaAisErrorT objectSync(const ImmsvOmObjectSync* req); > bool fetchRtUpdate(ImmsvOmObjectSync* syncReq, > diff --git a/osaf/services/saf/immsv/immnd/immnd_cb.h > b/osaf/services/saf/immsv/immnd/immnd_cb.h > --- a/osaf/services/saf/immsv/immnd/immnd_cb.h > +++ b/osaf/services/saf/immsv/immnd/immnd_cb.h > @@ -132,7 +132,7 @@ typedef struct immnd_cb_tag { > bool mIsOtherScUp; //If set & this is an SC then other SC is up(2pbe). > //False=> *allow* 1safe 2pbe. May err conservatively (true) > bool mForceClean; //true => Force cleanTheHouse to run once *now*. > - SaUint16T mScAbsenceAllowed; /* Non zero if SC absence is allowed (loss > of both IMMDs/SCs). > + SaUint32T mScAbsenceAllowed; /* Non zero if SC absence is allowed (loss > of both IMMDs/SCs). > Value is number of seconds of SC absence > tolerated. */ > > /* Information about the IMMD */ ------------------------------------------------------------------------------ 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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel