osaf/services/saf/amf/amfd/include/cb.h   |    6 +-
 osaf/services/saf/amf/amfd/include/msg.h  |   26 +++---
 osaf/services/saf/amf/amfd/include/node.h |  102 ++++++++++++++++-------------
 osaf/services/saf/amf/amfd/include/sg.h   |   12 +-
 osaf/services/saf/amf/amfd/include/su.h   |    4 +-
 osaf/services/saf/amf/amfd/include/util.h |   32 ++++----
 osaf/services/saf/amf/amfd/node.cc        |   81 +++++++++++++++++-----
 osaf/services/saf/amf/amfd/su.cc          |    6 +-
 8 files changed, 159 insertions(+), 110 deletions(-)


diff --git a/osaf/services/saf/amf/amfd/include/cb.h 
b/osaf/services/saf/amf/amfd/include/cb.h
--- a/osaf/services/saf/amf/amfd/include/cb.h
+++ b/osaf/services/saf/amf/amfd/include/cb.h
@@ -44,7 +44,7 @@
 #include <ckpt.h>
 #include <timer.h>
 
-struct avd_avnd_tag;
+class AVD_AVND;
 
 typedef enum {
        AVD_INIT_BGN = 1,
@@ -84,8 +84,8 @@ typedef struct avsv_nd_msg_list {
    node_state, rcv_msg_id, snd_msg_id of hosting node, so we also have a
    pointer to local AVD_AVND data structure. */
 typedef struct avd_ext_comp_info {
-       struct avd_avnd_tag *local_avnd_node;
-       struct avd_avnd_tag *ext_comp_hlt_check;
+       AVD_AVND *local_avnd_node;
+       AVD_AVND *ext_comp_hlt_check;
 } AVD_EXT_COMP_INFO;
 
 /*
diff --git a/osaf/services/saf/amf/amfd/include/msg.h 
b/osaf/services/saf/amf/amfd/include/msg.h
--- a/osaf/services/saf/amf/amfd/include/msg.h
+++ b/osaf/services/saf/amf/amfd/include/msg.h
@@ -69,7 +69,7 @@ typedef struct avd_d2d_msg {
 } AVD_D2D_MSG;
 
 struct cl_cb_tag;
-struct avd_avnd_tag;
+class AVD_AVND;
 class AVD_SU;
 struct avd_su_si_rel_tag;
 class AVD_COMP;
@@ -77,7 +77,7 @@ struct avd_comp_csi_rel_tag;
 class AVD_CSI;
 
 uint32_t avd_d2n_msg_dequeue(struct cl_cb_tag *cb);
-uint32_t avd_d2n_msg_snd(struct cl_cb_tag *cb, struct avd_avnd_tag *nd_node, 
AVD_DND_MSG *snd_msg);
+uint32_t avd_d2n_msg_snd(struct cl_cb_tag *cb, AVD_AVND *nd_node, AVD_DND_MSG 
*snd_msg);
 uint32_t avd_n2d_msg_rcv(AVD_DND_MSG *rcv_msg, NODE_ID node_id, uint16_t 
msg_fmt_ver);
 uint32_t avd_mds_cpy(MDS_CALLBACK_COPY_INFO *cpy_info);
 uint32_t avd_mds_enc(MDS_CALLBACK_ENC_INFO *enc_info);
@@ -86,25 +86,25 @@ uint32_t avd_mds_dec(MDS_CALLBACK_DEC_IN
 uint32_t avd_mds_dec_flat(MDS_CALLBACK_DEC_FLAT_INFO *dec_info);
 uint32_t avd_d2n_msg_bcast(struct cl_cb_tag *cb, AVD_DND_MSG *bcast_msg);
 
-uint32_t avd_snd_node_ack_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
uint32_t msg_id);
-uint32_t avd_snd_node_data_verify_msg(struct cl_cb_tag *cb, struct 
avd_avnd_tag *avnd);
-uint32_t avd_snd_node_info_on_fover_msg(struct cl_cb_tag *cb, struct 
avd_avnd_tag *avnd);
-uint32_t avd_snd_node_update_msg(struct cl_cb_tag *cb, struct avd_avnd_tag 
*avnd);
-uint32_t avd_snd_node_up_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
uint32_t msg_id_ack);
+uint32_t avd_snd_node_ack_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, uint32_t 
msg_id);
+uint32_t avd_snd_node_data_verify_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
+uint32_t avd_snd_node_info_on_fover_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
+uint32_t avd_snd_node_update_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
+uint32_t avd_snd_node_up_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, uint32_t 
msg_id_ack);
 uint32_t avd_snd_presence_msg(struct cl_cb_tag *cb, AVD_SU *su, bool 
term_state);
-uint32_t avd_snd_oper_state_msg(struct cl_cb_tag *cb, struct avd_avnd_tag 
*avnd, uint32_t msg_id_ack);
-uint32_t avd_snd_op_req_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
AVSV_PARAM_INFO *param_info);
+uint32_t avd_snd_oper_state_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, uint32_t 
msg_id_ack);
+uint32_t avd_snd_op_req_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, 
AVSV_PARAM_INFO *param_info);
 uint32_t avd_snd_su_msg(struct cl_cb_tag *cb, AVD_SU *su);
 uint32_t avd_snd_susi_msg(struct cl_cb_tag *cb, AVD_SU *su, struct 
avd_su_si_rel_tag *susi,
                                AVSV_SUSI_ACT actn, SaBoolT single_csi, struct 
avd_comp_csi_rel_tag*);
-uint32_t avd_snd_set_leds_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd);
+uint32_t avd_snd_set_leds_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
 
-uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, struct avd_avnd_tag *, 
AVD_CSI *,
+uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, AVD_AVND *, AVD_CSI *,
                                   AVSV_N2D_PG_TRACK_ACT_MSG_INFO *);
-uint32_t avd_snd_pg_upd_msg(struct cl_cb_tag *, struct avd_avnd_tag *, struct 
avd_comp_csi_rel_tag *,
+uint32_t avd_snd_pg_upd_msg(struct cl_cb_tag *, AVD_AVND *, struct 
avd_comp_csi_rel_tag *,
                                  SaAmfProtectionGroupChangesT, SaNameT *);
 uint32_t avd_snd_hb_msg(struct cl_cb_tag *);
-uint32_t avd_snd_comp_validation_resp(struct cl_cb_tag *cb, struct 
avd_avnd_tag *avnd,
+uint32_t avd_snd_comp_validation_resp(struct cl_cb_tag *cb, AVD_AVND *avnd,
                                            AVD_COMP *comp_ptr, AVD_DND_MSG 
*n2d_msg);
 void avsv_d2d_msg_free(AVD_D2D_MSG *);
 void avd_mds_d_enc(MDS_CALLBACK_ENC_INFO *);
diff --git a/osaf/services/saf/amf/amfd/include/node.h 
b/osaf/services/saf/amf/amfd/include/node.h
--- a/osaf/services/saf/amf/amfd/include/node.h
+++ b/osaf/services/saf/amf/amfd/include/node.h
@@ -72,10 +72,13 @@ class AVD_AMF_NG;
  * support the cluster membership service.
  */
 
-typedef struct avd_avnd_tag {
-       SaNameT name; /* DN */ 
-       char *node_name;    /* RDN value, normally the short host name */
-       SaClmClusterNodeT_4 node_info;  /* the node information of the node on
+class AVD_AVND {
+ public:
+  AVD_AVND();
+  explicit AVD_AVND(const SaNameT* dn);
+  SaNameT name; /* DN */ 
+  char *node_name;    /* RDN value, normally the short host name */
+  SaClmClusterNodeT_4 node_info;       /* the node information of the node on
                                         * which this AvND exists. The length
                                         * field of nodeName structure is in
                                         * network order. The nodename is
@@ -83,61 +86,66 @@ typedef struct avd_avnd_tag {
                                         * Checkpointing - Sent as a one time 
update.
                                         */
 
-       MDS_DEST adest;         /* the Adest address of this
+  MDS_DEST adest;              /* the Adest address of this
                                 * nodes AvND.
                                 * Checkpointing - Sent on node up.
                                 */
-   /************ AMF B.04 **************************************************/
-       SaNameT saAmfNodeClmNode;
-       char *saAmfNodeCapacity;
-       SaTimeT saAmfNodeSuFailOverProb;
-       SaUint32T saAmfNodeSuFailoverMax;
-       SaBoolT saAmfNodeAutoRepair;
-       SaBoolT saAmfNodeFailfastOnTerminationFailure;
-       SaBoolT saAmfNodeFailfastOnInstantiationFailure;
-       SaAmfAdminStateT saAmfNodeAdminState;
-       SaAmfOperationalStateT saAmfNodeOperState;
+  /************ AMF B.04 **************************************************/
+  SaNameT saAmfNodeClmNode;
+  char *saAmfNodeCapacity;
+  SaTimeT saAmfNodeSuFailOverProb;
+  SaUint32T saAmfNodeSuFailoverMax;
+  SaBoolT saAmfNodeAutoRepair;
+  SaBoolT saAmfNodeFailfastOnTerminationFailure;
+  SaBoolT saAmfNodeFailfastOnInstantiationFailure;
+  SaAmfAdminStateT saAmfNodeAdminState;
+  SaAmfOperationalStateT saAmfNodeOperState;
 
-       AVD_ADMIN_OPER_CBK admin_node_pend_cbk; /*to store any pending admin op
-                                                  callbacks on this node */
-       uint32_t su_cnt_admin_oper;     /* count to keep track SUs on this node 
-                                          undergoing node admin op */
+  AVD_ADMIN_OPER_CBK admin_node_pend_cbk;      /*to store any pending admin op
+                                                  callbacks on this node */
+  uint32_t su_cnt_admin_oper;  /* count to keep track SUs on this node 
+                                   undergoing node admin op */
 
-   /************ AMF B.04 **************************************************/
+  /************ AMF B.04 **************************************************/
 
-       AVD_AVND_STATE node_state;      /* F.S.M state of the AVND 
-                                        * Checkpointing - Sent independent 
update 
-                                        */
+  AVD_AVND_STATE node_state;   /* F.S.M state of the AVND 
+                                 * Checkpointing - Sent independent update 
+                                 */
 
-       AVD_SU *list_of_ncs_su; /* the list of NCS service units on
-                                                * this node.
-                                                */
-       AVD_SU *list_of_su;     /* the list of service units on this
-                                        * node that are application specific.
-                                        */
-       NCS_DB_LINK_LIST pg_csi_list;   /* list of csis for which pg is tracked 
+  AVD_SU *list_of_ncs_su;      /* the list of NCS service units on
+                                 * this node.
+                                 */
+  AVD_SU *list_of_su;  /* the list of service units on this
+                         * node that are application specific.
+                         */
+  NCS_DB_LINK_LIST pg_csi_list;        /* list of csis for which pg is tracked 
                                         * from this node */
 
-       AVSV_AVND_CARD type;    /* field that describes if this node is sytem
-                                * controller or not.
-                                * Checkpointing - Sent as a one time update.
-                                */
+  AVSV_AVND_CARD type; /* field that describes if this node is sytem
+                         * controller or not.
+                         * Checkpointing - Sent as a one time update.
+                         */
 
-       uint32_t rcv_msg_id;    /* The receive message id counter 
-                                * Checkpointing - Sent independent update 
-                                */
+  uint32_t rcv_msg_id; /* The receive message id counter 
+                         * Checkpointing - Sent independent update 
+                         */
 
-       uint32_t snd_msg_id;    /* The send message id counter 
-                                * Checkpointing - Sent independent update 
-                                */
+  uint32_t snd_msg_id; /* The send message id counter 
+                         * Checkpointing - Sent independent update 
+                         */
 
-       struct avd_avnd_tag *cluster_list_node_next;
-       struct avd_cluster_tag *cluster;
-       SaInvocationT clm_pend_inv; /* pending response for any clm track cb */
-       bool clm_change_start_preceded; /* to indicate there was CLM start cbk 
before CLM completed cb. */
-       bool recvr_fail_sw; /* to indicate there was node reboot because of 
node failover/switchover.*/
-       AVD_AMF_NG *admin_ng; /* points to the nodegroup on which admin 
operation is going on.*/        
-} AVD_AVND;
+  AVD_AVND *cluster_list_node_next;
+  struct avd_cluster_tag *cluster;
+  SaInvocationT clm_pend_inv; /* pending response for any clm track cb */
+  bool clm_change_start_preceded; /* to indicate there was CLM start cbk 
before CLM completed cb. */
+  bool recvr_fail_sw; /* to indicate there was node reboot because of node 
failover/switchover.*/
+  AVD_AMF_NG *admin_ng; /* points to the nodegroup on which admin operation is 
going on.*/
+ private:
+  void initialize();
+  // disallow copy and assign
+  AVD_AVND(const AVD_AVND&);
+  void operator=(const AVD_AVND&);
+};
 
 bool operator<(const AVD_AVND& lhs, const AVD_AVND& rhs);
 
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
@@ -347,7 +347,7 @@ public:
         * @return
         */
        virtual uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su,
-                       struct avd_avnd_tag *avnd) = 0;
+                       AVD_AVND *avnd) = 0;
 
        /**
         * Handle successful SUSI assignment
@@ -427,7 +427,7 @@ public:
        uint32_t sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg);
        uint32_t su_insvc(AVD_CL_CB *cb, AVD_SU *su);
        uint32_t su_fault(AVD_CL_CB *cb, AVD_SU *su);
-       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, struct avd_avnd_tag 
*avnd);
+       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, AVD_AVND *avnd);
        uint32_t susi_success(AVD_CL_CB *cb, AVD_SU *su,
                struct avd_su_si_rel_tag *susi, AVSV_SUSI_ACT act, 
SaAmfHAStateT state);
        uint32_t susi_failed(AVD_CL_CB *cb, AVD_SU *su,
@@ -459,7 +459,7 @@ public:
        uint32_t sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg);
        uint32_t su_insvc(AVD_CL_CB *cb, AVD_SU *su);
        uint32_t su_fault(AVD_CL_CB *cb, AVD_SU *su);
-       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, struct avd_avnd_tag 
*avnd);
+       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, AVD_AVND *avnd);
        uint32_t susi_success(AVD_CL_CB *cb, AVD_SU *su,
                struct avd_su_si_rel_tag *susi, AVSV_SUSI_ACT act, 
SaAmfHAStateT state);
        uint32_t susi_failed(AVD_CL_CB *cb, AVD_SU *su,
@@ -482,7 +482,7 @@ public:
        uint32_t sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg);
        uint32_t su_insvc(AVD_CL_CB *cb, AVD_SU *su);
        uint32_t su_fault(AVD_CL_CB *cb, AVD_SU *su);
-       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, struct avd_avnd_tag 
*avnd);
+       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, AVD_AVND *avnd);
        uint32_t susi_success(AVD_CL_CB *cb, AVD_SU *su,
                struct avd_su_si_rel_tag *susi, AVSV_SUSI_ACT act, 
SaAmfHAStateT state);
        uint32_t susi_failed(AVD_CL_CB *cb, AVD_SU *su,
@@ -502,7 +502,7 @@ public:
        uint32_t sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg);
        uint32_t su_insvc(AVD_CL_CB *cb, AVD_SU *su);
        uint32_t su_fault(AVD_CL_CB *cb, AVD_SU *su);
-       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, struct avd_avnd_tag 
*avnd);
+       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, AVD_AVND *avnd);
        uint32_t susi_success(AVD_CL_CB *cb, AVD_SU *su,
                struct avd_su_si_rel_tag *susi, AVSV_SUSI_ACT act, 
SaAmfHAStateT state);
        uint32_t susi_failed(AVD_CL_CB *cb, AVD_SU *su,
@@ -523,7 +523,7 @@ public:
        uint32_t sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg);
        uint32_t su_insvc(AVD_CL_CB *cb, AVD_SU *su);
        uint32_t su_fault(AVD_CL_CB *cb, AVD_SU *su);
-       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, struct avd_avnd_tag 
*avnd);
+       uint32_t su_admin_down(AVD_CL_CB *cb, AVD_SU *su, AVD_AVND *avnd);
        uint32_t susi_success(AVD_CL_CB *cb, AVD_SU *su,
                struct avd_su_si_rel_tag *susi, AVSV_SUSI_ACT act, 
SaAmfHAStateT state);
        uint32_t susi_failed(AVD_CL_CB *cb, AVD_SU *su,
diff --git a/osaf/services/saf/amf/amfd/include/su.h 
b/osaf/services/saf/amf/amfd/include/su.h
--- a/osaf/services/saf/amf/amfd/include/su.h
+++ b/osaf/services/saf/amf/amfd/include/su.h
@@ -86,7 +86,7 @@ class AVD_SU {
        int su_act_state; // not used, kept for EDU, remove later
 
        AVD_SG *sg_of_su;       /* the service group of this SU */
-       struct avd_avnd_tag *su_on_node;        /*  the node on which this SU 
resides */
+       AVD_AVND *su_on_node;   /*  the node on which this SU resides */
        struct avd_su_si_rel_tag *list_of_susi; /* the list of su si 
relationship elements */
 
        // TODO: use some container for the comp list
@@ -118,7 +118,7 @@ class AVD_SU {
        void set_term_state(bool state);
        void remove_from_model();
        void set_su_switch(SaToggleState state);
-       avd_avnd_tag *get_node_ptr(void);
+       AVD_AVND *get_node_ptr(void);
        bool is_in_service(void);
        bool is_instantiable(void);
        void reset_all_comps_assign_flag();
diff --git a/osaf/services/saf/amf/amfd/include/util.h 
b/osaf/services/saf/amf/amfd/include/util.h
--- a/osaf/services/saf/amf/amfd/include/util.h
+++ b/osaf/services/saf/amf/amfd/include/util.h
@@ -89,7 +89,7 @@ extern const char *avd_proxy_status_name
 extern const char *amf_recovery[];
 
 struct cl_cb_tag;
-struct avd_avnd_tag;
+class AVD_AVND;
 struct avd_hlt_tag;
 struct avd_su_si_rel_tag;
 class AVD_COMP;
@@ -97,36 +97,36 @@ struct avd_comp_csi_rel_tag;
 class AVD_CSI;
 
 int get_child_dn_from_ass_dn(const SaNameT *ass_dn, SaNameT *child_dn);
-void avd_d2n_reboot_snd(struct avd_avnd_tag *node);
+void avd_d2n_reboot_snd(AVD_AVND *node);
 bool admin_op_is_valid(SaImmAdminOperationIdT opId, AVSV_AMF_CLASS_ID 
class_id);
 void amflog(int priority, const char *format, ...);
 void d2n_msg_free(AVD_DND_MSG *msg);
 uint32_t avd_d2n_msg_dequeue(struct cl_cb_tag *cb);
-uint32_t avd_d2n_msg_snd(struct cl_cb_tag *cb, struct avd_avnd_tag *nd_node, 
AVD_DND_MSG *snd_msg);
+uint32_t avd_d2n_msg_snd(struct cl_cb_tag *cb, AVD_AVND *nd_node, AVD_DND_MSG 
*snd_msg);
 uint32_t avd_n2d_msg_rcv(AVD_DND_MSG *rcv_msg, NODE_ID node_id, uint16_t 
msg_fmt_ver);
 uint32_t avd_d2n_msg_bcast(struct cl_cb_tag *cb, AVD_DND_MSG *bcast_msg);
 
-uint32_t avd_snd_node_ack_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
uint32_t msg_id);
-uint32_t avd_snd_node_data_verify_msg(struct cl_cb_tag *cb, struct 
avd_avnd_tag *avnd);
-uint32_t avd_snd_node_info_on_fover_msg(struct cl_cb_tag *cb, struct 
avd_avnd_tag *avnd);
-uint32_t avd_snd_node_update_msg(struct cl_cb_tag *cb, struct avd_avnd_tag 
*avnd);
-uint32_t avd_snd_node_up_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
uint32_t msg_id_ack);
+uint32_t avd_snd_node_ack_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, uint32_t 
msg_id);
+uint32_t avd_snd_node_data_verify_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
+uint32_t avd_snd_node_info_on_fover_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
+uint32_t avd_snd_node_update_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
+uint32_t avd_snd_node_up_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, uint32_t 
msg_id_ack);
 uint32_t avd_snd_presence_msg(struct cl_cb_tag *cb, AVD_SU *su, bool 
term_state);
-uint32_t avd_snd_oper_state_msg(struct cl_cb_tag *cb, struct avd_avnd_tag 
*avnd, uint32_t msg_id_ack);
-uint32_t avd_snd_op_req_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
AVSV_PARAM_INFO *param_info);
-uint32_t avd_snd_su_reg_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd, 
bool fail_over);
+uint32_t avd_snd_oper_state_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, uint32_t 
msg_id_ack);
+uint32_t avd_snd_op_req_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, 
AVSV_PARAM_INFO *param_info);
+uint32_t avd_snd_su_reg_msg(struct cl_cb_tag *cb, AVD_AVND *avnd, bool 
fail_over);
 uint32_t avd_snd_su_msg(struct cl_cb_tag *cb, AVD_SU *su);
 uint32_t avd_snd_comp_msg(struct cl_cb_tag *cb, AVD_COMP *comp);
 uint32_t avd_snd_susi_msg(struct cl_cb_tag *cb, AVD_SU *su, struct 
avd_su_si_rel_tag *susi,
                                AVSV_SUSI_ACT actn, bool single_csi, struct 
avd_comp_csi_rel_tag*);
-uint32_t avd_snd_set_leds_msg(struct cl_cb_tag *cb, struct avd_avnd_tag *avnd);
+uint32_t avd_snd_set_leds_msg(struct cl_cb_tag *cb, AVD_AVND *avnd);
 
-uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, struct avd_avnd_tag *, 
AVD_CSI *,
+uint32_t avd_snd_pg_resp_msg(struct cl_cb_tag *, AVD_AVND *, AVD_CSI *,
                                   AVSV_N2D_PG_TRACK_ACT_MSG_INFO *);
-uint32_t avd_snd_pg_upd_msg(struct cl_cb_tag *, struct avd_avnd_tag *, struct 
avd_comp_csi_rel_tag *,
+uint32_t avd_snd_pg_upd_msg(struct cl_cb_tag *, AVD_AVND *, struct 
avd_comp_csi_rel_tag *,
                                  SaAmfProtectionGroupChangesT, SaNameT *);
 uint32_t avd_snd_hb_msg(struct cl_cb_tag *);
-uint32_t avd_snd_comp_validation_resp(struct cl_cb_tag *cb, struct 
avd_avnd_tag *avnd,
+uint32_t avd_snd_comp_validation_resp(struct cl_cb_tag *cb, AVD_AVND *avnd,
                                            AVD_COMP *comp_ptr, AVD_DND_MSG 
*n2d_msg);
 void avsv_d2d_msg_free(AVD_D2D_MSG *);
 uint32_t avd_d2d_msg_snd(struct cl_cb_tag *, AVD_D2D_MSG *);
@@ -138,7 +138,7 @@ extern SaAisErrorT avd_object_name_creat
 int amfd_file_dump(const char* filename);
 
 extern int avd_admin_op_msg_snd(const SaNameT *dn, AVSV_AMF_CLASS_ID class_id,
-       SaAmfAdminOperationIdT opId, struct avd_avnd_tag *node);
+       SaAmfAdminOperationIdT opId, AVD_AVND *node);
 extern const char* avd_getparent(const char* dn);
 extern void amfd_switch(AVD_CL_CB *cb);
 extern uint32_t avd_post_amfd_switch_role_change_evt(AVD_CL_CB *cb, 
SaAmfHAStateT role);
diff --git a/osaf/services/saf/amf/amfd/node.cc 
b/osaf/services/saf/amf/amfd/node.cc
--- a/osaf/services/saf/amf/amfd/node.cc
+++ b/osaf/services/saf/amf/amfd/node.cc
@@ -78,30 +78,71 @@ void avd_node_db_add(AVD_AVND *node)
        }
 }
 
+//
+void AVD_AVND::initialize() {
+  name = {};
+  node_name = {};
+  node_info = {};
+  node_info.member = SA_FALSE;
+  adest = {};
+  saAmfNodeClmNode = {};
+  saAmfNodeCapacity = {};
+  saAmfNodeSuFailOverProb = {};
+  saAmfNodeSuFailoverMax = {};
+  saAmfNodeAutoRepair = {};
+  saAmfNodeFailfastOnTerminationFailure = {};
+  saAmfNodeFailfastOnInstantiationFailure = {};
+  saAmfNodeAdminState = SA_AMF_ADMIN_UNLOCKED;
+  saAmfNodeOperState = SA_AMF_OPERATIONAL_DISABLED;
+  admin_node_pend_cbk = {};
+  su_cnt_admin_oper = {};
+  node_state = AVD_AVND_STATE_ABSENT;
+  list_of_ncs_su = {};
+  list_of_su = {};
+  pg_csi_list = {};
+  pg_csi_list.order = NCS_DBLIST_ANY_ORDER;
+  pg_csi_list.cmp_cookie = avsv_dblist_uns32_cmp;
+  type = AVSV_AVND_CARD_PAYLOAD;
+  rcv_msg_id = {};
+  snd_msg_id = {};
+  cluster_list_node_next = {};
+  cluster = {};
+  clm_pend_inv = {};
+  clm_change_start_preceded = {};
+  recvr_fail_sw = {};
+  admin_ng = {};
+}
+
+//
+AVD_AVND::AVD_AVND() {
+  initialize();
+}
+
+//
+AVD_AVND::AVD_AVND(const SaNameT *dn) {
+
+  char *tmp_node_name;
+  SaNameT rdn = *dn;
+
+  initialize();
+
+  memcpy(&name.value, dn->value, dn->length);
+  name.length = dn->length;
+  tmp_node_name = strchr((char*)rdn.value, ',');
+  *tmp_node_name = 0;
+  tmp_node_name = strchr((char*)rdn.value, '=');
+  tmp_node_name++;
+  node_name = StrDup(tmp_node_name);
+}
+
+//
 AVD_AVND *avd_node_new(const SaNameT *dn)
 {
-       AVD_AVND *node;
-       char *node_name;
-       SaNameT rdn = *dn;
+  AVD_AVND *node;
 
-       node = new AVD_AVND();
+  node = new AVD_AVND(dn);
 
-       memcpy(node->name.value, dn->value, dn->length);
-       node->name.length = dn->length;
-       node_name = strchr((char*)rdn.value, ',');
-       *node_name = 0;
-       node_name = strchr((char*)rdn.value, '=');
-       node_name++;
-       node->node_name = StrDup(node_name);
-       node->pg_csi_list.order = NCS_DBLIST_ANY_ORDER;
-       node->pg_csi_list.cmp_cookie = avsv_dblist_uns32_cmp;
-       node->saAmfNodeAdminState = SA_AMF_ADMIN_UNLOCKED;
-       node->saAmfNodeOperState = SA_AMF_OPERATIONAL_DISABLED;
-       node->node_state = AVD_AVND_STATE_ABSENT;
-       node->node_info.member = SA_FALSE;
-       node->type = AVSV_AVND_CARD_PAYLOAD;
-
-       return node;
+  return node;
 }
 
 void avd_node_delete(AVD_AVND *node)
diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc
--- a/osaf/services/saf/amf/amfd/su.cc
+++ b/osaf/services/saf/amf/amfd/su.cc
@@ -1963,7 +1963,7 @@ void AVD_SU::set_su_switch(SaToggleState
        m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, AVSV_CKPT_SU_SWITCH);
 }
 
-struct avd_avnd_tag *AVD_SU::get_node_ptr(void) {
+AVD_AVND *AVD_SU::get_node_ptr(void) {
         if (su_is_external == true)
                 return avd_cb->ext_comp_info.local_avnd_node;
         else
@@ -1978,7 +1978,7 @@ struct avd_avnd_tag *AVD_SU::get_node_pt
  * @return true if SU can be made in-service
  */
 bool AVD_SU::is_in_service(void) {
-       struct avd_avnd_tag *node = get_node_ptr();
+       AVD_AVND *node = get_node_ptr();
        const AVD_SG *sg = sg_of_su;
        const AVD_APP *app = sg->app;
 
@@ -2012,7 +2012,7 @@ bool AVD_SU::is_in_service(void) {
  * @return true if SU can be made in-service
  */
 bool AVD_SU::is_instantiable(void) {
-        struct avd_avnd_tag *node = get_node_ptr();
+        AVD_AVND *node = get_node_ptr();
         const AVD_SG *sg = sg_of_su;
         const AVD_APP *app = sg->app;
 

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

Reply via email to