Ack. I think this patch is on top of older patches, so was not able to apply, 
but could review.

Thanks
-Nagu

> -----Original Message-----
> From: Gary Lee [mailto:[email protected]]
> Sent: 17 September 2015 11:25
> To: [email protected]; Nagendra Kumar;
> [email protected]; [email protected]; Praveen Malviya
> Cc: [email protected]
> Subject: [PATCH 1 of 1] amfd: convert list_of_si to std::vector [#1142]
> 
>  osaf/services/saf/amf/amfd/comp.cc           |   2 +-
>  osaf/services/saf/amf/amfd/csi.cc            |   3 +-
>  osaf/services/saf/amf/amfd/include/sg.h      |   9 ++-
>  osaf/services/saf/amf/amfd/include/si.h      |   2 +-
>  osaf/services/saf/amf/amfd/ndproc.cc         |   3 +-
>  osaf/services/saf/amf/amfd/sg.cc             |  64 
> +++++++---------------------
>  osaf/services/saf/amf/amfd/sg_2n_fsm.cc      |  25 ++--------
>  osaf/services/saf/amf/amfd/sg_nored_fsm.cc   |   8 +---
>  osaf/services/saf/amf/amfd/sg_npm_fsm.cc     |  55 +++++++++++------------
>  osaf/services/saf/amf/amfd/sg_nway_fsm.cc    |  13 +++--
>  osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc |  16 +++---
>  osaf/services/saf/amf/amfd/si.cc             |   1 -
>  osaf/services/saf/amf/amfd/si_dep.cc         |   8 +--
>  13 files changed, 74 insertions(+), 135 deletions(-)
> 
> 
> diff --git a/osaf/services/saf/amf/amfd/comp.cc
> b/osaf/services/saf/amf/amfd/comp.cc
> --- a/osaf/services/saf/amf/amfd/comp.cc
> +++ b/osaf/services/saf/amf/amfd/comp.cc
> @@ -1659,7 +1659,7 @@
> 
>  bool is_comp_assigned_any_csi(AVD_COMP *comp)
>  {
> -     for (AVD_SI *si = comp->su->sg_of_su->list_of_si; si != NULL; si = si-
> >sg_list_of_si_next) {
> +     for (const auto& si : comp->su->sg_of_su->list_of_si) {
>               for (AVD_CSI *csi = si->list_of_csi; csi; csi = csi-
> >si_list_of_csi_next) {
>                       for (AVD_COMP_CSI_REL *compcsi = csi-
> >list_compcsi; compcsi; compcsi = compcsi->csi_csicomp_next) {
>                               if (compcsi->comp == comp)
> diff --git a/osaf/services/saf/amf/amfd/csi.cc
> b/osaf/services/saf/amf/amfd/csi.cc
> --- a/osaf/services/saf/amf/amfd/csi.cc
> +++ b/osaf/services/saf/amf/amfd/csi.cc
> @@ -1383,10 +1383,9 @@
>   */
>  bool csi_assignment_validate(AVD_SG *sg)
>  {
> -     AVD_SI *temp_si;
>       AVD_SU_SI_REL *temp_sisu;
> 
> -     for (temp_si = sg->list_of_si; temp_si; temp_si = temp_si-
> >sg_list_of_si_next)
> +     for (const auto& temp_si : sg->list_of_si)
>               for (temp_sisu = temp_si->list_of_sisu; temp_sisu; temp_sisu
> = temp_sisu->si_next)
>                       if (temp_sisu->csi_add_rem == true)
>                               return true;
> diff --git a/osaf/services/saf/amf/amfd/include/sg.h
> b/osaf/services/saf/amf/amfd/include/sg.h
> --- a/osaf/services/saf/amf/amfd/include/sg.h
> +++ b/osaf/services/saf/amf/amfd/include/sg.h
> @@ -186,10 +186,11 @@
>       std::vector<AVD_SU*> list_of_su;
>       AVD_SU* first_su();
> 
> -     AVD_SI *list_of_si;     /* the list of service instances in
> -                              * this group in the descending order
> -                              * of the rank.
> -                              */
> +     /* the list of service instances in
> +      * this group in the descending order
> +      * of the rank.
> +      */
> +     std::vector<AVD_SI*> list_of_si;
>       SaInvocationT adminOp_invocationId;
>       SaAmfAdminOperationIdT adminOp;
> 
> diff --git a/osaf/services/saf/amf/amfd/include/si.h
> b/osaf/services/saf/amf/amfd/include/si.h
> --- a/osaf/services/saf/amf/amfd/include/si.h
> +++ b/osaf/services/saf/amf/amfd/include/si.h
> @@ -93,7 +93,6 @@
> 
>       AVD_SG *sg_of_si;       /* the service group of this SI */
>       AVD_CSI *list_of_csi;   /* The list of CSIs in the SI */
> -     AVD_SI *sg_list_of_si_next;     /* next SI in the SG list of SIs */
>       struct avd_su_si_rel_tag *list_of_sisu; /* the list of su si 
> relationship
> elements */
>       AVD_SI_DEP_STATE si_dep_state;  /* SI-SI dep state of this SI */
>       struct avd_spons_si_tag *spons_si_list;
> @@ -141,6 +140,7 @@
>       void add_csi_db(AVD_CSI* csi);
>       bool is_sirank_valid(uint32_t newSiRank) const;
>       void update_sirank(uint32_t newSiRank);
> +
>  private:
>       AVD_SI(const AVD_SI&);
>       AVD_SI& operator=(const AVD_SI&);
> diff --git a/osaf/services/saf/amf/amfd/ndproc.cc
> b/osaf/services/saf/amf/amfd/ndproc.cc
> --- a/osaf/services/saf/amf/amfd/ndproc.cc
> +++ b/osaf/services/saf/amf/amfd/ndproc.cc
> @@ -780,8 +780,7 @@
>                                       }
> 
>                                       if (l_val ==
> SA_AMF_PRESENCE_TERMINATION_FAILED) {
> -                                             for (AVD_SI* si = su-
> >sg_of_su->list_of_si; si != NULL;
> -                                                             si = si-
> >sg_list_of_si_next) {
> +                                             for (const auto& si : su-
> >sg_of_su->list_of_si) {
>                                                       if (si->invocation !=
> 0) {
> 
>       report_admin_op_error(cb->immOiHandle, si->invocation,
> 
>       SA_AIS_ERR_REPAIR_PENDING,
> diff --git a/osaf/services/saf/amf/amfd/sg.cc
> b/osaf/services/saf/amf/amfd/sg.cc
> --- a/osaf/services/saf/amf/amfd/sg.cc
> +++ b/osaf/services/saf/amf/amfd/sg.cc
> @@ -117,7 +117,6 @@
>               sg_fsm_state(AVD_SG_FSM_STABLE),
>               admin_si(NULL),
> 
>       sg_redundancy_model(SA_AMF_NO_REDUNDANCY_MODEL),
> -             list_of_si(NULL),
>               sg_type(NULL),
>               sg_list_app_next(NULL),
>               app(NULL),
> @@ -162,56 +161,30 @@
>  {
>       /* by now SU and SI should have been deleted */
>       osafassert(sg->list_of_su.empty() == true);
> -     osafassert(sg->list_of_si == NULL);
> +     osafassert(sg->list_of_si.empty() == true);
>       sg_remove_from_model(sg);
>       delete sg;
>  }
> 
>  void AVD_SG::add_si(AVD_SI* si)
>  {
> -     AVD_SI *i_si = AVD_SI_NULL;
> -     AVD_SI *prev_si = AVD_SI_NULL;
> -
> -     i_si = this->list_of_si;
> -
> -     while ((i_si != AVD_SI_NULL) && (i_si->saAmfSIRank < si-
> >saAmfSIRank)) {
> -             prev_si = i_si;
> -             i_si = i_si->sg_list_of_si_next;
> -     }
>       si->sg_of_si = this;
> -     if (prev_si == AVD_SI_NULL) {
> -             si->sg_list_of_si_next = si->sg_of_si->list_of_si;
> -             this->list_of_si = si;
> -     } else {
> -             prev_si->sg_list_of_si_next = si;
> -             si->sg_list_of_si_next = i_si;
> -     }
> +     list_of_si.push_back(si);
> +     std::sort(list_of_si.begin(), list_of_si.end(),
> +             [](const AVD_SI *a, const AVD_SI *b) -> bool {return a-
> >saAmfSIRank < b->saAmfSIRank;});
>  }
> 
>  void AVD_SG::remove_si(AVD_SI* si)
>  {
> -     AVD_SI *i_si = NULL;
> -     AVD_SI *prev_si = NULL;
> +     auto si_to_remove = std::find(list_of_si.begin(), list_of_si.end(), si);
> +
> +     if (si_to_remove != list_of_si.end()) {
> +             list_of_si.erase(si_to_remove);
> +     } else {
> +             osafassert(false);
> +     }
> 
> -     if (list_of_si != NULL) {
> -             i_si = list_of_si;
> -
> -             while ((i_si != NULL) && (i_si != si)) {
> -                     prev_si = i_si;
> -                     i_si = i_si->sg_list_of_si_next;
> -             }
> -
> -             if (i_si == si) {
> -                     if (prev_si == NULL) {
> -                             list_of_si = si->sg_list_of_si_next;
> -                     } else {
> -                             prev_si->sg_list_of_si_next = si-
> >sg_list_of_si_next;
> -                     }
> -
> -                     si->sg_list_of_si_next = NULL;
> -                     si->sg_of_si = NULL;
> -             }
> -     }
> +     si->sg_of_si = NULL;
>  }
> 
>  /**
> @@ -1199,9 +1172,7 @@
>   **/
>  bool sg_is_tolerance_timer_running_for_any_si(AVD_SG *sg)
>  {
> -     AVD_SI  *si;
> -
> -     for (si = sg->list_of_si; si != NULL; si = si->sg_list_of_si_next) {
> +     for (const auto& si : sg->list_of_si) {
>               if (si->si_dep_state == AVD_SI_TOL_TIMER_RUNNING) {
>                       TRACE("Tolerance timer running for si: %s",si-
> >name.value);
>                       return true;
> @@ -1484,7 +1455,6 @@
>  {
>       SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
>       AVD_SG *sg;
> -     AVD_SI *si;
>       bool si_exist = false;
>       CcbUtilOperationData_t *t_opData;
> 
> @@ -1500,21 +1470,19 @@
>               break;
>       case CCBUTIL_DELETE:
>               sg = sg_db->find(Amf::to_string(&opdata->objectName));
> -             if (sg->list_of_si != NULL) {
> +             if (sg->list_of_si.empty() == false) {
>                       /* check whether there is parent app delete */
>                       t_opData = ccbutil_getCcbOpDataByDN(opdata-
> >ccbId, &sg->app->name);
>                       if (t_opData == NULL || t_opData->operationType !=
> CCBUTIL_DELETE) {
>                               /* check whether there exists a delete
> operation for
>                                * each of the SIs in the SG's list in the 
> current
> CCB
>                                */
> -                             si = sg->list_of_si;
> -                             while (si != NULL) {
> +                             for (const auto& si : sg->list_of_si) {
>                                       t_opData =
> ccbutil_getCcbOpDataByDN(opdata->ccbId, &si->name);
>                                       if ((t_opData == NULL) || (t_opData-
> >operationType != CCBUTIL_DELETE)) {
>                                               si_exist = true;
>                                               break;
>                                       }
> -                                     si = si->sg_list_of_si_next;
>                               }
>                       }
>                       if (si_exist == true) {
> @@ -1665,7 +1633,7 @@
>                       adminOp_invocationId = 0;
>                       adminOp =
> static_cast<SaAmfAdminOperationIdT>(0);
>               }
> -             for (AVD_SI* si = list_of_si; si != NULL; si = si-
> >sg_list_of_si_next) {
> +             for (const auto& si : list_of_si) {
>                       if (si->invocation != 0) {
>                               avd_saImmOiAdminOperationResult(avd_cb-
> >immOiHandle,
>                                               si->invocation, SA_AIS_OK);
> diff --git a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
> b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
> --- a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
> +++ b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
> @@ -264,7 +264,6 @@
>       bool act_found = false, quisced_found = false, std_found = false,
> any_susi_act_found = false;
>       AVD_SU_SI_REL *a_susi = NULL;
>       AVD_SU_SI_REL *s_susi = NULL;
> -     AVD_SI *si_temp;
> 
>       TRACE_ENTER2("'%s'", su->name.value);
> 
> @@ -288,7 +287,7 @@
>               /* Any one SI is act: SU state can be said to be Act. Find SUSI,
> which has both Act and Std assgnt.*/
> 
>               /* Find SI, which has both Act and Stdby SUSI.*/
> -             for (si_temp = su->sg_of_su->list_of_si;NULL !=
> si_temp;si_temp = si_temp->sg_list_of_si_next) {
> +             for (const auto& si_temp : su->sg_of_su->list_of_si) {
>                       TRACE("si'%s'", si_temp->name.value);
>                       /* check to see if this SI has both the assignments */
>                       if (NULL == (susi = si_temp->list_of_sisu)) {
> @@ -324,12 +323,10 @@
>                  SU state can be said to be Act if other Su is not Act. Find
> SUSI,which has both Act and Std assgnt.*/
> 
>               /* Find SI, which has both Act and Stdby SUSI.*/
> -             si_temp = su->sg_of_su->list_of_si;
> -             while (NULL != si_temp) {
> +             for (const auto& si_temp : su->sg_of_su->list_of_si) {
>                       TRACE("si'%s'", si_temp->name.value);
>                       /* check to see if this SI has both the assignments */
>                       if (NULL == (susi = si_temp->list_of_sisu)) {
> -                             si_temp = si_temp->sg_list_of_si_next;
>                               continue;
>                       }
>                       TRACE("su'%s', si'%s'", susi->su->name.value, susi-
> >si->name.value);
> @@ -390,7 +387,6 @@
>                               }
>                               break;
>                       }
> -                     si_temp = si_temp->sg_list_of_si_next;
>               }/* while (NULL != si_temp)  */
>               osafassert(a_susi);
>               osafassert(s_susi);
> @@ -401,12 +397,10 @@
>       } else if ((true == std_found) && (false == quisced_found)) {
>               /* This means that there is no Act/Quisced assignment, then
> it may have all std assignment.*/
>               /* Find SI, which has both Act and Stdby SUSI.*/
> -             si_temp = su->sg_of_su->list_of_si;
> -             while (NULL != si_temp) {
> +             for (const auto& si_temp : su->sg_of_su->list_of_si) {
>                       TRACE("si'%s'", si_temp->name.value);
>                       /* check to see if this SI has both the assignments */
>                       if (NULL == (susi = si_temp->list_of_sisu)) {
> -                             si_temp = si_temp->sg_list_of_si_next;
>                               continue;
>                       }
>                       TRACE("su'%s', si'%s'", susi->su->name.value, susi-
> >si->name.value);
> @@ -428,7 +422,6 @@
>                               }
>                               break;
>                       }
> -                     si_temp = si_temp->sg_list_of_si_next;
>               }
>               osafassert(a_susi);
>               osafassert(s_susi);
> @@ -470,18 +463,14 @@
>       AVD_SU_SI_REL *susi;
>       AVD_SU_SI_REL *a_susi = NULL, *a_susi_1 = NULL, *a_susi_2 =
> NULL;
>       AVD_SU_SI_REL *s_susi = NULL, *s_susi_1 = NULL, *s_susi_2 =
> NULL;
> -     AVD_SI *l_si;
>       AVD_SU *su_1 = NULL, *su_2 = NULL;
> 
>       TRACE_ENTER2("'%s'", sg->name.value);
> 
> -     l_si = sg->list_of_si;
> -
>       /* Find out single/both the assigned SUs of SG. */
> -     while (NULL != l_si) {
> +     for (const auto& l_si : sg->list_of_si) {
>               if ((susi = l_si->list_of_sisu) == NULL) {
>                       /* SI with no assignments!! Check another SI.*/
> -                     l_si = l_si->sg_list_of_si_next;
>                       continue;
>               }
>               su_1 = susi->su;
> @@ -493,7 +482,6 @@
>                       su_2 = susi->si_next->su;
>                       break;
>               }
> -             l_si = l_si->sg_list_of_si_next;
>       }
> 
>       if ((NULL == su_1) && (NULL == su_2))
> @@ -590,7 +578,6 @@
>       AVD_SU *a_su = NULL;
>       AVD_SU *s_su = NULL;
>       AVD_SU *return_su = NULL;
> -     AVD_SI *i_si;
>       bool l_flag = true;
>       AVD_SU_SI_REL *tmp_susi;
> 
> @@ -629,7 +616,7 @@
>       l_flag = false;
> 
>       /* choose and assign SIs in the SG that dont have active assignment
> */
> -     for (i_si = sg->list_of_si; i_si != NULL; i_si = 
> i_si->sg_list_of_si_next) {
> +     for (const auto& i_si : sg->list_of_si) {
> 
>               if ((i_si->saAmfSIAdminState ==
> SA_AMF_ADMIN_UNLOCKED) &&
>                   (i_si->list_of_csi != NULL) &&
> @@ -687,7 +674,7 @@
>       /* choose and assign SIs in the SG that have active assignment but
> dont
>        * have standby assignment.
>        */
> -     for (i_si = sg->list_of_si; i_si != NULL; i_si = 
> i_si->sg_list_of_si_next) {
> +     for (const auto& i_si : sg->list_of_si) {
>               if (i_si->list_of_sisu != AVD_SU_SI_REL_NULL) {
>                       /* found a SI that has active assignment. check if it
> has standby
>                        * assignment. If not assign standby to this SU.
> diff --git a/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
> b/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
> --- a/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
> +++ b/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
> @@ -37,15 +37,12 @@
>   *          no assignments need to happen.
>   */
>  AVD_SU *SG_NORED::assign_sis_to_sus() {
> -     AVD_SI *i_si;
>       AVD_SU_SI_REL *tmp;
> 
>       TRACE_ENTER();
> 
> -     i_si = list_of_si;
> -
>       avd_sidep_update_si_dep_state_for_all_sis(this);
> -     while (i_si != NULL) {
> +     for (const auto& i_si : list_of_si) {
> 
>               /* verify that the SI is unassigned and ready */
>               if ((i_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED) ||
> @@ -54,7 +51,6 @@
>                   (i_si->si_dep_state ==
> AVD_SI_UNASSIGNING_DUE_TO_DEP) ||
>                       (i_si->list_of_csi == NULL) ||
>                   (i_si->list_of_sisu != NULL)) {
> -                     i_si = i_si->sg_list_of_si_next;
>                       continue;
>               }
> 
> @@ -79,8 +75,6 @@
>               if (iter == list_of_su.end()) {
>                       break;
>               }
> -
> -             i_si = i_si->sg_list_of_si_next;
>       }
> 
>       TRACE_LEAVE();
> diff --git a/osaf/services/saf/amf/amfd/sg_npm_fsm.cc
> b/osaf/services/saf/amf/amfd/sg_npm_fsm.cc
> --- a/osaf/services/saf/amf/amfd/sg_npm_fsm.cc
> +++ b/osaf/services/saf/amf/amfd/sg_npm_fsm.cc
> @@ -338,7 +338,6 @@
> 
> **************************************************************
> ***************/
>  static void avd_sg_npm_distribute_si_equal(AVD_SG *sg)
>  {
> -     AVD_SI *curr_si = NULL;
>       AVD_SU *curr_su = NULL;
>       AVD_SU_SI_REL *susi;
> 
> @@ -349,8 +348,7 @@
>        * qualified SU to take the active assignment for that SI
>        */
> 
> -     curr_si = sg->list_of_si;
> -     while (curr_si != NULL) {
> +     for (const auto& curr_si : sg->list_of_si) {
> 
>               /* verify that the SI is ready and needs active assignments. */
>               if ((curr_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED) ||
> @@ -358,7 +356,6 @@
>                               (curr_si->si_dep_state ==
> AVD_SI_SPONSOR_UNASSIGNED) ||
>                               (curr_si->si_dep_state ==
> AVD_SI_UNASSIGNING_DUE_TO_DEP) ||
>                               (curr_si->list_of_csi == NULL)) {
> -                     curr_si = curr_si->sg_list_of_si_next;
>                       continue;
>               }
> 
> @@ -388,7 +385,6 @@
>                               LOG_ER("%s:%u: %s (%u)", __FILE__,
> __LINE__, curr_su->name.value, curr_su->name.length);
>                       }
>               }
> -             curr_si = curr_si->sg_list_of_si_next;
>       }
> 
>       /* Now run through SI list of the SG to identify if there is
> @@ -396,14 +392,12 @@
>        * make a Standby HA assignment accordingly
>        */
> 
> -     curr_si = sg->list_of_si;
> -     while (curr_si != NULL) {
> +     for (const auto& curr_si : sg->list_of_si) {
>               if ((curr_si->list_of_sisu ==  AVD_SU_SI_REL_NULL) ||
>                       (curr_si->saAmfSIAssignmentState ==
> SA_AMF_ASSIGNMENT_FULLY_ASSIGNED)) {
>                       /* No standby assignment needs to be done when
> there is
>                        * either no active assignment exists or it is fully
> assigned already
>                        */
> -                     curr_si = curr_si->sg_list_of_si_next;
>                       continue;
>               }
>               /* an assignment exists for this SI check for
> @@ -435,8 +429,6 @@
>                               LOG_ER("%s:%u: %s (%u)", __FILE__,
> __LINE__, curr_su->name.value, curr_su->name.length);
>                       }
>               }
> -
> -             curr_si = curr_si->sg_list_of_si_next;
>       }
> 
>       TRACE_LEAVE();
> @@ -471,11 +463,12 @@
>  {
>       AVD_SU *i_su = NULL, *l_su = NULL, *n_su;
>       uint32_t cnt = 0;
> -     AVD_SI *i_si;
> +     AVD_SI *i_si = NULL;
>       bool new_su = false;
>       bool su_found, load_su_found;
>       bool actv_su_found = false;
>       AVD_SU_SI_REL *o_susi, *tmp_susi;
> +     std::vector<AVD_SI*>::iterator si_iter;
> 
>       TRACE_ENTER();
> 
> @@ -489,11 +482,12 @@
>       }
> 
>       /* Identifying and assigning active assignments. */
> -     i_si = sg->list_of_si;
> +     si_iter = sg->list_of_si.begin();
>       su_found = true;
>       actv_su_found = load_su_found = false;
> 
> -     while ((i_si != AVD_SI_NULL) && (su_found == true)) {
> +     while ((si_iter != sg->list_of_si.end()) && (su_found == true)) {
> +             i_si = *si_iter;
> 
>               /* verify that the SI is ready and needs active assignments. */
>               if ((i_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED) ||
> @@ -501,12 +495,12 @@
>                   (i_si->si_dep_state == AVD_SI_READY_TO_UNASSIGN) ||
>                       (i_si->list_of_csi == NULL) ||
>                   (i_si->si_dep_state ==
> AVD_SI_UNASSIGNING_DUE_TO_DEP)) {
> -                     i_si = i_si->sg_list_of_si_next;
> +                     ++si_iter;
>                       continue;
>               }
> 
>               if (i_si->list_of_sisu != AVD_SU_SI_REL_NULL) {
> -                     i_si = i_si->sg_list_of_si_next;
> +                     ++si_iter;
>                       actv_su_found = true;
>                       continue;
>               }
> @@ -652,6 +646,7 @@
>                       /* if ((su_found == false) &&
>                          (cnt < sg->pref_num_active_su)) */
>               }               /* else (i_su != AVD_SU_NULL) */
> +
>               if (su_found == true) {
>                       if (avd_new_assgn_susi(cb, i_su, i_si,
> SA_AMF_HA_ACTIVE, false, &tmp_susi) == NCSCC_RC_SUCCESS) {
>                               /* Add the SU to the operation list */
> @@ -662,24 +657,26 @@
>                       }
> 
>                       /* choose the next SI */
> -                     i_si = i_si->sg_list_of_si_next;
> +                     ++si_iter;
>               }
> 
> -     }                       /* while ((i_si != AVD_SI_NULL) &&
> (su_found == true)) */
> +     }
> 
>       /* The SUs were loaded only upto the preffered level. If still SIs
>        * are left load them upto capability level.
>        */
> -     if ((load_su_found == true) && (i_si != AVD_SI_NULL) && (cnt == sg-
> >saAmfSGNumPrefActiveSUs)) {
> +     if ((load_su_found == true) && (si_iter != sg->list_of_si.end()) && (cnt
> == sg->saAmfSGNumPrefActiveSUs)) {
>               /* Identify the highest ranked active assigning SU.  */
>               i_su = avd_sg_npm_su_next_asgn(cb, sg, NULL,
> SA_AMF_HA_ACTIVE);
> -             while ((i_si != AVD_SI_NULL) && (i_su != NULL)) {
> +             while ((si_iter != sg->list_of_si.end()) && (i_su != NULL)) {
> +                     i_si = *si_iter;
> +
>                       if ((i_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED) ||
>                           (i_si->si_dep_state ==
> AVD_SI_SPONSOR_UNASSIGNED) ||
>                           (i_si->si_dep_state ==
> AVD_SI_UNASSIGNING_DUE_TO_DEP) ||
>                               (i_si->list_of_csi == NULL) ||
>                           (i_si->list_of_sisu != AVD_SU_SI_REL_NULL)) {
> -                             i_si = i_si->sg_list_of_si_next;
> +                             ++si_iter;
>                               continue;
>                       }
> 
> @@ -696,9 +693,8 @@
>                       }
> 
>                       /* choose the next SI */
> -                     i_si = i_si->sg_list_of_si_next;
> -
> -             }               /* while ((i_si != AVD_SI_NULL) && (i_su !=
> AVD_SU_NULL)) */
> +                     ++si_iter;
> +             }
> 
>       }
>       /* if ((load_su_found == true) && (i_si != AVD_SI_NULL)) */
> @@ -716,16 +712,18 @@
>       }
> 
>       /* Identifying and assigning standby assignments. */
> -     i_si = sg->list_of_si;
> +     si_iter = sg->list_of_si.begin();
>       new_su = false;
>       cnt = 0;
>       l_su = NULL;
>       /* su with last inservice un assigned SUs. */
>       n_su = NULL;
> -     while (i_si != AVD_SI_NULL) {
> +     while (si_iter != sg->list_of_si.end()) {
> +             i_si = *si_iter;
> +
>               /* verify that the SI has active assignments and needs
> standby assignments. */
>               if ((i_si->list_of_sisu == AVD_SU_SI_REL_NULL) || (i_si-
> >list_of_sisu->si_next != AVD_SU_SI_REL_NULL)) {
> -                     i_si = i_si->sg_list_of_si_next;
> +                     ++si_iter;
>                       continue;
>               }
> 
> @@ -924,9 +922,8 @@
>               }
> 
>               /* choose the next SI */
> -             i_si = i_si->sg_list_of_si_next;
> -
> -     }                       /* while (i_si != AVD_SI_NULL) */
> +             ++si_iter;
> +     }
> 
>  done:
>       if (sg->su_oper_list.empty() == true) {
> 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
> @@ -689,7 +689,6 @@
> 
>  uint32_t SG_NWAY::sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg) {
>       AVD_SU_SI_REL *curr_susi = 0;
> -     AVD_SI *curr_si = 0;
>       bool is_act_asgn;
>       uint32_t rc = NCSCC_RC_SUCCESS;
> 
> @@ -751,7 +750,7 @@
>               if (SA_AMF_ADMIN_LOCKED == sg->saAmfSGAdminState) {
>                       /* pick up all the quiescing susi assignments &
>                          send quiesced assignments to them */
> -                     for (curr_si = sg->list_of_si; curr_si; curr_si = 
> curr_si-
> >sg_list_of_si_next) {
> +                     for (const auto& curr_si : sg->list_of_si) {
>                               for (curr_susi = curr_si->list_of_sisu;
>                                    curr_susi && (SA_AMF_HA_QUIESCING !=
> curr_susi->state);
>                                    curr_susi = curr_susi->si_next) ;
> @@ -1244,7 +1243,6 @@
> 
> **************************************************************
> ************/
>  uint32_t avd_sg_nway_si_assign(AVD_CL_CB *cb, AVD_SG *sg)
>  {
> -     AVD_SI *curr_si = 0;
>       AVD_SU *curr_su = NULL;
>       AVD_SU *pref_su = NULL;
>       bool is_act_ass_sent = false, is_all_su_oos = true, is_all_si_ok =
> false, su_found = true;
> @@ -1258,8 +1256,7 @@
> 
>       avd_sidep_update_si_dep_state_for_all_sis(sg);
>       /* assign active assignments to unassigned sis */
> -     for (curr_si = sg->list_of_si; curr_si; curr_si = curr_si-
> >sg_list_of_si_next) {
> -
> +     for (const auto& curr_si : sg->list_of_si) {
>               /* verify if si is ready and needs an assignment */
>               if ((curr_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED) ||
>                   (curr_si->si_dep_state ==
> AVD_SI_SPONSOR_UNASSIGNED) ||
> @@ -1409,7 +1406,11 @@
>               goto done;
> 
>       /* assign standby assignments to the sis */
> -     for (curr_si = sg->list_of_si; curr_si && (true == su_found); curr_si =
> curr_si->sg_list_of_si_next) {
> +     for (const auto& curr_si : sg->list_of_si) {
> +             if (su_found == false) {
> +                     break;
> +             }
> +
>               /* verify if si is ready */
>               if (curr_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED)
>                       continue;
> diff --git a/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
> b/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
> --- a/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
> +++ b/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
> @@ -57,22 +57,24 @@
>  AVD_SU *avd_sg_nacvred_su_chose_asgn(AVD_CL_CB *cb, AVD_SG *sg)
>  {
>       AVD_SU *i_su, *qualified_su;
> -     AVD_SI *i_si;
>       bool l_flag, next_si_tobe_assigned = true;
>       AVD_SU_SI_REL *tmp_rel;
> 
>       TRACE_ENTER2("'%s'", sg->name.value);
> 
> -     i_si = sg->list_of_si;
> +     // @todo remove this l_flag??
>       l_flag = true;
> 
>       avd_sidep_update_si_dep_state_for_all_sis(sg);
> -     while ((i_si != AVD_SI_NULL) && (l_flag == true)) {
> +     for (const auto& i_si : sg->list_of_si) {
> +             if (l_flag == false) {
> +                     break;
> +             }
> +
>               /* verify that the SI is ready and needs come more
> assignments. */
>               if ((i_si->saAmfSIAdminState !=
> SA_AMF_ADMIN_UNLOCKED) ||
>                       (i_si->list_of_csi == NULL) ||
>                   (i_si->pref_active_assignments() <= i_si-
> >curr_active_assignments() )) {
> -                     i_si = i_si->sg_list_of_si_next;
>                       continue;
>               }
> 
> @@ -80,7 +82,6 @@
>               if ((i_si->si_dep_state == AVD_SI_SPONSOR_UNASSIGNED) ||
>                               (i_si->si_dep_state ==
> AVD_SI_READY_TO_UNASSIGN) ||
>                               (i_si->si_dep_state ==
> AVD_SI_UNASSIGNING_DUE_TO_DEP)) {
> -                     i_si = i_si->sg_list_of_si_next;
>                       continue;
>               }
> 
> @@ -228,11 +229,8 @@
>                       }/* while */
>               }/* if (true == sg->equal_ranked_su) */
> 
> -
>               /* choose the next SI */
> -             i_si = i_si->sg_list_of_si_next;
> -
> -     }/* while ((i_si != AVD_SI_NULL) && (l_flag == true)) */
> +     }
> 
>       TRACE_LEAVE();
> 
> diff --git a/osaf/services/saf/amf/amfd/si.cc
> b/osaf/services/saf/amf/amfd/si.cc
> --- a/osaf/services/saf/amf/amfd/si.cc
> +++ b/osaf/services/saf/amf/amfd/si.cc
> @@ -307,7 +307,6 @@
>       si_switch(AVSV_SI_TOGGLE_STABLE),
>       sg_of_si(NULL),
>       list_of_csi(NULL),
> -     sg_list_of_si_next(NULL),
>       list_of_sisu(NULL),
>       si_dep_state(AVD_SI_NO_DEPENDENCY),
>       spons_si_list(NULL),
> diff --git a/osaf/services/saf/amf/amfd/si_dep.cc
> b/osaf/services/saf/amf/amfd/si_dep.cc
> --- a/osaf/services/saf/amf/amfd/si_dep.cc
> +++ b/osaf/services/saf/amf/amfd/si_dep.cc
> @@ -666,11 +666,9 @@
> 
> **************************************************************
> ************/
>  void avd_sidep_update_si_dep_state_for_all_sis(AVD_SG *sg)
>  {
> -     AVD_SI *si = NULL;
> -
>       TRACE_ENTER2("'%s'", sg->name.value);
> 
> -     for (si = sg->list_of_si; si != NULL; si = si->sg_list_of_si_next) {
> +     for (const auto& si : sg->list_of_si) {
> 
>               /*Avoid screening if si is neither a sponsor si nor a dependent
> si*/
>               if ((si->spons_si_list != NULL) || (si->num_dependents > 0))
> @@ -2427,11 +2425,9 @@
>   **/
>  void avd_sidep_sg_take_action(AVD_SG *sg)
>  {
> -     AVD_SI *si = NULL;
> -
>       TRACE_ENTER2("'%s'", sg->name.value);
> 
> -     for (si = sg->list_of_si; si != NULL; si = si->sg_list_of_si_next) {
> +     for (const auto& si : sg->list_of_si) {
>               if ((si->spons_si_list != NULL) || (si->num_dependents > 0))
>                       sidep_si_take_action(si);
>       }

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to