Annotation of embedaddon/miniupnpc/include/miniupnpc.h, revision 1.1.1.1
1.1 misho 1: /* $Id: miniupnpc.h,v 1.61 2022/10/21 21:15:02 nanard Exp $ */
2: /* vim: tabstop=4 shiftwidth=4 noexpandtab
3: * Project: miniupnp
4: * http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
5: * Author: Thomas Bernard
6: * Copyright (c) 2005-2022 Thomas Bernard
7: * This software is subjects to the conditions detailed
8: * in the LICENCE file provided within this distribution */
9: #ifndef MINIUPNPC_H_INCLUDED
10: #define MINIUPNPC_H_INCLUDED
11:
12: #include "miniupnpc_declspec.h"
13: #include "igd_desc_parse.h"
14: #include "upnpdev.h"
15:
16: /* error codes : */
17: #define UPNPDISCOVER_SUCCESS (0)
18: #define UPNPDISCOVER_UNKNOWN_ERROR (-1)
19: #define UPNPDISCOVER_SOCKET_ERROR (-101)
20: #define UPNPDISCOVER_MEMORY_ERROR (-102)
21:
22: /* versions : */
23: #define MINIUPNPC_VERSION "2.2.5"
24: #define MINIUPNPC_API_VERSION 17
25:
26: /* Source port:
27: Using "1" as an alias for 1900 for backwards compatibility
28: (presuming one would have used that for the "sameport" parameter) */
29: #define UPNP_LOCAL_PORT_ANY 0
30: #define UPNP_LOCAL_PORT_SAME 1
31:
32: #ifdef __cplusplus
33: extern "C" {
34: #endif
35:
36: /* Structures definitions : */
37: struct UPNParg { const char * elt; const char * val; };
38:
39: char *
40: simpleUPnPcommand(int, const char *, const char *,
41: const char *, struct UPNParg *,
42: int *);
43:
44: /* upnpDiscover()
45: * discover UPnP devices on the network.
46: * The discovered devices are returned as a chained list.
47: * It is up to the caller to free the list with freeUPNPDevlist().
48: * delay (in millisecond) is the maximum time for waiting any device
49: * response.
50: * If available, device list will be obtained from MiniSSDPd.
51: * Default path for minissdpd socket will be used if minissdpdsock argument
52: * is NULL.
53: * If multicastif is not NULL, it will be used instead of the default
54: * multicast interface for sending SSDP discover packets.
55: * If localport is set to UPNP_LOCAL_PORT_SAME(1) SSDP packets will be sent
56: * from the source port 1900 (same as destination port), if set to
57: * UPNP_LOCAL_PORT_ANY(0) system assign a source port, any other value will
58: * be attempted as the source port.
59: * "searchalltypes" parameter is useful when searching several types,
60: * if 0, the discovery will stop with the first type returning results.
61: * TTL should default to 2. */
62: MINIUPNP_LIBSPEC struct UPNPDev *
63: upnpDiscover(int delay, const char * multicastif,
64: const char * minissdpdsock, int localport,
65: int ipv6, unsigned char ttl,
66: int * error);
67:
68: MINIUPNP_LIBSPEC struct UPNPDev *
69: upnpDiscoverAll(int delay, const char * multicastif,
70: const char * minissdpdsock, int localport,
71: int ipv6, unsigned char ttl,
72: int * error);
73:
74: MINIUPNP_LIBSPEC struct UPNPDev *
75: upnpDiscoverDevice(const char * device, int delay, const char * multicastif,
76: const char * minissdpdsock, int localport,
77: int ipv6, unsigned char ttl,
78: int * error);
79:
80: MINIUPNP_LIBSPEC struct UPNPDev *
81: upnpDiscoverDevices(const char * const deviceTypes[],
82: int delay, const char * multicastif,
83: const char * minissdpdsock, int localport,
84: int ipv6, unsigned char ttl,
85: int * error,
86: int searchalltypes);
87:
88: /* parserootdesc() :
89: * parse root XML description of a UPnP device and fill the IGDdatas
90: * structure. */
91: MINIUPNP_LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *);
92:
93: /* structure used to get fast access to urls
94: * controlURL: controlURL of the WANIPConnection
95: * ipcondescURL: url of the description of the WANIPConnection
96: * controlURL_CIF: controlURL of the WANCommonInterfaceConfig
97: * controlURL_6FC: controlURL of the WANIPv6FirewallControl
98: */
99: struct UPNPUrls {
100: char * controlURL;
101: char * ipcondescURL;
102: char * controlURL_CIF;
103: char * controlURL_6FC;
104: char * rootdescURL;
105: };
106:
107: /* UPNP_GetValidIGD() :
108: * return values :
109: * 0 = NO IGD found
110: * 1 = A valid connected IGD has been found
111: * 2 = A valid IGD has been found but it reported as
112: * not connected
113: * 3 = an UPnP device has been found but was not recognized as an IGD
114: *
115: * In any non zero return case, the urls and data structures
116: * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
117: * free allocated memory.
118: */
119: MINIUPNP_LIBSPEC int
120: UPNP_GetValidIGD(struct UPNPDev * devlist,
121: struct UPNPUrls * urls,
122: struct IGDdatas * data,
123: char * lanaddr, int lanaddrlen);
124:
125: /* UPNP_GetIGDFromUrl()
126: * Used when skipping the discovery process.
127: * When succeding, urls, data, and lanaddr arguments are set.
128: * return value :
129: * 0 - Not ok
130: * 1 - OK */
131: MINIUPNP_LIBSPEC int
132: UPNP_GetIGDFromUrl(const char * rootdescurl,
133: struct UPNPUrls * urls,
134: struct IGDdatas * data,
135: char * lanaddr, int lanaddrlen);
136:
137: MINIUPNP_LIBSPEC void
138: GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *,
139: const char *, unsigned int);
140:
141: MINIUPNP_LIBSPEC void
142: FreeUPNPUrls(struct UPNPUrls *);
143:
144: /* return 0 or 1 */
145: MINIUPNP_LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *);
146:
147:
148: #ifdef __cplusplus
149: }
150: #endif
151:
152: #endif
153:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>