osaf/libs/common/ntfsv/include/ntfsv_mem.h | 7 + osaf/libs/common/ntfsv/include/ntfsv_msg.h | 1 + osaf/libs/common/ntfsv/ntfsv_mem.c | 159 +++++++++++++++++++++++++++++ 3 files changed, 167 insertions(+), 0 deletions(-)
The patch contains support for cloud resilience feature in NTF libs common which are mostly used in Agent code diff --git a/osaf/libs/common/ntfsv/include/ntfsv_mem.h b/osaf/libs/common/ntfsv/include/ntfsv_mem.h --- a/osaf/libs/common/ntfsv/include/ntfsv_mem.h +++ b/osaf/libs/common/ntfsv/include/ntfsv_mem.h @@ -102,6 +102,13 @@ extern "C" { size_t ntfs_sanamet_length(const SaNameT* pName); void ntfs_sanamet_steal(SaStringT value, size_t length, SaNameT* pName); void ntfs_sanamet_alloc(SaConstStringT value, size_t length, SaNameT* pName); + + SaAisErrorT ntfsv_copy_ntf_filter_header(SaNtfNotificationFilterHeaderT*, const SaNtfNotificationFilterHeaderT*); + SaAisErrorT ntfsv_copy_ntf_filter_alarm(SaNtfAlarmNotificationFilterT*, const SaNtfAlarmNotificationFilterT*); + SaAisErrorT ntfsv_copy_ntf_filter_sec_alarm(SaNtfSecurityAlarmNotificationFilterT*, const SaNtfSecurityAlarmNotificationFilterT*); + SaAisErrorT ntfsv_copy_ntf_filter_state_ch(SaNtfStateChangeNotificationFilterT*, const SaNtfStateChangeNotificationFilterT*); + SaAisErrorT ntfsv_copy_ntf_filter_obj_cr_del(SaNtfObjectCreateDeleteNotificationFilterT*, const SaNtfObjectCreateDeleteNotificationFilterT*); + SaAisErrorT ntfsv_copy_ntf_filter_attr_ch(SaNtfAttributeChangeNotificationFilterT*, const SaNtfAttributeChangeNotificationFilterT*); #ifdef __cplusplus } #endif diff --git a/osaf/libs/common/ntfsv/include/ntfsv_msg.h b/osaf/libs/common/ntfsv/include/ntfsv_msg.h --- a/osaf/libs/common/ntfsv/include/ntfsv_msg.h +++ b/osaf/libs/common/ntfsv/include/ntfsv_msg.h @@ -60,6 +60,7 @@ as mentioned in LOGSV PR doc Section 3.5 /* NTFSV Callback enums */ typedef enum { + NTFSV_DUMMY_CALLBACK = 0, NTFSV_NOTIFICATION_CALLBACK = 1, NTFSV_DISCARDED_CALLBACK = 2, NTFSV_NTFS_CBK_MAX = 3 diff --git a/osaf/libs/common/ntfsv/ntfsv_mem.c b/osaf/libs/common/ntfsv/ntfsv_mem.c --- a/osaf/libs/common/ntfsv/ntfsv_mem.c +++ b/osaf/libs/common/ntfsv/ntfsv_mem.c @@ -1335,3 +1335,162 @@ void ntfs_sanamet_steal(SaStringT value, *((SaUint16T*)pName) += 1; } } + +/** + * @Brief: Copy filter header from pSrc to pDes + */ +SaAisErrorT ntfsv_copy_ntf_filter_header(SaNtfNotificationFilterHeaderT* pDes, + const SaNtfNotificationFilterHeaderT* pSrc) +{ + SaAisErrorT rc = SA_AIS_OK; + int i; + /* Event Types */ + pDes->numEventTypes = pSrc->numEventTypes; + for (i = 0; i < pDes->numEventTypes; i++) + pDes->eventTypes[i] = pSrc->eventTypes[i]; + /* notification objects */ + pDes->numNotificationObjects = pSrc->numNotificationObjects; + for (i = 0; i < pDes->numNotificationObjects && rc == SA_AIS_OK; i++) + rc = ntfsv_sanamet_copy(&pDes->notificationObjects[i], + &pSrc->notificationObjects[i]); + /* notifying objects */ + pDes->numNotifyingObjects = pSrc->numNotifyingObjects; + for (i = 0; i < pDes->numNotifyingObjects && rc == SA_AIS_OK; i++) + rc = ntfsv_sanamet_copy(&pDes->notifyingObjects[i], + &pSrc->notifyingObjects[i]); + /* notification class ids */ + pDes->numNotificationClassIds = pSrc->numNotificationClassIds; + for (i = 0; i < pDes->numNotificationClassIds; i++) + pDes->notificationClassIds[i] = pSrc->notificationClassIds[i]; + + return rc; +} + +/** + * @Brief: Copy alarm notification filter + */ +SaAisErrorT ntfsv_copy_ntf_filter_alarm(SaNtfAlarmNotificationFilterT* pDes, + const SaNtfAlarmNotificationFilterT* pSrc) +{ + SaAisErrorT rc = SA_AIS_OK; + int i; + pDes->notificationFilterHandle = pSrc->notificationFilterHandle; + if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader, + &pSrc->notificationFilterHeader)) != SA_AIS_OK) + goto done; + + pDes->numPerceivedSeverities = pSrc->numPerceivedSeverities; + for (i = 0; i < pDes->numPerceivedSeverities; i++) + pDes->perceivedSeverities[i] = pSrc->perceivedSeverities[i]; + + pDes->numProbableCauses = pSrc->numProbableCauses; + for (i = 0; i < pDes->numProbableCauses; i++) + pDes->probableCauses[i] = pSrc->probableCauses[i]; + + pDes->numTrends = pSrc->numTrends; + for (i = 0; i < pDes->numTrends; i++) + pDes->trends[i] = pSrc->trends[i]; + +done: + return rc; +} + +/** + * @Brief: Copy security alarm notification filter + */ +SaAisErrorT ntfsv_copy_ntf_filter_sec_alarm(SaNtfSecurityAlarmNotificationFilterT* pDes, + const SaNtfSecurityAlarmNotificationFilterT* pSrc) +{ + SaAisErrorT rc = SA_AIS_OK; + int i; + pDes->notificationFilterHandle = pSrc->notificationFilterHandle; + if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader, + &pSrc->notificationFilterHeader)) != SA_AIS_OK) + goto done; + + pDes->numProbableCauses = pSrc->numProbableCauses; + for (i = 0; i < pDes->numProbableCauses; i++) + pDes->probableCauses[i] = pSrc->probableCauses[i]; + + pDes->numSecurityAlarmDetectors = pSrc->numSecurityAlarmDetectors; + for (i = 0; i < pDes->numSecurityAlarmDetectors; i++) + pDes->securityAlarmDetectors[i] = pSrc->securityAlarmDetectors[i]; + + pDes->numServiceProviders = pSrc->numServiceProviders; + for (i = 0; i < pDes->numServiceProviders; i++) + pDes->serviceProviders[i] = pSrc->serviceProviders[i]; + + pDes->numServiceUsers = pSrc->numServiceUsers; + for (i = 0; i < pDes->numServiceUsers; i++) + pDes->serviceUsers[i] = pSrc->serviceUsers[i]; + + pDes->numSeverities = pSrc->numSeverities; + for (i = 0; i < pDes->numSeverities; i++) + pDes->severities[i] = pSrc->severities[i]; +done: + return rc; +} + +/** + * @Brief: Copy state change notification filter + */ +SaAisErrorT ntfsv_copy_ntf_filter_state_ch(SaNtfStateChangeNotificationFilterT* pDes, + const SaNtfStateChangeNotificationFilterT* pSrc) +{ + SaAisErrorT rc = SA_AIS_OK; + int i; + pDes->notificationFilterHandle = pSrc->notificationFilterHandle; + if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader, + &pSrc->notificationFilterHeader)) != SA_AIS_OK) + goto done; + + pDes->numSourceIndicators = pSrc->numSourceIndicators; + for (i = 0; i < pDes->numSourceIndicators; i++) + pDes->sourceIndicators[i] = pSrc->sourceIndicators[i]; + + pDes->numStateChanges = pSrc->numStateChanges; + for (i = 0; i < pDes->numStateChanges; i++) + pDes->changedStates[i] = pSrc->changedStates[i]; +done: + return rc; +} + +/** + * @Brief: Copy object create delete notification filter + */ +SaAisErrorT ntfsv_copy_ntf_filter_obj_cr_del(SaNtfObjectCreateDeleteNotificationFilterT* pDes, + const SaNtfObjectCreateDeleteNotificationFilterT* pSrc) +{ + SaAisErrorT rc = SA_AIS_OK; + int i; + pDes->notificationFilterHandle = pSrc->notificationFilterHandle; + if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader, + &pSrc->notificationFilterHeader)) != SA_AIS_OK) + goto done; + + pDes->numSourceIndicators = pSrc->numSourceIndicators; + for (i = 0; i < pDes->numSourceIndicators; i++) + pDes->sourceIndicators[i] = pSrc->sourceIndicators[i]; +done: + return rc; +} + +/** + * @Brief: Copy attribute change notification filter + */ +SaAisErrorT ntfsv_copy_ntf_filter_attr_ch(SaNtfAttributeChangeNotificationFilterT* pDes, + const SaNtfAttributeChangeNotificationFilterT* pSrc) +{ + SaAisErrorT rc = SA_AIS_OK; + int i; + pDes->notificationFilterHandle = pSrc->notificationFilterHandle; + if ((rc = ntfsv_copy_ntf_filter_header(&pDes->notificationFilterHeader, + &pSrc->notificationFilterHeader)) != SA_AIS_OK) + goto done; + + pDes->numSourceIndicators = pSrc->numSourceIndicators; + for (i = 0; i < pDes->numSourceIndicators; i++) + pDes->sourceIndicators[i] = pSrc->sourceIndicators[i]; +done: + return rc; +} ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel