Hi Hoang,
We don't required any new event like CPND_EVT_D2ND_CKPT_CREATE_2
even though NEW CPND might might be sending event to OLD CPD.
In general Opensaf rule is that any newly introduce enhancement/feature
functionality can be used
once Cluster is completely upgraded to new version.So while upgrading
(in-service )
the SA_ENABLE_EXTENDED_NAMES will be false ( longDnsAllowed=0
of opensafImm=opensafImm,safApp=safImmService) , once clusters upgraded
to new version then only
ongDnsAllowed set to 1, ("immcfg -o safImmService -m
opensafImm=opensafImm,safApp=safImmService -a longDnsAllowed=1")
so remove new event merge the content in to a single exist old event ,
and do additionl functonality based on the state of longDnsAllowed=1 or 0
-AVM
On 7/21/2016 3:04 PM, Hoang Vo wrote:
> osaf/libs/agents/saf/cpa/cpa_api.c | 12 +++++++++---
> osaf/libs/agents/saf/cpa/cpa_mds.c | 2 +-
> osaf/libs/common/cpsv/cpsv_evt.c | 1 +
> osaf/services/saf/cpsv/cpd/cpd_evt.c | 10 +++++++---
> osaf/services/saf/cpsv/cpd/cpd_mds.c | 3 ++-
> osaf/services/saf/cpsv/cpd/cpd_proc.c | 2 +-
> osaf/services/saf/cpsv/cpnd/cpnd_evt.c | 26 ++++++++++++++++----------
> osaf/services/saf/cpsv/cpnd/cpnd_mds.c | 4 ++--
> osaf/services/saf/cpsv/cpnd/cpnd_proc.c | 6 +++---
> 9 files changed, 42 insertions(+), 24 deletions(-)
>
>
> diff --git a/osaf/libs/agents/saf/cpa/cpa_api.c
> b/osaf/libs/agents/saf/cpa/cpa_api.c
> --- a/osaf/libs/agents/saf/cpa/cpa_api.c
> +++ b/osaf/libs/agents/saf/cpa/cpa_api.c
> @@ -880,6 +880,8 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH
> }
>
> ckpt_name = osaf_extended_name_borrow(checkpointName);
> + if (strlen(ckpt_name) >= kOsafMaxDnLength)
> + return SA_AIS_ERR_INVALID_PARAM;
>
> /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02
> Section 3.6.1 saCkptCheckpointOpen() and
> saCkptCheckpointOpenAsync(), Return Values */
> @@ -981,7 +983,7 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH
> /* Populate & Send the Open Event to CPND */
> memset(&evt, 0, sizeof(CPSV_EVT));
> evt.type = CPSV_EVT_TYPE_CPND;
> - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN;
> + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN_2;
> evt.info.cpnd.info.openReq.client_hdl = ckptHandle;
> evt.info.cpnd.info.openReq.lcl_ckpt_hdl = lc_node->lcl_ckpt_hdl;
>
> @@ -1192,6 +1194,8 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
> }
>
> ckpt_name = osaf_extended_name_borrow(checkpointName);
> + if (strlen(ckpt_name) >= kOsafMaxDnLength)
> + return SA_AIS_ERR_INVALID_PARAM;
>
> /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02
> Section 3.6.1 saCkptCheckpointOpen() and
> saCkptCheckpointOpenAsync(), Return Values */
> @@ -1277,7 +1281,7 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa
> /* Populate & Send the Open Event to CPND */
> memset(&evt, 0, sizeof(CPSV_EVT));
> evt.type = CPSV_EVT_TYPE_CPND;
> - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN;
> + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN_2;
> evt.info.cpnd.info.openReq.client_hdl = ckptHandle;
> evt.info.cpnd.info.openReq.lcl_ckpt_hdl = lc_node->lcl_ckpt_hdl;
>
> @@ -1597,6 +1601,8 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp
> }
>
> ckpt_name = osaf_extended_name_borrow(checkpointName);
> + if (strlen(ckpt_name) >= kOsafMaxDnLength)
> + return SA_AIS_ERR_INVALID_PARAM;
>
> /* retrieve CPA CB */
> m_CPA_RETRIEVE_CB(cb);
> @@ -1635,7 +1641,7 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp
> /* Populate evt.info.cpnd.info.unlinkReq & Call MDS sync Send */
> memset(&evt, 0, sizeof(CPSV_EVT));
> evt.type = CPSV_EVT_TYPE_CPND;
> - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_UNLINK;
> + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_UNLINK_2;
>
> osaf_extended_name_lend(ckpt_name,
> &evt.info.cpnd.info.ulinkReq.ckpt_name);
>
> diff --git a/osaf/libs/agents/saf/cpa/cpa_mds.c
> b/osaf/libs/agents/saf/cpa/cpa_mds.c
> --- a/osaf/libs/agents/saf/cpa/cpa_mds.c
> +++ b/osaf/libs/agents/saf/cpa/cpa_mds.c
> @@ -515,7 +515,7 @@ static uint32_t cpa_mds_svc_evt(CPA_CB *
> /* Populate & Send the Open Event to CPND */
> memset(&evt, 0, sizeof(CPSV_EVT));
> evt.type = CPSV_EVT_TYPE_CPND;
> - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE;
> + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE_2;
> evt.info.cpnd.info.ckptListUpdate.client_hdl =
> lc_node->cl_hdl;
> osaf_extended_name_lend(lc_node->ckpt_name,
> &evt.info.cpnd.info.ckptListUpdate.ckpt_name);
>
> diff --git a/osaf/libs/common/cpsv/cpsv_evt.c
> b/osaf/libs/common/cpsv/cpsv_evt.c
> --- a/osaf/libs/common/cpsv/cpsv_evt.c
> +++ b/osaf/libs/common/cpsv/cpsv_evt.c
> @@ -2414,6 +2414,7 @@ uint32_t cpsv_encode_extended_name(NCS_U
> if(!osaf_is_an_extended_name(name))
> return NCSCC_RC_SUCCESS;
>
> + TRACE("length = %d", name->length);
> SaConstStringT value = osaf_extended_name_borrow(name);
> uint16_t length = osaf_extended_name_length(name);
>
> diff --git a/osaf/services/saf/cpsv/cpd/cpd_evt.c
> b/osaf/services/saf/cpsv/cpd/cpd_evt.c
> --- a/osaf/services/saf/cpsv/cpd/cpd_evt.c
> +++ b/osaf/services/saf/cpsv/cpd/cpd_evt.c
> @@ -110,6 +110,7 @@ void cpd_process_evt(CPSV_EVT *evt)
> (void)cpd_evt_proc_timer_expiry(cb, &evt->info.cpd);
> break;
> case CPD_EVT_ND2D_CKPT_CREATE:
> + case CPD_EVT_ND2D_CKPT_CREATE_2:
> (void)cpd_evt_proc_ckpt_create(cb, &evt->info.cpd, &evt->sinfo);
> break;
> case CPD_EVT_ND2D_CKPT_USR_INFO:
> @@ -119,6 +120,7 @@ void cpd_process_evt(CPSV_EVT *evt)
> (void)cpd_evt_proc_ckpt_sec_info_upd(cb, &evt->info.cpd,
> &evt->sinfo);
> break;
> case CPD_EVT_ND2D_CKPT_UNLINK:
> + case CPD_EVT_ND2D_CKPT_UNLINK_2:
> (void)cpd_evt_proc_ckpt_unlink(cb, &evt->info.cpd, &evt->sinfo);
> break;
> case CPD_EVT_ND2D_CKPT_RDSET:
> @@ -131,12 +133,14 @@ void cpd_process_evt(CPSV_EVT *evt)
> (void)cpd_evt_proc_ckpt_destroy(cb, &evt->info.cpd,
> &evt->sinfo);
> break;
> case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME:
> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2:
> (void)cpd_evt_proc_ckpt_destroy_byname(cb, &evt->info.cpd,
> &evt->sinfo);
> break;
> case CPD_EVT_MDS_QUIESCED_ACK_RSP:
> (void)cpd_evt_mds_quiesced_ack_rsp(cb, &evt->info.cpd,
> &evt->sinfo);
> break;
> case CPD_EVT_ND2D_CKPT_INFO_UPDATE:
> + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2:
> (void)cpd_evt_proc_ckpt_info_upd(cb, &evt->info.cpd,
> &evt->sinfo);
> break;
>
> @@ -1484,15 +1488,15 @@ static uint32_t cpd_evt_proc_mds_evt(CPD
> static void cpd_evt_free(CPSV_EVT *evt)
> {
> switch (evt->info.cpd.type) {
> - case CPD_EVT_ND2D_CKPT_CREATE:
> + case CPD_EVT_ND2D_CKPT_CREATE_2:
> if
> (osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_create.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_create.ckpt_name));
> break;
> - case CPD_EVT_ND2D_CKPT_UNLINK:
> + case CPD_EVT_ND2D_CKPT_UNLINK_2:
> if
> (osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_ulink.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_ulink.ckpt_name));
> break;
> - case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME:
> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2:
> if
> (osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_destroy_byname.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_destroy_byname.ckpt_name));
> break;
> diff --git a/osaf/services/saf/cpsv/cpd/cpd_mds.c
> b/osaf/services/saf/cpsv/cpd/cpd_mds.c
> --- a/osaf/services/saf/cpsv/cpd/cpd_mds.c
> +++ b/osaf/services/saf/cpsv/cpd/cpd_mds.c
> @@ -333,7 +333,7 @@ static uint32_t cpd_mds_enc(CPD_CB *cb,
>
> if (pevt->type == CPSV_EVT_TYPE_CPND) {
> switch (pevt->info.cpnd.type) {
> - case CPND_EVT_D2ND_CKPT_CREATE:
> + case CPND_EVT_D2ND_CKPT_CREATE_2:
>
> pstream = ncs_enc_reserve_space(io_uba, 12);
> if (!pstream)
> @@ -431,6 +431,7 @@ static uint32_t cpd_mds_dec(CPD_CB *cb,
> return rc;
>
> case CPD_EVT_ND2D_CKPT_INFO_UPDATE:
> + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2:
> ncs_dec_skip_space(dec_info->io_uba, 8);
> rc =
> cpsv_nd2d_ckpt_info_update_decode(&msg_ptr->info.cpd.info.ckpt_info,
> dec_info->io_uba);
> if (rc != NCSCC_RC_SUCCESS) {
> diff --git a/osaf/services/saf/cpsv/cpd/cpd_proc.c
> b/osaf/services/saf/cpsv/cpd/cpd_proc.c
> --- a/osaf/services/saf/cpsv/cpd/cpd_proc.c
> +++ b/osaf/services/saf/cpsv/cpd/cpd_proc.c
> @@ -61,7 +61,7 @@ uint32_t cpd_noncolloc_ckpt_rep_create(C
> /* Send the Replica create info to CPND */
> memset(&send_evt, 0, sizeof(CPSV_EVT));
> send_evt.type = CPSV_EVT_TYPE_CPND;
> - send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE;
> + send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE_2;
>
> osaf_extended_name_lend(map_info->ckpt_name,
> &send_evt.info.cpnd.info.ckpt_create.ckpt_name);
>
> diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
> b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
> --- a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
> +++ b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c
> @@ -200,6 +200,7 @@ void cpnd_process_evt(CPSV_EVT *evt)
> break;
>
> case CPND_EVT_A2ND_CKPT_OPEN:
> + case CPND_EVT_A2ND_CKPT_OPEN_2:
> (void)cpnd_evt_proc_ckpt_open(cb, &evt->info.cpnd, &evt->sinfo);
> break;
>
> @@ -208,6 +209,7 @@ void cpnd_process_evt(CPSV_EVT *evt)
> break;
>
> case CPND_EVT_A2ND_CKPT_UNLINK:
> + case CPND_EVT_A2ND_CKPT_UNLINK_2:
> (void)cpnd_evt_proc_ckpt_unlink(cb, &evt->info.cpnd,
> &evt->sinfo);
> break;
>
> @@ -313,6 +315,7 @@ void cpnd_process_evt(CPSV_EVT *evt)
>
> case CPND_EVT_D2ND_CKPT_CREATE: /* happens for non-collocated and
> received
> by CPNDs on SCXB */
> + case CPND_EVT_D2ND_CKPT_CREATE_2:
> (void)cpnd_evt_proc_ckpt_create(cb, &evt->info.cpnd,
> &evt->sinfo);
> break;
>
> @@ -360,6 +363,7 @@ void cpnd_process_evt(CPSV_EVT *evt)
> break;
>
> case CPND_EVT_A2ND_CKPT_LIST_UPDATE:
> + case CPND_EVT_A2ND_CKPT_LIST_UPDATE_2:
> (void) cpnd_evt_proc_ckpt_ckpt_list_update(cb, &evt->info.cpnd,
> &evt->sinfo);
> break;
>
> @@ -708,7 +712,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
>
> /* ckpt is not present locally */
> /* if not present send to cpd,get the details...
> - Send the CPD_EVT_ND2D_CKPT_CREATE evt to CPD to get the ckpt details
> + Send the CPD_EVT_ND2D_CKPT_CREATE_2 evt to CPD to get the ckpt
> details
> Fill send_evt.info.cpd.info.ckpt_create */
> if (sinfo->stype == MDS_SENDTYPE_SNDRSP) {
> timeout =
> m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(evt->info.openReq.timeout);
> @@ -718,7 +722,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
> timeout = CPSV_WAIT_TIME;
>
> send_evt.type = CPSV_EVT_TYPE_CPD;
> - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_CREATE;
> + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_CREATE_2;
>
> osaf_extended_name_lend(ckpt_name,
> &send_evt.info.cpd.info.ckpt_create.ckpt_name);
> send_evt.info.cpd.info.ckpt_create.attributes =
> evt->info.openReq.ckpt_attrib;
> @@ -743,7 +747,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(
>
> memset(node, '\0', sizeof(CPND_CPD_DEFERRED_REQ_NODE));
> node->evt.type = CPSV_EVT_TYPE_CPD;
> - node->evt.info.cpd.type =
> CPD_EVT_ND2D_CKPT_DESTROY_BYNAME;
> + node->evt.info.cpd.type =
> CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2;
> osaf_extended_name_lend(ckpt_name,
> &node->evt.info.cpd.info.ckpt_destroy_byname.ckpt_name);
>
> ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, (void
> *)node);
> @@ -1151,7 +1155,7 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
> }
>
> send_evt.type = CPSV_EVT_TYPE_CPD;
> - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_UNLINK;
> + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_UNLINK_2;
> send_evt.info.cpd.info.ckpt_ulink.ckpt_name =
> evt->info.ulinkReq.ckpt_name;
>
> rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD, cb->cpd_mdest_id,
> &send_evt, &out_evt, CPSV_WAIT_TIME);
> @@ -3954,13 +3958,13 @@ static uint32_t cpnd_proc_cpd_new_active
> TRACE_4("cpnd cpd new active destroy failed
> with error:%d",out_evt->info.cpnd.info.destroy_ack.error);
> }
> break;
> - case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME:
> + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2:
> if (out_evt &&
> out_evt->info.cpnd.info.destroy_ack.error != SA_AIS_OK) {
> TRACE_4("cpnd cpd new active destroy byname
> failed with error:%d",out_evt->info.cpnd.info.destroy_ack.error);
> }
> break;
>
> - case CPD_EVT_ND2D_CKPT_UNLINK:
> + case CPD_EVT_ND2D_CKPT_UNLINK_2:
> if (out_evt && out_evt->info.cpnd.info.ulink_ack.error
> != SA_AIS_OK) {
> TRACE_4("cpnd cpd new active unlink failed with
> error:%d",out_evt->info.cpnd.info.ulink_ack.error);
> }
> @@ -4628,16 +4632,18 @@ uint32_t cpnd_evt_destroy(CPSV_EVT *evt)
> }
> break;
> }
> - } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_OPEN) {
> + } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_OPEN_2) {
> if
> (osaf_is_an_extended_name(&evt->info.cpnd.info.openReq.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpnd.info.openReq.ckpt_name));
> - } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_UNLINK) {
> + } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_UNLINK_2) {
> if
> (osaf_is_an_extended_name(&evt->info.cpnd.info.ulinkReq.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpnd.info.ulinkReq.ckpt_name));
> - } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_LIST_UPDATE) {
> + } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_LIST_UPDATE_2) {
> if
> (osaf_is_an_extended_name(&evt->info.cpnd.info.ckptListUpdate.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpnd.info.ckptListUpdate.ckpt_name));
> - } else if (evt->info.cpnd.type == CPND_EVT_D2ND_CKPT_CREATE) {
> + } else if (evt->info.cpnd.type == CPND_EVT_D2ND_CKPT_CREATE_2) {
> + if (evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list != NULL)
> +
> m_MMGR_FREE_CPSV_SYS_MEMORY(evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list);
> if
> (osaf_is_an_extended_name(&evt->info.cpnd.info.ckpt_create.ckpt_name))
> free((void
> *)osaf_extended_name_borrow(&evt->info.cpnd.info.ckpt_create.ckpt_name));
> }
> diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_mds.c
> b/osaf/services/saf/cpsv/cpnd/cpnd_mds.c
> --- a/osaf/services/saf/cpsv/cpnd/cpnd_mds.c
> +++ b/osaf/services/saf/cpsv/cpnd/cpnd_mds.c
> @@ -425,7 +425,7 @@ static uint32_t cpnd_mds_enc(CPND_CB *cb
> TRACE_LEAVE();
> return rc;
>
> - case CPD_EVT_ND2D_CKPT_INFO_UPDATE:
> + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2:
> pstream = ncs_enc_reserve_space(io_uba, 8);
> if (!pstream)
> return m_CPSV_DBG_SINK(NCSCC_RC_FAILURE,
> @@ -593,7 +593,7 @@ static uint32_t cpnd_mds_dec(CPND_CB *cb
> rc =
> cpsv_refcnt_ckptid_decode(&msg_ptr->info.cpnd.info.refCntsetReq,dec_info->io_uba);
> goto free;
>
> - case CPND_EVT_D2ND_CKPT_CREATE:
> + case CPND_EVT_D2ND_CKPT_CREATE_2:
> ncs_dec_skip_space(dec_info->io_uba, 12);
> rc =
> cpsv_d2nd_ckpt_create_2_decode(&msg_ptr->info.cpnd.info.ckpt_create,
> dec_info->io_uba);
> goto free;
> diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> --- a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> +++ b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> @@ -2529,7 +2529,7 @@ void cpnd_proc_ckpt_info_update(CPND_CB
> LOG_NO("cpnd_proc_update_cpd_data::ckpt_name = %s[%llu]",
> (char*)ckpt_node->ckpt_name,
> ckpt_node->ckpt_id);
> send_evt.type = CPSV_EVT_TYPE_CPD;
> - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE;
> + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE_2;
> send_evt.info.cpd.info.ckpt_info.ckpt_id = ckpt_node->ckpt_id;
> osaf_extended_name_lend(ckpt_node->ckpt_name,
> &send_evt.info.cpd.info.ckpt_info.ckpt_name);
> send_evt.info.cpd.info.ckpt_info.attributes =
> ckpt_node->create_attrib;
> @@ -2550,12 +2550,12 @@ void cpnd_proc_ckpt_info_update(CPND_CB
> else
> send_evt.info.cpd.info.ckpt_info.is_last = false;
>
> - LOG_NO("cpnd_proc_update_cpd_data::send
> CPD_EVT_ND2D_CKPT_INFO_UPDATE");
> + LOG_NO("cpnd_proc_update_cpd_data::send
> CPD_EVT_ND2D_CKPT_INFO_UPDATE_2");
> rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD,
> cb->cpd_mdest_id, &send_evt, &out_evt,
> CPSV_WAIT_TIME);
>
> if (rc != NCSCC_RC_SUCCESS) {
> - LOG_ER("cpnd_proc_update_cpd_data::fail to send
> CPD_EVT_ND2D_CKPT_INFO_UPDATE");
> + LOG_ER("cpnd_proc_update_cpd_data::fail to send
> CPD_EVT_ND2D_CKPT_INFO_UPDATE_2");
> }
>
> if (out_evt == NULL) {
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel