This file is part of GNUnet.
Copyright (C) 2015, 2016 GNUnet e.V.
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
+ GNUnet is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
GNUnet is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
+ SPDX-License-Identifier: AGPL3.0-or-later
*/
/**
* a function to call whenever our set of 'valid' addresses changes.
*
* @param cls closure, NULL
+ * @param app_ctx[in,out] location where the app can store stuff
+ * on add and retrieve it on remove
* @param add_remove #GNUNET_YES to add a new public IP address,
* #GNUNET_NO to remove a previous (now invalid) one
* @param ac address class the address belongs to
*/
static void
address_cb (void *cls,
+ void **app_ctx,
int add_remove,
enum GNUNET_NAT_AddressClass ac,
const struct sockaddr *addr,
socklen_t addrlen)
{
+ (void) cls;
+ (void) app_ctx;
+
fprintf (stdout,
"%s %s (%d)\n",
add_remove ? "+" : "-",
ls = GNUNET_NETWORK_socket_create (af,
SOCK_DGRAM,
IPPROTO_UDP);
+ if (NULL == ls)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
+ "Failed to create socket\n");
+ goto fail_and_shutdown;
+ }
if (GNUNET_OK !=
- GNUNET_NETWORK_socket_bind (ls,
- local_sa,
- local_len))
+ GNUNET_NETWORK_socket_bind (ls,
+ local_sa,
+ local_len))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to bind to %s: %s\n",
{
struct GNUNET_GETOPT_CommandLineOption options[] = {
- GNUNET_GETOPT_OPTION_STRING ('i',
+ GNUNET_GETOPT_option_string ('i',
"in",
"ADDRESS",
gettext_noop ("which IP and port are we locally using to bind/listen to"),
&local_addr),
- GNUNET_GETOPT_OPTION_STRING ('r',
+ GNUNET_GETOPT_option_string ('r',
"remote",
"ADDRESS",
gettext_noop ("which remote IP and port should be asked for connection reversal"),
&remote_addr),
- GNUNET_GETOPT_OPTION_STRING ('S',
+ GNUNET_GETOPT_option_string ('S',
"section",
NULL,
gettext_noop ("name of configuration section to find additional options, such as manual host punching data"),
§ion_name),
- GNUNET_GETOPT_OPTION_SET_ONE ('s',
+ GNUNET_GETOPT_option_flag ('s',
"stun",
gettext_noop ("enable STUN processing"),
&do_stun),
- GNUNET_GETOPT_OPTION_SET_ONE ('t',
+ GNUNET_GETOPT_option_flag ('t',
"tcp",
gettext_noop ("use TCP"),
&use_tcp),
- GNUNET_GETOPT_OPTION_SET_ONE ('u',
+ GNUNET_GETOPT_option_flag ('u',
"udp",
gettext_noop ("use UDP"),
&use_udp),
- GNUNET_GETOPT_OPTION_SET_ONE ('W',
+ GNUNET_GETOPT_option_flag ('W',
"watch",
gettext_noop ("watch for connection reversal requests"),
&listen_reversal),