/*============================================================================ * OpcUa_TcpSecureChannel_RenewSecurityToken *===========================================================================*/ OpcUa_StatusCode OpcUa_TcpSecureChannel_RenewSecurityToken( OpcUa_SecureChannel* a_pSecureChannel, OpcUa_ChannelSecurityToken* a_pSecurityToken, OpcUa_UInt32 a_tokenLifeTime, OpcUa_ChannelSecurityToken** a_ppSecurityToken) { OpcUa_ChannelSecurityToken* pSecurityToken = OpcUa_Null; OpcUa_InitializeStatus(OpcUa_Module_SecureChannel, "RenewSecurityToken"); /* check parameters */ OpcUa_ReturnErrorIfArgumentNull(a_pSecureChannel); OpcUa_ReturnErrorIfArgumentNull(a_pSecurityToken); OpcUa_ReturnErrorIfArgumentNull(a_ppSecurityToken); OPCUA_SECURECHANNEL_LOCK(a_pSecureChannel); /* initialize outparameters */ *a_ppSecurityToken = OpcUa_Null; /*** create token ***/ pSecurityToken = (OpcUa_ChannelSecurityToken*)OpcUa_Alloc(sizeof(OpcUa_ChannelSecurityToken)); OpcUa_GotoErrorIfAllocFailed(pSecurityToken); OpcUa_ChannelSecurityToken_Initialize(pSecurityToken); pSecurityToken->TokenId = a_pSecureChannel->NextTokenId; pSecurityToken->ChannelId = a_pSecurityToken->ChannelId; pSecurityToken->CreatedAt = OPCUA_P_DATETIME_UTCNOW(); OpcUa_Trace(OPCUA_TRACE_LEVEL_INFO, "OpcUa_TcpSecureChannel_RenewSecurityToken: TOKEN ID is %u-%u\n", pSecurityToken->ChannelId, pSecurityToken->TokenId); OpcUa_TcpSecureChannel_ReviseLifetime(a_tokenLifeTime, &pSecurityToken->RevisedLifetime); /* increment renew counter */ a_pSecureChannel->NextTokenId++; OPCUA_SECURECHANNEL_UNLOCK(a_pSecureChannel); /* assign outparameter */ *a_ppSecurityToken = pSecurityToken; OpcUa_ReturnStatusCode; OpcUa_BeginErrorHandling; OPCUA_SECURECHANNEL_UNLOCK(a_pSecureChannel); if(pSecurityToken != OpcUa_Null) { OpcUa_Free(pSecurityToken); } OpcUa_FinishErrorHandling; }
/** * @brief Builds a connection record for the given parameters and returns it. * * @return: Status Code; */ OpcUa_StatusCode OpcUa_TcpListener_ConnectionManager_AddConnection( OpcUa_TcpListener_ConnectionManager* a_pConnectionManager, OpcUa_TcpListener_Connection* a_pConnection) { OpcUa_StatusCode uStatus = OpcUa_Good; OpcUa_GotoErrorIfArgumentNull(a_pConnection); OpcUa_GotoErrorIfArgumentNull(a_pConnectionManager); OpcUa_GotoErrorIfArgumentNull(a_pConnectionManager->Connections); a_pConnection->ConnectTime = OPCUA_P_DATETIME_UTCNOW(); /* expiration of connection would be DisconnectTime+Lifetime */ OpcUa_List_Enter(a_pConnectionManager->Connections); OpcUa_List_AddElement(a_pConnectionManager->Connections, a_pConnection); OpcUa_Trace(OPCUA_TRACE_LEVEL_DEBUG, "OpcUa_TcpListener_ConnectionManager_AddConnection: Connection added!\n"); OpcUa_List_Leave(a_pConnectionManager->Connections); return OpcUa_Good; Error: return OpcUa_Bad; }