コード例 #1
0
ファイル: test_stun.c プロジェクト: GNUnet/gnunet
/**
 * Main function run with scheduler.
 */
static void
run (void *cls,
     char *const *args,
     const char *cfgfile,
     const struct GNUNET_CONFIGURATION_Handle *cfg)
{
  //Lets create the socket
  lsock4 = bind_v4 ();
  if (NULL == lsock4)
  {
    GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
                         "bind");
    GNUNET_SCHEDULER_shutdown ();
    return;
  }
  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
              "Service listens on port %u\n",
              (unsigned int) port);
  rh = GNUNET_NAT_stun_make_request (stun_server,
                                     stun_port,
                                     lsock4,
                                     &request_callback, NULL);
  GNUNET_SCHEDULER_add_delayed (TIMEOUT,
                                &stop, NULL);
}
コード例 #2
0
ファイル: nat_auto.c プロジェクト: muggenhor/GNUnet
/**
 * Determine our external IPv4 address and port using an external STUN server
 *
 * @param ah auto setup context
 */
static void
test_stun (struct GNUNET_NAT_AutoHandle *ah)
{

  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Running STUN test\n");

  /* Get port from the configuration */
  if (GNUNET_OK !=
      GNUNET_CONFIGURATION_get_value_number (ah->cfg,
                                             "transport-udp",
                                             "PORT",
                                             &port))
  {
    port = 2086;
  }

  //Lets create the socket
  lsock4 = bind_v4 ();
  if (NULL == lsock4)
  {
    GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind");
    next_phase(ah);
    return;
  }
  else
  {
    //Lets call our function now when it accepts
    ltask4 = GNUNET_SCHEDULER_add_read_net (NAT_SERVER_TIMEOUT,
                                            lsock4, &do_udp_read, ah);

  }


  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "STUN service listens on port %u\n",
              port);
  if (GNUNET_NO == GNUNET_NAT_stun_make_request (stun_server, stun_port,
                                                 lsock4, &request_callback,
                                                 NULL))
  {
    /*An error happened*/
    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "STUN error, stopping\n");
    stop_stun ();
    next_phase (ah);
  }
}