void DhcpdInit() { Dhcpd_pSocket = UdpListen(DHCP_SERVER_PORT, NET_BANK_OFFSET, (USHORT)DhcpdRun); }
/** * @ingroup SipStack * @brief SIP stack 을 시작한다. SIP stack 쓰레드와 network 수신 쓰레드를 시작한다. * @param clsSetup SIP stack 설정 항목 저장 객체 * @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다. */ bool CSipStack::Start( CSipStackSetup & clsSetup ) { if( m_bStarted || m_bStopEvent ) return false; if( clsSetup.Check() == false ) return false; m_clsSetup = clsSetup; m_clsICT.SetTimerD( m_clsSetup.m_iTimerD ); m_clsNIST.SetTimerJ( m_clsSetup.m_iTimerJ ); m_clsTcpConnectMap.SetStateful( m_clsSetup.m_bStateful ); #ifdef USE_TLS m_clsTlsConnectMap.SetStateful( m_clsSetup.m_bStateful ); #endif InitNetwork(); if( m_clsSetup.m_iLocalUdpPort > 0 ) { m_hUdpSocket = UdpListen( m_clsSetup.m_iLocalUdpPort, NULL, m_clsSetup.m_bIpv6 ); if( m_hUdpSocket == INVALID_SOCKET ) return false; } if( m_clsSetup.m_iLocalTcpPort > 0 ) { m_hTcpSocket = TcpListen( m_clsSetup.m_iLocalTcpPort, 255, NULL, m_clsSetup.m_bIpv6 ); if( m_hTcpSocket == INVALID_SOCKET ) { CLog::Print( LOG_ERROR, "TcpListen(%d) error", m_clsSetup.m_iLocalTcpPort ); _Stop(); return false; } m_clsTcpThreadList.SetMaxSocketPerThread( m_clsSetup.m_iTcpMaxSocketPerThread ); if( m_clsTcpThreadList.Init( m_clsSetup.m_iTcpThreadCount, m_clsSetup.m_iTcpThreadCount, SipTcpThread, this ) == false ) { _Stop(); return false; } if( StartSipTcpListenThread( this ) == false ) { _Stop(); return false; } } #ifdef USE_TLS if( m_clsSetup.m_iLocalTlsPort > 0 ) { if( SSLServerStart( m_clsSetup.m_strCertFile.c_str(), m_clsSetup.m_strCaCertFile.c_str() ) == false ) { _Stop(); return false; } m_hTlsSocket = TcpListen( m_clsSetup.m_iLocalTlsPort, 255, NULL, m_clsSetup.m_bIpv6 ); if( m_hTlsSocket == INVALID_SOCKET ) { CLog::Print( LOG_ERROR, "TcpListen(%d) error", m_clsSetup.m_iLocalTlsPort ); _Stop(); return false; } m_clsTlsThreadList.SetMaxSocketPerThread( m_clsSetup.m_iTcpMaxSocketPerThread ); if( m_clsTlsThreadList.Init( m_clsSetup.m_iTcpThreadCount, m_clsSetup.m_iTcpThreadCount, SipTlsThread, this ) == false ) { _Stop(); return false; } if( StartSipTlsListenThread( this ) == false ) { _Stop(); return false; } } else if( m_clsSetup.m_bTlsClient ) { if( SSLClientStart( ) == false ) { _Stop(); return false; } m_clsTlsThreadList.SetMaxSocketPerThread( m_clsSetup.m_iTcpMaxSocketPerThread ); if( m_clsTlsThreadList.Init( m_clsSetup.m_iTcpThreadCount, m_clsSetup.m_iTcpThreadCount, SipTlsThread, this ) == false ) { _Stop(); return false; } } #endif if( m_clsSetup.m_iLocalUdpPort > 0 ) { if( StartSipUdpThread( this ) == false ) { _Stop(); return false; } } if( m_clsSetup.m_bStateful ) { if( StartSipStackThread( this ) == false ) { _Stop(); return false; } } if( m_clsSetup.m_iTcpCallBackThreadCount > 0 ) { for( int i = 0; i < m_clsSetup.m_iTcpCallBackThreadCount; ++i ) { if( StartSipQueueThread( this ) == false ) { _Stop(); return false; } } } m_bStarted = true; return true; }
void DhcpOpenUdp() { _pDhcpSocket = UdpListen(DHCP_CLIENT_PORT, NET_BANK_OFFSET, (USHORT)DhcpRun); }
void DnsInit() { memset((PCHAR)_pDcbData, 0, DNS_CB_LENGTH*DNS_CB_TSIZE); _pDnsSocket = UdpListen(DNS_SRC_PORT, NET_BANK_OFFSET, (USHORT)DnsRun); }