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