ANSC_STATUS CcspCwmpTcpcrhoEngage ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCCSP_CWMP_TCPCR_HANDLER_OBJECT pMyObject = (PCCSP_CWMP_TCPCR_HANDLER_OBJECT )hThisObject; PCCSP_CWMP_TCPCR_HANDLER_PROPERTY pProperty = (PCCSP_CWMP_TCPCR_HANDLER_PROPERTY )&pMyObject->Property; PANSC_DAEMON_SERVER_TCP_OBJECT pTcpServer = (PANSC_DAEMON_SERVER_TCP_OBJECT)pMyObject->hTcpServer; ULONG ulEngineCount = 1; ULONG ulSocketCount = 1; ULONG ulTcpDsoMode = ANSC_DSTO_MODE_EVENT_SYNC | ANSC_DSTO_MODE_FOREIGN_BUFFER | ANSC_DSTO_MODE_COMPACT; if ( pMyObject->bActive ) { return ANSC_STATUS_SUCCESS; } else { pMyObject->bActive = TRUE; } returnStatus = pMyObject->CreateTcpServers((ANSC_HANDLE)pMyObject); if ( returnStatus != ANSC_STATUS_SUCCESS ) { CcspTr069PaTraceDebug(("Create TCP server failed\n")); pMyObject->bActive = FALSE; return returnStatus; } if ( pProperty->ServerMode & CCSP_CWMP_TCPCR_HANDLER_MODE_useXsocket ) { ulTcpDsoMode |= ANSC_DSTO_MODE_XSOCKET; } ulEngineCount = 1; ulSocketCount = 4; pTcpServer = (PANSC_DAEMON_SERVER_TCP_OBJECT)pMyObject->hTcpServer; if ( pTcpServer ) { #ifdef _ANSC_IPV6_COMPATIBLE_ CcspTr069PaTraceDebug(("Tcp host addr=%s:%d\n", pProperty->HostAddr, pProperty->HostPort)); AnscCopyString(pTcpServer->HostName, pProperty->HostAddr); #else CcspTr069PaTraceDebug(("Tcp host addr=%d.%d.%d.%d:%d\n", pProperty->HostAddress.Dot[0], pProperty->HostAddress.Dot[1], pProperty->HostAddress.Dot[2], pProperty->HostAddress.Dot[3], pProperty->HostPort)); pTcpServer->SetHostAddress ((ANSC_HANDLE)pTcpServer, pProperty->HostAddress.Dot); #endif pTcpServer->SetHostPort ((ANSC_HANDLE)pTcpServer, pProperty->HostPort ); pTcpServer->SetMaxMessageSize((ANSC_HANDLE)pTcpServer, CCSP_CWMP_TCPCR_MAX_MSG_SIZE ); pTcpServer->SetEngineCount ((ANSC_HANDLE)pTcpServer, ulEngineCount ); pTcpServer->SetMinSocketCount((ANSC_HANDLE)pTcpServer, 0 ); pTcpServer->SetMaxSocketCount((ANSC_HANDLE)pTcpServer, ulSocketCount ); pTcpServer->SetMode ((ANSC_HANDLE)pTcpServer, ulTcpDsoMode ); returnStatus = pTcpServer->Engage((ANSC_HANDLE)pTcpServer); if ( returnStatus != ANSC_STATUS_SUCCESS ) { CcspTr069PaTraceError(("CcspCwmpTcpcrhoEngage - failed to be engaged, CWMP will not run properly!\n")); pMyObject->bActive = FALSE; return returnStatus; } } return ANSC_STATUS_SUCCESS; }