From 922a0672749ba9d496d1dd8f6596bb4f8035e71d Mon Sep 17 00:00:00 2001 From: Moon Date: Sat, 9 Oct 2010 13:53:47 +0000 Subject: rework UPnP code to use GNUnet scheduler and network API disable NAT-PMP support for now --- src/nat/upnp-discover.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/nat/upnp-discover.h (limited to 'src/nat/upnp-discover.h') diff --git a/src/nat/upnp-discover.h b/src/nat/upnp-discover.h new file mode 100644 index 000000000..2e996cd88 --- /dev/null +++ b/src/nat/upnp-discover.h @@ -0,0 +1,84 @@ +/* + This file is part of GNUnet. + (C) 2009, 2010 Christian Grothoff (and other contributing authors) + + 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 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. + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +/* + * Code in this file is originally based on the miniupnp library. + * Copyright (c) 2005-2009, Thomas BERNARD. All rights reserved. + * + * Original licence: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file nat/upnp-discover.h + * @brief Look for UPnP IGD devices + * + * @author Milan Bouchet-Valat + */ +#ifndef UPNPC_H +#define UPNPC_H + +#include "platform.h" +#include "gnunet_common.h" +#include "gnunet_util_lib.h" +#include "upnp-commands.h" + +typedef void (*UPNP_discover_cb_) (const char *control_urls, + const char *service_type, void *cls); + +/** + * Search for UPnP Internet Gateway Devices (IGD) on a given network interface. + * If several devices are found, a device that is connected to the WAN + * is returned first (if any). + * + * @param sched scheduler to use for network tasks + * @param multicastif network interface to send discovery messages, or NULL + * @param addr address used to send messages on multicastif, or NULL + * @param caller_cb user function to call when done + * @param caller_cls closure to pass to caller_cb + */ +void UPNP_discover_ (struct GNUNET_SCHEDULER_Handle *sched, + const char *multicastif, + const struct sockaddr *addr, + UPNP_discover_cb_ caller_cb, void *caller_cls); + +#endif -- cgit v1.2.3