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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel