void print_additional_info(SaNtfNotificationHandleT notificationHandle, const SaNtfNotificationHeaderT * notificationHeader) { int i; char *dataPtr; SaNameT name; SaStringT info_value_str; SaUint16T dataSize; SaAisErrorT rc; if (notificationHeader->additionalInfo != NULL) { for (i=0; i<notificationHeader->numAdditionalInfo; i++) { printf("- additionalInfo: %d -\n",i); printf(" infoId = %u\n",notificationHeader->additionalInfo[i].infoId); printf(" infoType = %u\n",notificationHeader->additionalInfo[i].infoType); switch (notificationHeader->additionalInfo[i].infoType) { case SA_NTF_VALUE_LDAP_NAME: rc = saNtfPtrValGet(notificationHandle, ¬ificationHeader-> additionalInfo[i].infoValue, (void **)&dataPtr, &dataSize); if (rc == SA_AIS_OK) { size_t strLength = dataSize - 2; char *newStr = (char*)malloc(strLength + 1); memcpy(newStr, dataPtr + 2, strLength); newStr[strLength] = '\0'; saAisNameLend(newStr, &name); printf(" infoValue = \"%s\"\n", saAisNameBorrow(&name)); free(newStr); } else fprintf(stderr, "saNtfPtrValGet Error " "%d\n", rc); break; case SA_NTF_VALUE_STRING: rc = saNtfPtrValGet(notificationHandle, ¬ificationHeader-> additionalInfo[i].infoValue, (void **)&info_value_str, &dataSize); if (rc == SA_AIS_OK) { printf(" infoValue = \"%s\"\n",info_value_str); } else fprintf(stderr, "saNtfPtrValGet Error " "%d\n", rc); break; default: printf("Unimplemented additionalInfo type\n"); break; } } } }
static void print_additional_info(SaNtfNotificationHandleT notificationHandle, const SaNtfNotificationHeaderT *notificationHeader) { if (notificationHeader->additionalInfo != NULL) { switch (notificationHeader->additionalInfo[0].infoType) { case SA_NTF_VALUE_LDAP_NAME: { SaNameT *dataPtr; SaUint16T dataSize; SaAisErrorT rc; rc = saNtfPtrValGet(notificationHandle, ¬ificationHeader->additionalInfo[0].infoValue, (void **)&dataPtr, &dataSize); if (rc == SA_AIS_OK) { printf("additionalInfo = \"%s\"\n", dataPtr->value); } else fprintf(stderr, "saNtfPtrValGet Error %d\n", rc); break; } default: printf("Unimplemented additionalInfo type\n"); break; } } }
static void print_attribute_value(SaNtfNotificationHandleT notificationHandle, SaNtfValueTypeT attributeType, SaNtfValueT *attributeValue) { SaStringT str_ptr; SaUint16T data_size; const SaUint16T max_size = 20; SaAisErrorT rc; SaUint8T *bin_ptr; char* tmp_str; int i; switch ((int)attributeType) { case SA_NTF_VALUE_INT32: printf(" Attribute Value: %d\n", attributeValue->int32Val); break; case SA_NTF_VALUE_UINT32: printf(" Attribute Value: %u\n", attributeValue->uint32Val); break; case SA_NTF_VALUE_INT64: printf(" Attribute Value: %llu\n",attributeValue->int64Val); break; case SA_NTF_VALUE_UINT64: printf(" Attribute Value: %llu\n", attributeValue->uint64Val); break; case SA_NTF_VALUE_FLOAT: printf(" Attribute Value: %g\n", attributeValue->floatVal); break; case SA_NTF_VALUE_DOUBLE: printf(" Attribute Value: %g\n", attributeValue->doubleVal); break; case SA_NTF_VALUE_LDAP_NAME: case SA_NTF_VALUE_STRING: rc = saNtfPtrValGet(notificationHandle, attributeValue, (void **)&str_ptr, &data_size); if (rc == SA_AIS_OK) { tmp_str = (char*) malloc(data_size + 1); memcpy(tmp_str, str_ptr, data_size); tmp_str[data_size] = '\0'; printf(" Attribute Value: \"%s\"\n", tmp_str); free(tmp_str); } else fprintf(stderr, "saNtfPtrValGet Error " "%d\n", rc); break; case SA_NTF_VALUE_BINARY: rc = saNtfPtrValGet(notificationHandle, attributeValue, (void **)&bin_ptr, &data_size); if (rc == SA_AIS_OK) { printf(" Attribute Value:\n "); for (i=0; i<data_size; i++) { printf("0x%02x ",bin_ptr[i]); if (((i+1) % max_size == 0) && (i < (data_size - 1))) printf("\n "); } printf("\n"); } else fprintf(stderr, "saNtfPtrValGet Error " "%d\n", rc); break; default: printf("Printing of attribute type %d not supported\n", (int)attributeType); } }