osaf/services/saf/amf/amfd/sg_nway_fsm.cc |  53 ++++++++++++++++++------------
 1 files changed, 32 insertions(+), 21 deletions(-)


diff --git a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc 
b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
--- a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
+++ b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
@@ -694,7 +694,6 @@ done:
 
 uint32_t SG_NWAY::sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg) {
        AVD_SU_SI_REL *curr_susi = 0;
-       AVD_SU *curr_su = 0;
        AVD_SI *curr_si = 0;
        bool is_act_asgn;
        uint32_t rc = NCSCC_RC_SUCCESS;
@@ -712,7 +711,8 @@ uint32_t SG_NWAY::sg_admin_down(AVD_CL_C
                    (SA_AMF_ADMIN_SHUTTING_DOWN == sg->saAmfSGAdminState)) {
                        /* identify & send quiesced / quiescing assignment to 
all the 
                           active susi assignments in this sg */
-                       for (curr_su = sg->list_of_su; curr_su; curr_su = 
curr_su->sg_list_su_next) {
+                       for (const auto& curr_su : sg->list_of_su) {
+
                                /* skip the su if there are no assignments */
                                if (!curr_su->list_of_susi)
                                        continue;
@@ -964,7 +964,6 @@ done:
  */
 void avd_sg_nway_screen_si_distr_equal(AVD_SG *sg)
 {
-       AVD_SU *curr_su = NULL;
        AVD_SI *si_to_transfer = NULL;
 
        TRACE_ENTER();
@@ -980,7 +979,8 @@ void avd_sg_nway_screen_si_distr_equal(A
         */
 
        /* do screening for active assignements */
-       for (curr_su = sg->list_of_su;curr_su != NULL;curr_su = 
curr_su->sg_list_su_next) {
+       for (const auto& curr_su : sg->list_of_su) {
+
                if (curr_su->saAmfSuReadinessState == 
SA_AMF_READINESS_IN_SERVICE) {
 
                        /* set the  min su ptr to the first inservice su */
@@ -1045,7 +1045,8 @@ screen_standby_assignments:
        /* do screening for standby assignments */
        sg->max_assigned_su = sg->min_assigned_su = NULL;
 
-       for (curr_su = sg->list_of_su;curr_su != NULL;curr_su = 
curr_su->sg_list_su_next) {
+       for (const auto& curr_su : sg->list_of_su) {
+
                if (curr_su->saAmfSuReadinessState == 
SA_AMF_READINESS_IN_SERVICE) {
                        /* set the  min su ptr to the first inservice su */
                         if (sg->min_assigned_su == NULL) {
@@ -1116,7 +1117,6 @@ done:
  */
 AVD_SU *avd_sg_nway_get_su_std_equal(AVD_SG *sg, AVD_SI *curr_si)
 {
-       AVD_SU *curr_su = NULL;
        AVD_SU *pref_su = NULL;
        bool l_flag = false;
        SaUint32T curr_su_stdby_cnt = 0;
@@ -1124,7 +1124,8 @@ AVD_SU *avd_sg_nway_get_su_std_equal(AVD
 
        TRACE_ENTER2("SI to be assigned : %s", curr_si->name.value);
 
-       for (curr_su = sg->list_of_su; curr_su; curr_su = 
curr_su->sg_list_su_next) {
+       for (const auto& curr_su : sg->list_of_su) {
+
                /* verify if this su can take the standby assignment */
                if ((curr_su->saAmfSuReadinessState != 
SA_AMF_READINESS_IN_SERVICE) ||
                                ((curr_su->sg_of_su->saAmfSGMaxStandbySIsperSU 
!= 0) &&
@@ -1341,36 +1342,42 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB
                        /* Reset pref_su for every SI */        
                        pref_su = NULL;
 
-                       for (curr_su = sg->list_of_su; curr_su; curr_su = 
curr_su->sg_list_su_next) {
-                               if (SA_AMF_READINESS_IN_SERVICE == 
curr_su->saAmfSuReadinessState) {
+                       for (const auto& iter : sg->list_of_su) {
+                               if (SA_AMF_READINESS_IN_SERVICE == 
iter->saAmfSuReadinessState) {
                                        is_all_su_oos = false;
                                        /* if equal distribution is needed when 
all SUs are of
                                         * equal rank or no rank configured for 
any of the SU
                                         */
                                        if (sg->equal_ranked_su == true) {
                                                /* first try to select an SU 
which has no assignments */
-                                               if 
((curr_su->saAmfSUNumCurrActiveSIs == 0) &&
-                                                       
(curr_su->saAmfSUNumCurrStandbySIs == 0)) { 
+                                               if 
((iter->saAmfSUNumCurrActiveSIs == 0) &&
+                                                       
(iter->saAmfSUNumCurrStandbySIs == 0)) { 
                                                        /* got an SU without 
any assignments select 
                                                         * it for this SI's 
active assignment
                                                         */
-                                                       pref_su = curr_su;
+                                                       TRACE("set %s as 
pref_su", pref_su->name.value);
+                                                       pref_su = iter;
                                                        break;
                                                }
                                                /* else try to select an SU 
with least active assignments */
                                                else {
-                                                       if 
((curr_su->list_of_susi != AVD_SU_SI_REL_NULL) &&
-                                                               
((curr_su->sg_of_su->saAmfSGMaxActiveSIsperSU == 0) ||
-                                                                
(curr_su->saAmfSUNumCurrActiveSIs < 
curr_su->sg_of_su->saAmfSGMaxActiveSIsperSU)) &&
-                                                               (!pref_su || 
pref_su->saAmfSUNumCurrActiveSIs > curr_su->saAmfSUNumCurrActiveSIs)) 
+                                                       if ((iter->list_of_susi 
!= AVD_SU_SI_REL_NULL) &&
+                                                               
((iter->sg_of_su->saAmfSGMaxActiveSIsperSU == 0) ||
+                                                                
(iter->saAmfSUNumCurrActiveSIs < iter->sg_of_su->saAmfSGMaxActiveSIsperSU)) &&
+                                                               (!pref_su || 
pref_su->saAmfSUNumCurrActiveSIs > iter->saAmfSUNumCurrActiveSIs)) { 
                                                                /* mark this as 
the preferred SU */
-                                                               pref_su = 
curr_su;
+                                                               TRACE("set %s 
as pref_su", pref_su->name.value);
+                                                               pref_su = iter;
+                                                       }
                                                }
                                        }
-                                       else if 
(((curr_su->sg_of_su->saAmfSGMaxActiveSIsperSU == 0) ||
-                                                 
(curr_su->saAmfSUNumCurrActiveSIs <
-                                                  
curr_su->sg_of_su->saAmfSGMaxActiveSIsperSU)))
+                                       else if 
(((iter->sg_of_su->saAmfSGMaxActiveSIsperSU == 0) ||
+                                                 
(iter->saAmfSUNumCurrActiveSIs <
+                                                  
iter->sg_of_su->saAmfSGMaxActiveSIsperSU))) {
+                                               curr_su = iter;
+                                               TRACE("no pref_su set, curr_su 
is %s", curr_su->name.value);
                                                break;
+                                       }
                                }
                        }
 
@@ -1389,6 +1396,8 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB
                        /* set the flag */
                        is_act_ass_sent = true;
 
+                       TRACE("send active assignment to %s", 
curr_su->name.value);
+
                        rc = avd_new_assgn_susi(cb, curr_su, curr_si, 
SA_AMF_HA_ACTIVE, false, &tmp_susi);
                        if (NCSCC_RC_SUCCESS == rc) {
                                /* add su to the su-oper list & change the fsm 
state to sg-realign */
@@ -1499,7 +1508,9 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB
                su_found = false;
 
                /* next, scan based on su rank for the sg */
-               for (curr_su = sg->list_of_su; curr_su; curr_su = 
curr_su->sg_list_su_next) {
+               for (const auto& iter : sg->list_of_su) {
+                       curr_su = iter;
+
                        /* verify if this su can take the standby assignment */
                        if (!curr_su || (curr_su->saAmfSuReadinessState != 
SA_AMF_READINESS_IN_SERVICE) ||
                                        
((curr_su->sg_of_su->saAmfSGMaxStandbySIsperSU != 0) &&

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to