*
* TODO:
* - test and document (!) ICMP based NAT traversal
- * - implement manual hole punching support (AUTO missing)
* - test manual hole punching support
* - implement "more" autoconfig:
* + consider moving autoconfig-logic into separate service!
struct sockaddr_in sa;
int have_v4;
+ /* (0) check if this impacts 'hole_external' */
+ if (0 == strcasecmp (ch->hole_external,
+ "AUTO"))
+ {
+ struct LocalAddressList lal;
+ struct sockaddr_in *s4;
+
+ memset (&lal, 0, sizeof (lal));
+ s4 = (struct sockaddr_in *) &lal.addr;
+ s4->sin_family = AF_INET;
+ s4->sin_port = htons (ch->ext_dns_port);
+ lal.af = AF_INET;
+ lal.ac = GNUNET_NAT_AC_GLOBAL | GNUNET_NAT_AC_MANUAL;
+ check_notify_client (&lal,
+ ch,
+ add);
+ }
+
/* (1) check if client cares. */
if (! ch->natted_address)
return;
if (GNUNET_NO == have_v4)
return; /* IPv6-only */
- /* build address info */
+ /* (2) build address info */
memset (&sa,
0,
sizeof (sa));
if (0 == strcasecmp (ch->hole_external,
"AUTO"))
{
- // FIXME: use `external-ip` address(es)!
- GNUNET_break (0); // not implemented!
+ /* handled in #notify_client_external_ipv4_change() */
GNUNET_free (lal);
return;
}