Loading include/kinetic_admin_client.h +12 −5 Original line number Diff line number Diff line Loading @@ -116,24 +116,31 @@ KineticStatus KineticAdminClient_GetLog(KineticSession const * const session, // def setSecurity(self, *args, **kwargs): /** * @brief Executes an InstantSecureErase command to erase all data from the Kinetic device. * @brief Executes a SecureErase command to erase all data from the Kinetic device. * * @param session The connected KineticSession to use for the operation. * * @return Returns the resulting KineticStatus. */ KineticStatus KineticAdminClient_InstantSecureErase(KineticSession const * const session); KineticStatus KineticAdminClient_SecureErase(KineticSession const * const session); /** * @brief Executes an InstantErase command to erase all data from the Kinetic device. * * @param session The connected KineticSession to use for the operation. * * @return Returns the resulting KineticStatus. */ KineticStatus KineticAdminClient_InstantErase(KineticSession const * const session); /** * @brief Updates the cluster version. * * @param clusterVersion Current cluster version. * @param newClusterVersion New cluster version. * * @return Returns the resulting KineticStatus. */ KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const session, int64_t clusterVersion, int64_t newClusterVersion); #endif // _KINETIC_ADMIN_CLIENT_H src/lib/kinetic_admin_client.c +27 −14 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ KineticStatus KineticAdminClient_GetLog(KineticSession const * const session, return KineticController_ExecuteOperation(operation, closure); } KineticStatus KineticAdminClient_InstantSecureErase(KineticSession const * const session) KineticStatus KineticAdminClient_SecureErase(KineticSession const * const session) { assert(session != NULL); assert(session->connection != NULL); Loading @@ -78,28 +78,41 @@ KineticStatus KineticAdminClient_InstantSecureErase(KineticSession const * const KineticOperation* operation = KineticOperation_Create(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildInstantSecureErase(operation); KineticOperation_BuildSecureErase(operation); return KineticController_ExecuteOperation(operation, NULL); } KineticStatus KineticClient_SetClusterVersion(KineticSession handle, int64_t clusterVersion, int64_t newClusterVersion) KineticStatus KineticAdminClient_InstantErase(KineticSession const * const session) { assert(session != NULL); assert(session->connection != NULL); // KINETIC_PROTO_MESSAGE_AUTH_TYPE_PINAUTH (void)handle; (void)clusterVersion; (void)newClusterVersion; KineticStatus status; status = KineticAuth_EnsurePinSupplied(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} status = KineticAuth_EnsureSslEnabled(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} #if 0 assert(handle != KINETIC_HANDLE_INVALID); KineticOperation* operation = KineticOperation_Create(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation* operation = KineticController_CreateOperation(handle); KineticOperation_BuildInstantErase(operation); return KineticController_ExecuteOperation(operation, NULL); } KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const session, int64_t newClusterVersion) { assert(session != NULL); assert(session->connection != NULL); KineticStatus status; status = KineticAuth_EnsureSslEnabled(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} KineticOperation* operation = KineticOperation_Create(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetClusterVersion(operation, newClusterVersion); return KineticController_ExecuteOperation(operation, NULL); #endif return KINETIC_STATUS_INVALID; } src/lib/kinetic_client.c +2 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,8 @@ KineticClient * KineticClient_Init(const char* log_file, int log_level) KineticLogger_Init(log_file, log_level); KineticClient * client = KineticCalloc(1, sizeof(*client)); if (client == NULL) { return NULL; } bool success = KineticPDU_InitBus(log_level, client); int bus_log_level = (log_level > 0) ? (log_level-1) : 0; bool success = KineticPDU_InitBus(bus_log_level, client); if (!success) { KineticFree(client); Loading src/lib/kinetic_operation.c +39 −8 Original line number Diff line number Diff line Loading @@ -681,19 +681,20 @@ KineticStatus KineticOperation_BuildP2POperation(KineticOperation* const operati return KINETIC_STATUS_SUCCESS; } KineticStatus KineticOperation_InstantSecureEraseCallback(KineticOperation* const operation, KineticStatus const status) KineticStatus KineticOperation_SecureEraseCallback(KineticOperation* const operation, KineticStatus const status) { assert(operation != NULL); assert(operation->connection != NULL); LOGF3("IntantSecureErase callback w/ operation (0x%0llX) on connection (0x%0llX)", LOGF3("SecureErase callback w/ operation (0x%0llX) on connection (0x%0llX)", operation, operation->connection); return status; } void KineticOperation_BuildInstantSecureErase(KineticOperation* operation) void KineticOperation_BuildSecureErase(KineticOperation* operation) { KineticOperation_ValidateOperation(operation); KineticSession_IncrementSequence(operation->connection->session); operation->request->message.command.header->messageType = KINETIC_PROTO_COMMAND_MESSAGE_TYPE_PINOP; operation->request->message.command.header->has_messageType = true; operation->request->command->body = &operation->request->message.body; Loading @@ -704,13 +705,41 @@ void KineticOperation_BuildInstantSecureErase(KineticOperation* operation) operation->valueEnabled = false; operation->sendValue = false; operation->callback = &KineticOperation_InstantSecureEraseCallback; operation->callback = &KineticOperation_SecureEraseCallback; operation->request->pinOp = true; operation->timeoutSeconds = 180; } KineticStatus KineticOperation_InstantEraseCallback(KineticOperation* const operation, KineticStatus const status) { assert(operation != NULL); assert(operation->connection != NULL); LOGF3("InstantErase callback w/ operation (0x%0llX) on connection (0x%0llX)", operation, operation->connection); return status; } void KineticOperation_BuildInstantErase(KineticOperation* operation) { KineticOperation_ValidateOperation(operation); KineticSession_IncrementSequence(operation->connection->session); operation->request->message.command.header->messageType = KINETIC_PROTO_COMMAND_MESSAGE_TYPE_PINOP; operation->request->message.command.header->has_messageType = true; operation->request->command->body = &operation->request->message.body; operation->request->command->body->pinOp = &operation->request->message.pinOp; operation->request->command->body->pinOp->pinOpType = KINETIC_PROTO_COMMAND_PIN_OPERATION_PIN_OP_TYPE_ERASE_PINOP; operation->request->command->body->pinOp->has_pinOpType = true; operation->valueEnabled = false; operation->sendValue = false; operation->callback = &KineticOperation_InstantEraseCallback; operation->request->pinOp = true; operation->timeoutSeconds = 180; } KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* operation, KineticStatus const status) KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* const operation, KineticStatus const status) { assert(operation != NULL); assert(operation->connection != NULL); Loading @@ -723,10 +752,12 @@ KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* opera void KineticOperation_BuildSetClusterVersion(KineticOperation* operation, int64_t newClusterVersion) { KineticOperation_ValidateOperation(operation); KineticSession_IncrementSequence((KineticSession const * const)&operation->connection->session); KineticSession_IncrementSequence(operation->connection->session); operation->request->message.command.header->messageType = KINETIC_PROTO_COMMAND_MESSAGE_TYPE_SETUP; operation->request->message.command.header->has_messageType = true; operation->request->command->body = &operation->request->message.body; operation->request->command->body->setup = &operation->request->message.setup; operation->request->command->body->setup->newClusterVersion = newClusterVersion; operation->request->command->body->setup->has_newClusterVersion = true; Loading @@ -735,7 +766,7 @@ void KineticOperation_BuildSetClusterVersion(KineticOperation* operation, int64_ operation->valueEnabled = false; operation->sendValue = false; operation->callback = &KineticOperation_SetClusterVersionCallback; operation->request->pinOp = true; operation->request->pinOp = false; } static void KineticOperation_ValidateOperation(KineticOperation* operation) Loading src/lib/kinetic_operation.h +6 −2 Original line number Diff line number Diff line Loading @@ -69,9 +69,13 @@ KineticStatus KineticOperation_P2POperationCallback(KineticOperation* const oper KineticStatus KineticOperation_BuildP2POperation(KineticOperation* const operation, KineticP2P_Operation* const p2pOp); KineticStatus KineticOperation_InstantSecureEraseCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildInstantSecureErase(KineticOperation* operation); KineticStatus KineticOperation_SecureEraseCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildSecureErase(KineticOperation* operation); KineticStatus KineticOperation_InstantEraseCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildInstantErase(KineticOperation* operation); KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildSetClusterVersion(KineticOperation* operation, int64_t newClusterVersion); void KineticOperation_Complete(KineticOperation* operation, KineticStatus status); Loading Loading
include/kinetic_admin_client.h +12 −5 Original line number Diff line number Diff line Loading @@ -116,24 +116,31 @@ KineticStatus KineticAdminClient_GetLog(KineticSession const * const session, // def setSecurity(self, *args, **kwargs): /** * @brief Executes an InstantSecureErase command to erase all data from the Kinetic device. * @brief Executes a SecureErase command to erase all data from the Kinetic device. * * @param session The connected KineticSession to use for the operation. * * @return Returns the resulting KineticStatus. */ KineticStatus KineticAdminClient_InstantSecureErase(KineticSession const * const session); KineticStatus KineticAdminClient_SecureErase(KineticSession const * const session); /** * @brief Executes an InstantErase command to erase all data from the Kinetic device. * * @param session The connected KineticSession to use for the operation. * * @return Returns the resulting KineticStatus. */ KineticStatus KineticAdminClient_InstantErase(KineticSession const * const session); /** * @brief Updates the cluster version. * * @param clusterVersion Current cluster version. * @param newClusterVersion New cluster version. * * @return Returns the resulting KineticStatus. */ KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const session, int64_t clusterVersion, int64_t newClusterVersion); #endif // _KINETIC_ADMIN_CLIENT_H
src/lib/kinetic_admin_client.c +27 −14 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ KineticStatus KineticAdminClient_GetLog(KineticSession const * const session, return KineticController_ExecuteOperation(operation, closure); } KineticStatus KineticAdminClient_InstantSecureErase(KineticSession const * const session) KineticStatus KineticAdminClient_SecureErase(KineticSession const * const session) { assert(session != NULL); assert(session->connection != NULL); Loading @@ -78,28 +78,41 @@ KineticStatus KineticAdminClient_InstantSecureErase(KineticSession const * const KineticOperation* operation = KineticOperation_Create(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildInstantSecureErase(operation); KineticOperation_BuildSecureErase(operation); return KineticController_ExecuteOperation(operation, NULL); } KineticStatus KineticClient_SetClusterVersion(KineticSession handle, int64_t clusterVersion, int64_t newClusterVersion) KineticStatus KineticAdminClient_InstantErase(KineticSession const * const session) { assert(session != NULL); assert(session->connection != NULL); // KINETIC_PROTO_MESSAGE_AUTH_TYPE_PINAUTH (void)handle; (void)clusterVersion; (void)newClusterVersion; KineticStatus status; status = KineticAuth_EnsurePinSupplied(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} status = KineticAuth_EnsureSslEnabled(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} #if 0 assert(handle != KINETIC_HANDLE_INVALID); KineticOperation* operation = KineticOperation_Create(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation* operation = KineticController_CreateOperation(handle); KineticOperation_BuildInstantErase(operation); return KineticController_ExecuteOperation(operation, NULL); } KineticStatus KineticAdminClient_SetClusterVersion(KineticSession const * const session, int64_t newClusterVersion) { assert(session != NULL); assert(session->connection != NULL); KineticStatus status; status = KineticAuth_EnsureSslEnabled(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} KineticOperation* operation = KineticOperation_Create(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticOperation_BuildSetClusterVersion(operation, newClusterVersion); return KineticController_ExecuteOperation(operation, NULL); #endif return KINETIC_STATUS_INVALID; }
src/lib/kinetic_client.c +2 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,8 @@ KineticClient * KineticClient_Init(const char* log_file, int log_level) KineticLogger_Init(log_file, log_level); KineticClient * client = KineticCalloc(1, sizeof(*client)); if (client == NULL) { return NULL; } bool success = KineticPDU_InitBus(log_level, client); int bus_log_level = (log_level > 0) ? (log_level-1) : 0; bool success = KineticPDU_InitBus(bus_log_level, client); if (!success) { KineticFree(client); Loading
src/lib/kinetic_operation.c +39 −8 Original line number Diff line number Diff line Loading @@ -681,19 +681,20 @@ KineticStatus KineticOperation_BuildP2POperation(KineticOperation* const operati return KINETIC_STATUS_SUCCESS; } KineticStatus KineticOperation_InstantSecureEraseCallback(KineticOperation* const operation, KineticStatus const status) KineticStatus KineticOperation_SecureEraseCallback(KineticOperation* const operation, KineticStatus const status) { assert(operation != NULL); assert(operation->connection != NULL); LOGF3("IntantSecureErase callback w/ operation (0x%0llX) on connection (0x%0llX)", LOGF3("SecureErase callback w/ operation (0x%0llX) on connection (0x%0llX)", operation, operation->connection); return status; } void KineticOperation_BuildInstantSecureErase(KineticOperation* operation) void KineticOperation_BuildSecureErase(KineticOperation* operation) { KineticOperation_ValidateOperation(operation); KineticSession_IncrementSequence(operation->connection->session); operation->request->message.command.header->messageType = KINETIC_PROTO_COMMAND_MESSAGE_TYPE_PINOP; operation->request->message.command.header->has_messageType = true; operation->request->command->body = &operation->request->message.body; Loading @@ -704,13 +705,41 @@ void KineticOperation_BuildInstantSecureErase(KineticOperation* operation) operation->valueEnabled = false; operation->sendValue = false; operation->callback = &KineticOperation_InstantSecureEraseCallback; operation->callback = &KineticOperation_SecureEraseCallback; operation->request->pinOp = true; operation->timeoutSeconds = 180; } KineticStatus KineticOperation_InstantEraseCallback(KineticOperation* const operation, KineticStatus const status) { assert(operation != NULL); assert(operation->connection != NULL); LOGF3("InstantErase callback w/ operation (0x%0llX) on connection (0x%0llX)", operation, operation->connection); return status; } void KineticOperation_BuildInstantErase(KineticOperation* operation) { KineticOperation_ValidateOperation(operation); KineticSession_IncrementSequence(operation->connection->session); operation->request->message.command.header->messageType = KINETIC_PROTO_COMMAND_MESSAGE_TYPE_PINOP; operation->request->message.command.header->has_messageType = true; operation->request->command->body = &operation->request->message.body; operation->request->command->body->pinOp = &operation->request->message.pinOp; operation->request->command->body->pinOp->pinOpType = KINETIC_PROTO_COMMAND_PIN_OPERATION_PIN_OP_TYPE_ERASE_PINOP; operation->request->command->body->pinOp->has_pinOpType = true; operation->valueEnabled = false; operation->sendValue = false; operation->callback = &KineticOperation_InstantEraseCallback; operation->request->pinOp = true; operation->timeoutSeconds = 180; } KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* operation, KineticStatus const status) KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* const operation, KineticStatus const status) { assert(operation != NULL); assert(operation->connection != NULL); Loading @@ -723,10 +752,12 @@ KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* opera void KineticOperation_BuildSetClusterVersion(KineticOperation* operation, int64_t newClusterVersion) { KineticOperation_ValidateOperation(operation); KineticSession_IncrementSequence((KineticSession const * const)&operation->connection->session); KineticSession_IncrementSequence(operation->connection->session); operation->request->message.command.header->messageType = KINETIC_PROTO_COMMAND_MESSAGE_TYPE_SETUP; operation->request->message.command.header->has_messageType = true; operation->request->command->body = &operation->request->message.body; operation->request->command->body->setup = &operation->request->message.setup; operation->request->command->body->setup->newClusterVersion = newClusterVersion; operation->request->command->body->setup->has_newClusterVersion = true; Loading @@ -735,7 +766,7 @@ void KineticOperation_BuildSetClusterVersion(KineticOperation* operation, int64_ operation->valueEnabled = false; operation->sendValue = false; operation->callback = &KineticOperation_SetClusterVersionCallback; operation->request->pinOp = true; operation->request->pinOp = false; } static void KineticOperation_ValidateOperation(KineticOperation* operation) Loading
src/lib/kinetic_operation.h +6 −2 Original line number Diff line number Diff line Loading @@ -69,9 +69,13 @@ KineticStatus KineticOperation_P2POperationCallback(KineticOperation* const oper KineticStatus KineticOperation_BuildP2POperation(KineticOperation* const operation, KineticP2P_Operation* const p2pOp); KineticStatus KineticOperation_InstantSecureEraseCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildInstantSecureErase(KineticOperation* operation); KineticStatus KineticOperation_SecureEraseCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildSecureErase(KineticOperation* operation); KineticStatus KineticOperation_InstantEraseCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildInstantErase(KineticOperation* operation); KineticStatus KineticOperation_SetClusterVersionCallback(KineticOperation* const operation, KineticStatus const status); void KineticOperation_BuildSetClusterVersion(KineticOperation* operation, int64_t newClusterVersion); void KineticOperation_Complete(KineticOperation* operation, KineticStatus status); Loading