예제 #1
0
static void SimBindSuccessResp(int ctx, bool IPv6, bool success)
{
    StunMessage m;
    memset(&m, 0, sizeof(m));
    memcpy(&m.msgHdr.id, &LastTransId, STUN_MSG_ID_SIZE);  
    memcpy(&m.msgHdr.cookie, StunCookie, sizeof(m.msgHdr.cookie));
    if (success) 
        m.msgHdr.msgType = STUN_MSG_BindResponseMsg;
    else
        m.msgHdr.msgType = STUN_MSG_BindErrorResponseMsg;

    m.hasXorMappedAddress = true;

    if(IPv6){
        stunlib_setIP6Address(&m.xorMappedAddress, test_addr_ipv6, 0x4200);

    }else{
        m.xorMappedAddress.familyType = STUN_ADDR_IPv4Family;
        m.xorMappedAddress.addr.v4.addr = test_addr_ipv4;
        m.xorMappedAddress.addr.v4.port = test_port_ipv4;
    }

    StunClient_HandleIncResp(stunInstance, &m, NULL);

}
예제 #2
0
CTEST(stuntrace, run_IPv4_Stunresp_max_ttl)
{
  int               someData = 3;
  STUN_CLIENT_DATA* clientData;

  struct sockaddr_storage localAddr, remoteAddr, hop1Addr;
  int                     sockfd = 4;

  sockaddr_initFromString( (struct sockaddr*)&remoteAddr,
                           "193.200.93.152:45674" );

  sockaddr_initFromString( (struct sockaddr*)&localAddr,
                           "192.168.1.34:45674" );

  StunClient_Alloc(&clientData);


  int len = StunTrace_startTrace(clientData,
                                 &someData,
                                 (const struct sockaddr*)&remoteAddr,
                                 (const struct sockaddr*)&localAddr,
                                 sockfd,
                                 "test",
                                 "tset",
                                 1,
                                 StunTraceCallBack,
                                 sendPacket);
  /* First alive probe */
  ASSERT_TRUE(len != 0);
  ASSERT_TRUE(LastTTL == 40);
  StunMessage m;
  memset( &m, 0, sizeof(m) );
  memcpy( &m.msgHdr.id,     &LastTransId, STUN_MSG_ID_SIZE);
  memcpy( &m.msgHdr.cookie, StunCookie,   sizeof(m.msgHdr.cookie) );
  m.msgHdr.msgType                = STUN_MSG_BindResponseMsg;
  m.hasXorMappedAddress           = true;
  m.xorMappedAddress.familyType   = STUN_ADDR_IPv4Family;
  m.xorMappedAddress.addr.v4.addr = test_addr_ipv4;
  m.xorMappedAddress.addr.v4.port = test_port_ipv4;

  StunClient_HandleIncResp(clientData,
                           &m,
                           NULL);

  /*Timeout is roughtly 160*50 ms*/
  for (int i = 0; i < 160 * 38; i++)
  {
    StunClient_HandleTick(clientData, 50);
  }

  /* First hop.. */
  ASSERT_TRUE(LastTTL == 39);
  sockaddr_initFromString( (struct sockaddr*)&hop1Addr,
                           "192.168.1.1:45674" );
  StunClient_HandleICMP(clientData,
                        (struct sockaddr*)&hop1Addr,
                        11);
  ASSERT_TRUE( sockaddr_alike( (struct sockaddr*)&LastHopAddr,
                               (struct sockaddr*)&hop1Addr ) );

  ASSERT_TRUE( Done);
  ASSERT_TRUE( EndOfTrace);

}