#if HAVE_SOCKADDR_IN_SIN_LEN
sin_addr.sin_len = sizeof (sin_addr);
#endif
- if ((NULL == port_start) || (1 != sscanf (port_start, "%d", &port)) ||
+ if ((NULL == port_start) || (1 != SSCANF (port_start, "%d", &port)) ||
(-1 == inet_pton (AF_INET, mybuf, &sin_addr.sin_addr)))
{
/* should we restart gnunet-helper-nat-server? */
#endif
/* Start the server process */
h->server_proc =
- GNUNET_OS_start_process (NULL, h->server_stdout,
+ GNUNET_OS_start_process (GNUNET_NO, NULL, h->server_stdout,
"gnunet-helper-nat-server",
"gnunet-helper-nat-server",
h->internal_address, NULL);
h->nat_punched =
GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "PUNCHED_NAT");
h->enable_nat_client =
- GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "ENABLE_NAT_CLIENT");
+ GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "ENABLE_ICMP_CLIENT");
h->enable_nat_server =
- GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "ENABLE_NAT_SERVER");
+ GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "ENABLE_ICMP_SERVER");
h->enable_upnp =
GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "ENABLE_UPNP");
h->use_localaddresses =
* gnunet-helper-nat-client to send dummy ICMP responses to cause
* that peer to connect to us (connection reversal).
*
- * @param h NAT handle for us (largely used for configuration)
- * @param sa the address of the peer (IPv4-only)
+ * @return GNUNET_SYSERR on error, GNUNET_NO if nat client is disabled,
+ * GNUNET_OK otherwise
*/
-void
+int
GNUNET_NAT_run_client (struct GNUNET_NAT_Handle *h,
const struct sockaddr_in *sa)
+
+
{
char inet4[INET_ADDRSTRLEN];
char port_as_string[6];
struct GNUNET_OS_Process *proc;
if (GNUNET_YES != h->enable_nat_client)
- return; /* not permitted / possible */
+ return GNUNET_NO; /* not permitted / possible */
if (h->internal_address == NULL)
{
LOG (GNUNET_ERROR_TYPE_WARNING, "nat",
_
("Internal IP address not known, cannot use ICMP NAT traversal method\n"));
- return;
+ return GNUNET_SYSERR;
}
GNUNET_assert (sa->sin_family == AF_INET);
if (NULL == inet_ntop (AF_INET, &sa->sin_addr, inet4, INET_ADDRSTRLEN))
{
GNUNET_log_from_strerror (GNUNET_ERROR_TYPE_WARNING, "nat", "inet_ntop");
- return;
+ return GNUNET_SYSERR;
}
GNUNET_snprintf (port_as_string, sizeof (port_as_string), "%d", h->adv_port);
#if DEBUG_NAT
inet4, (unsigned int) h->adv_port);
#endif
proc =
- GNUNET_OS_start_process (NULL, NULL, "gnunet-helper-nat-client",
+ GNUNET_OS_start_process (GNUNET_NO,
+ NULL, NULL, "gnunet-helper-nat-client",
"gnunet-helper-nat-client", h->internal_address,
inet4, port_as_string, NULL);
if (NULL == proc)
- return;
+ return GNUNET_SYSERR;
/* we know that the gnunet-helper-nat-client will terminate virtually
* instantly */
GNUNET_OS_process_wait (proc);
GNUNET_OS_process_close (proc);
+ return GNUNET_OK;
}