void testEndpointDescriptor_PublicUdp_defaultPort()
 {
    NatTraversalRules natRules;
    UtlString     rulesFile(TEST_DATA_DIR "/NatTraversalAgent/nattraversalrules1.xml");
    CPPUNIT_ASSERT( natRules.loadRules( rulesFile ) == OS_SUCCESS );
 
    Url publicContactUri( "<sip:[email protected];x-sipX-nonat>" );
    
    EndpointDescriptor endpointDescriptor( publicContactUri, natRules );
    
    CPPUNIT_ASSERT( endpointDescriptor.getLocationCode() == PUBLIC );
 
    
    TransportData publicTransport = endpointDescriptor.getPublicTransportAddress(); 
    CPPUNIT_ASSERT( publicTransport.getAddress() == "47.135.162.161" );
    CPPUNIT_ASSERT( publicTransport.getPort() == 5060 );
    CPPUNIT_ASSERT( publicTransport.getTransportProtocol() == "udp" );     
 
    TransportData privateTransport = endpointDescriptor.getNativeTransportAddress();
    CPPUNIT_ASSERT( privateTransport.getAddress() == "47.135.162.161" );
    CPPUNIT_ASSERT( privateTransport.getPort() == 5060 );
    CPPUNIT_ASSERT( privateTransport.getTransportProtocol() == "udp" );     
 
    CPPUNIT_ASSERT( publicTransport.isEqual( privateTransport ) );
 }
   void testEndpointDescriptor_UnknownTcpOutsideLocalPrivateNetwork()
   {
      NatTraversalRules natRules;
      UtlString     rulesFile(TEST_DATA_DIR "/NatTraversalAgent/nattraversalrules1.xml");
      CPPUNIT_ASSERT( natRules.loadRules( rulesFile ) == OS_SUCCESS );

      // pick an IP address that is outside the local topology according to
      // the NatTraversalRules prescribed by /NatTraversalAgent/nattraversalrules1.xml
      Url unknownContactUri( "<sip:[email protected]:6060;transport=tcp>" );
      
      EndpointDescriptor endpointDescriptor( unknownContactUri, natRules );
      
      CPPUNIT_ASSERT( endpointDescriptor.getLocationCode() == UNKNOWN );

      TransportData publicTransport = endpointDescriptor.getPublicTransportAddress(); 
      CPPUNIT_ASSERT( publicTransport.getAddress() == UNKNOWN_IP_ADDRESS_STRING );
      CPPUNIT_ASSERT( publicTransport.getPort() == UNKNOWN_PORT_NUMBER );
      CPPUNIT_ASSERT( publicTransport.getTransportProtocol() == UNKNOWN_TRANSPORT_STRING );     

      TransportData privateTransport = endpointDescriptor.getNativeTransportAddress();
      CPPUNIT_ASSERT( privateTransport.getAddress() == "55.10.10.11" );
      CPPUNIT_ASSERT( privateTransport.getPort() == 6060 );
      CPPUNIT_ASSERT( privateTransport.getTransportProtocol() == "tcp" );  
      
      CPPUNIT_ASSERT( !publicTransport.isEqual( privateTransport ) );
   }
   void testEndpointDescriptor_LocalNATedTcp()
   {
      NatTraversalRules natRules;
      UtlString     rulesFile(TEST_DATA_DIR "/NatTraversalAgent/nattraversalrules1.xml");
      CPPUNIT_ASSERT( natRules.loadRules( rulesFile ) == OS_SUCCESS );

      // pick an IP address that is part of the local topology according to
      // the NatTraversalRules prescribed by /NatTraversalAgent/nattraversalrules1.xml
      Url localNATedContactUri( "<sip:[email protected]:6060;transport=tcp;x-sipX-nonat>" );
      
      EndpointDescriptor endpointDescriptor( localNATedContactUri, natRules );
      
      CPPUNIT_ASSERT( endpointDescriptor.getLocationCode() == LOCAL_NATED );

      TransportData publicTransport = endpointDescriptor.getPublicTransportAddress(); 
      CPPUNIT_ASSERT( publicTransport.getAddress() == "10.10.10.10" );
      CPPUNIT_ASSERT( publicTransport.getPort() == 6060 );
      CPPUNIT_ASSERT( publicTransport.getTransportProtocol() == "tcp" );     

      TransportData privateTransport = endpointDescriptor.getNativeTransportAddress();
      CPPUNIT_ASSERT( privateTransport.getAddress() == "10.10.10.10" );
      CPPUNIT_ASSERT( privateTransport.getPort() == 6060 );
      CPPUNIT_ASSERT( privateTransport.getTransportProtocol() == "tcp" );  
      
      CPPUNIT_ASSERT( publicTransport.isEqual( privateTransport ) );
   }
예제 #4
0
void NatMaintainer::sendKeepAliveToExternalKeepAliveList( void )
{
   OsLock lock( mExternalKeepAliveListMutex );

   UtlSListIterator iter( mExternalKeepAliveList );
   TransportData* pTransportToKeepAlive;

   while( ( pTransportToKeepAlive = (TransportData*)iter() ) )
   {
      sendKeepAliveToEndpoint( pTransportToKeepAlive->getAddress(), pTransportToKeepAlive->getPort() );
   }
}
 void testTransportDataSetGet()
 {
    TransportData transportData;
    
    transportData.setAddress( "47.10.10.10" );
    transportData.setPort( 6666 );
    transportData.setTransportProtocol( "tcp" );
    
    CPPUNIT_ASSERT( transportData.getAddress() == "47.10.10.10" );
    CPPUNIT_ASSERT( transportData.getPort() == 6666 );
    CPPUNIT_ASSERT( transportData.getTransportProtocol() == "tcp" );    
 }
   void testEndpointDescriptor_RemoteNATedTcp()
   {
      NatTraversalRules natRules;
      UtlString     rulesFile(TEST_DATA_DIR "/NatTraversalAgent/nattraversalrules1.xml");
      CPPUNIT_ASSERT( natRules.loadRules( rulesFile ) == OS_SUCCESS );

      Url remoteNATedContactUri( "<sip:[email protected]:6060;transport=tcp;x-sipX-pubcontact=47.135.162.145%3A10491%3Btransport%3Dtcp>" );
      EndpointDescriptor endpointDescriptor( remoteNATedContactUri, natRules );
      
      CPPUNIT_ASSERT( endpointDescriptor.getLocationCode() == REMOTE_NATED );

      TransportData publicTransport = endpointDescriptor.getPublicTransportAddress(); 
      CPPUNIT_ASSERT( publicTransport.getAddress() == "47.135.162.145" );
      CPPUNIT_ASSERT( publicTransport.getPort() == 10491 );
      CPPUNIT_ASSERT( publicTransport.getTransportProtocol() == "tcp" );     

      TransportData privateTransport = endpointDescriptor.getNativeTransportAddress();
      CPPUNIT_ASSERT( privateTransport.getAddress() == "192.168.1.11" );
      CPPUNIT_ASSERT( privateTransport.getPort() == 6060 );
      CPPUNIT_ASSERT( privateTransport.getTransportProtocol() == "tcp" );     

      CPPUNIT_ASSERT( !publicTransport.isEqual( privateTransport ) );
   }