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

Reply via email to