Annotation of embedaddon/miniupnpc/miniupnpc.h, revision 1.1.1.1
1.1 misho 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
21: extern "C" {
22: #endif
23:
24: /* Structures definitions : */
25: struct UPNParg { const char * elt; const char * val; };
26:
27: char *
28: simpleUPnPcommand(int, const char *, const char *,
29: const char *, struct UPNParg *,
30: int *);
31:
32: struct 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. */
52: LIBSPEC struct UPNPDev *
53: upnpDiscover(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() */
59: LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist);
60:
61: /* parserootdesc() :
62: * parse root XML description of a UPnP device and fill the IGDdatas
63: * structure. */
64: LIBSPEC 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: */
72: struct 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: */
91: LIBSPEC int
92: UPNP_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 */
102: LIBSPEC int
103: UPNP_GetIGDFromUrl(const char * rootdescurl,
104: struct UPNPUrls * urls,
105: struct IGDdatas * data,
106: char * lanaddr, int lanaddrlen);
107:
108: LIBSPEC void GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, const char *);
109:
110: LIBSPEC void FreeUPNPUrls(struct UPNPUrls *);
111:
112: /* return 0 or 1 */
113: LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *);
114:
115:
116: #ifdef __cplusplus
117: }
118: #endif
119:
120: #endif
121:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>