END_TEST

START_TEST (CancelTrans_BindErrorResp)
{
    int ctx;
    ctx = StartBindTransaction(0);
    StunClient_HandleTick(stunInstance, STUN_TICK_INTERVAL_MS);
    
    fail_unless (StunClient_cancelBindingTransaction(stunInstance,
                                                     LastTransId) == ctx);

    StunClient_HandleTick(stunInstance, STUN_TICK_INTERVAL_MS);
    SimBindSuccessResp(ctx, runningAsIPv6, false);
}
END_TEST

START_TEST (Send_Discuss)
{
    
    int ctx;
    ctx = StartDiscussBindTransaction(0);
    StunClient_HandleTick(stunInstance, STUN_TICK_INTERVAL_MS);

    SimBindSuccessResp(ctx, runningAsIPv6, true);
    fail_unless (stunResult == StunResult_BindOk);

}
END_TEST

START_TEST (WaitBindRespNotAut_BindError)
{
    //printf("IPv6: %s\n", runningAsIPv6? "True" : "False");
    int ctx;
    ctx = StartBindTransaction(0);
    StunClient_HandleTick(stunInstance, STUN_TICK_INTERVAL_MS);

    SimBindSuccessResp(ctx, runningAsIPv6, false);
    fail_unless (stunResult == StunResult_BindFail);

}
Beispiel #4
0
static void*
tickStun(void* ptr)
{
  struct timespec   timer;
  struct timespec   remaining;
  STUN_CLIENT_DATA* clientData = (STUN_CLIENT_DATA*)ptr;

  timer.tv_sec  = 0;
  timer.tv_nsec = 50000000;

  for (;; )
  {
    nanosleep(&timer, &remaining);
    StunClient_HandleTick(clientData, 50);
  }
  return NULL;
}
Beispiel #5
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);

}
Beispiel #6
0
CTEST(stuntrace, run_IPv4_Stunresp_dead)
{
  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);


  StunTrace_startTrace(clientData,
                       &someData,
                       (const struct sockaddr*)&remoteAddr,
                       (const struct sockaddr*)&localAddr,
                       sockfd,
                       "test",
                       "tset",
                       1,
                       StunTraceCallBack,
                       sendPacket);

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

  /* First hop.. */
  ASSERT_TRUE(LastTTL == 1);
  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( LastTTL == 2);

  for (int i = 0; i < 160; i++)
  {
    StunClient_HandleTick(clientData, 50);
  }
  ASSERT_TRUE(LastTTL == 3);

  for (int i = 0; i < 160; i++)
  {
    StunClient_HandleTick(clientData, 50);
  }
  ASSERT_TRUE(LastTTL == 4);

  for (int i = 0; i < 160; i++)
  {
    StunClient_HandleTick(clientData, 50);
  }
  ASSERT_TRUE(LastTTL == 5);

  for (int i = 0; i < 160; i++)
  {
    StunClient_HandleTick(clientData, 50);
  }
  ASSERT_TRUE(LastTTL == 5);

  ASSERT_TRUE(Done);
  ASSERT_TRUE(EndOfTrace);
}
Beispiel #7
0
CTEST(stuntrace, no_answer_recurring_IPv4)
{
  int               someData = 3;
  STUN_CLIENT_DATA* clientData;

  struct sockaddr_storage localAddr, remoteAddr, hop1Addr, hop2Addr;
  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",
                                 2,
                                 StunTraceCallBack,
                                 sendPacket);
  ASSERT_TRUE(len != 0);

  StunClient_HandleICMP(clientData,
                        (struct sockaddr*)&remoteAddr,
                        3);

  /* HOP 1 Answer */
  ASSERT_TRUE(LastTTL == 1);

  sockaddr_initFromString( (struct sockaddr*)&hop1Addr,
                           "192.168.1.1:45674" );
  StunClient_HandleICMP(clientData,
                        (struct sockaddr*)&hop1Addr,
                        11);
  ASSERT_FALSE(Done);
  ASSERT_FALSE(EndOfTrace);

  ASSERT_TRUE( sockaddr_alike( (struct sockaddr*)&LastHopAddr,
                               (struct sockaddr*)&hop1Addr ) );
  /* HOP 2 No Answer */
  ASSERT_TRUE( LastTTL == 2);


  ASSERT_TRUE( LastTTL == 2);
  /*Timeout is roughtly 160*50 ms*/
  for (int i = 0; i < 160; i++)
  {
    StunClient_HandleTick(clientData, 50);
  }
  ASSERT_FALSE(Done);
  ASSERT_FALSE(EndOfTrace);

  /* HOP 3 Answer */
  ASSERT_TRUE(LastTTL == 3);

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

  StunClient_HandleICMP(clientData,
                        (struct sockaddr*)&hop2Addr,
                        3);

  ASSERT_TRUE( sockaddr_alike( (struct sockaddr*)&LastHopAddr,
                               (struct sockaddr*)&hop2Addr ) );

  ASSERT_FALSE(Done);
  ASSERT_TRUE(EndOfTrace);

  /* HOP 1 Answer */
  ASSERT_TRUE(LastTTL == 1);

  sockaddr_initFromString( (struct sockaddr*)&hop1Addr,
                           "192.168.1.1:45674" );
  StunClient_HandleICMP(clientData,
                        (struct sockaddr*)&hop1Addr,
                        11);
  ASSERT_FALSE(Done);
  ASSERT_FALSE(EndOfTrace);

  ASSERT_TRUE( sockaddr_alike( (struct sockaddr*)&LastHopAddr,
                               (struct sockaddr*)&hop1Addr ) );


  /* HOP 3 Answer */
  ASSERT_TRUE(LastTTL == 3);

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

  StunClient_HandleICMP(clientData,
                        (struct sockaddr*)&hop2Addr,
                        3);

  ASSERT_TRUE( sockaddr_alike( (struct sockaddr*)&LastHopAddr,
                               (struct sockaddr*)&hop2Addr ) );

  ASSERT_TRUE( Done);
  ASSERT_TRUE( EndOfTrace);

}