PageRenderTime 33ms CodeModel.GetById 12ms app.highlight 14ms RepoModel.GetById 1ms app.codeStats 1ms

/thirdparty/libportfwd/third-party/miniupnpc-1.6/miniupnpc.h

http://github.com/tomahawk-player/tomahawk
C Header | 121 lines | 52 code | 18 blank | 51 comment | 0 complexity | be0df35da6d76cf29696ad8ee2d2247f MD5 | raw file
  1/* $Id: miniupnpc.h,v 1.23 2011/04/11 08:21:46 nanard Exp $ */
  2/* Project: miniupnp
  3 * http://miniupnp.free.fr/
  4 * Author: Thomas Bernard
  5 * Copyright (c) 2005-2011 Thomas Bernard
  6 * This software is subjects to the conditions detailed
  7 * in the LICENCE file provided within this distribution */
  8#ifndef __MINIUPNPC_H__
  9#define __MINIUPNPC_H__
 10
 11#include "declspec.h"
 12#include "igd_desc_parse.h"
 13
 14/* error codes : */
 15#define UPNPDISCOVER_SUCCESS (0)
 16#define UPNPDISCOVER_UNKNOWN_ERROR (-1)
 17#define UPNPDISCOVER_SOCKET_ERROR (-101)
 18#define UPNPDISCOVER_MEMORY_ERROR (-102)
 19
 20#ifdef __cplusplus
 21extern "C" {
 22#endif
 23
 24/* Structures definitions : */
 25struct UPNParg { const char * elt; const char * val; };
 26
 27char *
 28simpleUPnPcommand(int, const char *, const char *,
 29                  const char *, struct UPNParg *,
 30                  int *);
 31
 32struct UPNPDev {
 33	struct UPNPDev * pNext;
 34	char * descURL;
 35	char * st;
 36	char buffer[2];
 37};
 38
 39/* upnpDiscover()
 40 * discover UPnP devices on the network.
 41 * The discovered devices are returned as a chained list.
 42 * It is up to the caller to free the list with freeUPNPDevlist().
 43 * delay (in millisecond) is the maximum time for waiting any device
 44 * response.
 45 * If available, device list will be obtained from MiniSSDPd.
 46 * Default path for minissdpd socket will be used if minissdpdsock argument
 47 * is NULL.
 48 * If multicastif is not NULL, it will be used instead of the default
 49 * multicast interface for sending SSDP discover packets.
 50 * If sameport is not null, SSDP packets will be sent from the source port
 51 * 1900 (same as destination port) otherwise system assign a source port. */
 52LIBSPEC struct UPNPDev *
 53upnpDiscover(int delay, const char * multicastif,
 54             const char * minissdpdsock, int sameport,
 55             int ipv6,
 56             int * error);
 57/* freeUPNPDevlist()
 58 * free list returned by upnpDiscover() */
 59LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist);
 60
 61/* parserootdesc() :
 62 * parse root XML description of a UPnP device and fill the IGDdatas
 63 * structure. */
 64LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *);
 65
 66/* structure used to get fast access to urls
 67 * controlURL: controlURL of the WANIPConnection
 68 * ipcondescURL: url of the description of the WANIPConnection
 69 * controlURL_CIF: controlURL of the WANCommonInterfaceConfig
 70 * controlURL_6FC: controlURL of the WANIPv6FirewallControl
 71 */
 72struct UPNPUrls {
 73	char * controlURL;
 74	char * ipcondescURL;
 75	char * controlURL_CIF;
 76	char * controlURL_6FC;
 77};
 78
 79/* UPNP_GetValidIGD() :
 80 * return values :
 81 *     0 = NO IGD found
 82 *     1 = A valid connected IGD has been found
 83 *     2 = A valid IGD has been found but it reported as
 84 *         not connected
 85 *     3 = an UPnP device has been found but was not recognized as an IGD
 86 *
 87 * In any non zero return case, the urls and data structures
 88 * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
 89 * free allocated memory.
 90 */
 91LIBSPEC int
 92UPNP_GetValidIGD(struct UPNPDev * devlist,
 93                 struct UPNPUrls * urls,
 94				 struct IGDdatas * data,
 95				 char * lanaddr, int lanaddrlen);
 96
 97/* UPNP_GetIGDFromUrl()
 98 * Used when skipping the discovery process.
 99 * return value :
100 *   0 - Not ok
101 *   1 - OK */
102LIBSPEC int
103UPNP_GetIGDFromUrl(const char * rootdescurl,
104                   struct UPNPUrls * urls,
105                   struct IGDdatas * data,
106                   char * lanaddr, int lanaddrlen);
107
108LIBSPEC void GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, const char *);
109
110LIBSPEC void FreeUPNPUrls(struct UPNPUrls *);
111
112/* return 0 or 1 */
113LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *);
114
115
116#ifdef __cplusplus
117}
118#endif
119
120#endif
121