libUPnP 22.2.1
upnp.h
Go to the documentation of this file.
1#ifndef UPNP_H
2#define UPNP_H
3
4/*******************************************************************************
5 *
6 * Copyright (c) 2000-2003 Intel Corporation
7 * All rights reserved.
8 * Copyright (C) 2011-2012 France Telecom All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
12 *
13 * * Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 * * Neither name of Intel Corporation nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
26 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
29 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
30 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 ******************************************************************************/
35
43
44#include "UpnpGlobal.h"
45#include "UpnpInet.h" /* IWYU pragma: keep */
46#include "ixml.h"
47#include "upnpconfig.h" /* IWYU pragma: keep */
48
49/*
50 * \todo Document the exact reason of these include files and solve this
51 * include mess in an include file like UpnpTime.h
52 */
53#ifdef _WIN32
54 #include <time.h>
55 #if defined(UPNP_USE_MSVCPP) || defined(UPNP_USE_BCBPP)
56 #include <sys/types.h> /* needed for off_t */
57 #endif
58#elif (defined(BSD) && BSD >= 199306)
59 #include <time.h>
60#else
61 /* Other systems ??? */
62#endif
63
64#ifdef UPNP_ENABLE_OPEN_SSL
65 #include <openssl/ssl.h>
66#endif
67
68#define LINE_SIZE (size_t)180
69#define NAME_SIZE (size_t)256
70#define MNFT_NAME_SIZE 64
71#define MODL_NAME_SIZE 32
72#define SERL_NUMR_SIZE 64
73#define MODL_DESC_SIZE 64
74#define UPNP_INFINITE -1
75#define UPNP_USING_CHUNKED -3
76#define UPNP_UNTIL_CLOSE -4
77
89
97#define UPNP_E_SUCCESS 0
98
102#define UPNP_E_INVALID_HANDLE -100
103
110#define UPNP_E_INVALID_PARAM -101
111
117#define UPNP_E_OUTOF_HANDLE -102
118
119#define UPNP_E_OUTOF_CONTEXT -103
120
127#define UPNP_E_OUTOF_MEMORY -104
128
135#define UPNP_E_INIT -105
136
137#define UPNP_E_BUFFER_TOO_SMALL -106
138
144#define UPNP_E_INVALID_DESC -107
145
153#define UPNP_E_INVALID_URL -108
154
155#define UPNP_E_INVALID_SID -109
156
157#define UPNP_E_INVALID_DEVICE -110
158
165#define UPNP_E_INVALID_SERVICE -111
166
173#define UPNP_E_BAD_RESPONSE -113
174
175#define UPNP_E_BAD_REQUEST -114
176
183#define UPNP_E_INVALID_ACTION -115
184
191#define UPNP_E_FINISH -116
192
198#define UPNP_E_INIT_FAILED -117
199
205#define UPNP_E_URL_TOO_BIG -118
206
216#define UPNP_E_BAD_HTTPMSG -119
217
224#define UPNP_E_ALREADY_REGISTERED -120
225
230#define UPNP_E_INVALID_INTERFACE -121
231
239#define UPNP_E_NETWORK_ERROR -200
240
249#define UPNP_E_SOCKET_WRITE -201
250
259#define UPNP_E_SOCKET_READ -202
260
269#define UPNP_E_SOCKET_BIND -203
270
279#define UPNP_E_SOCKET_CONNECT -204
280
289#define UPNP_E_OUTOF_SOCKET -205
290
297#define UPNP_E_LISTEN -206
298
305#define UPNP_E_TIMEDOUT -207
306
313#define UPNP_E_SOCKET_ERROR -208
314
315#define UPNP_E_FILE_WRITE_ERROR -209
316
322#define UPNP_E_CANCELED -210
323
324#define UPNP_E_EVENT_PROTOCOL -300
325
329#define UPNP_E_SUBSCRIBE_UNACCEPTED -301
330
334#define UPNP_E_UNSUBSCRIBE_UNACCEPTED -302
335
339#define UPNP_E_NOTIFY_UNACCEPTED -303
340
347#define UPNP_E_INVALID_ARGUMENT -501
348
353#define UPNP_E_FILE_NOT_FOUND -502
354
358#define UPNP_E_FILE_READ_ERROR -503
359
364#define UPNP_E_EXT_NOT_XML -504
365
366#define UPNP_E_NO_WEB_SERVER -505
367#define UPNP_E_OUTOF_BOUNDS -506
368
373#define UPNP_E_NOT_FOUND -507
374
379#define UPNP_E_INTERNAL_ERROR -911
380
381/* SOAP-related error codes */
382#define UPNP_SOAP_E_INVALID_ACTION 401
383#define UPNP_SOAP_E_INVALID_ARGS 402
384#define UPNP_SOAP_E_OUT_OF_SYNC 403
385#define UPNP_SOAP_E_INVALID_VAR 404
386#define UPNP_SOAP_E_ACTION_FAILED 501
387
388/* @} ErrorCodes */
389
390/*
391 * Opaque data structures. The following includes are data structures that
392 * must be externally visible. Since version 1.8.0, only an opaque typedef
393 * is visible from the outside world. Any operation on these data types
394 * must be done using the appropriate interface functions.
395 *
396 * This policy has the great advantage that it is now possible to change
397 * the internal implementation of these data structures without breaking
398 * the API.
399 */
400#include "UpnpActionComplete.h" // IWYU pragma: keep
401#include "UpnpActionRequest.h" // IWYU pragma: keep
402#include "UpnpDiscovery.h" // IWYU pragma: keep
403#include "UpnpEvent.h" // IWYU pragma: keep
404#include "UpnpEventSubscribe.h" // IWYU pragma: keep
405#include "UpnpFileInfo.h" // IWYU pragma: keep
406#include "UpnpStateVarComplete.h" // IWYU pragma: keep
407#include "UpnpStateVarRequest.h" // IWYU pragma: keep
408#include "UpnpSubscriptionRequest.h" // IWYU pragma: keep
409
415
416enum UpnpOpenFileMode
417{
418 UPNP_READ,
419 UPNP_WRITE
420};
421
430
440
448typedef char Upnp_SID[44];
449
474
475typedef enum Upnp_SType_e Upnp_SType;
476
496
497typedef enum Upnp_DescType_e Upnp_DescType;
498
499#include "Callback.h"
500
501/* @} Constants and Types */
502
503#ifdef __cplusplus
504extern "C" {
505#endif /* __cplusplus */
506
512
551 const char *IfName,
554 unsigned short DestPort);
555
575#ifdef UPNP_ENABLE_OPEN_SSL
576UPNP_EXPORT_SPEC int UpnpInitSslContext(
581 int initOpenSslLib,
584 const SSL_METHOD *sslMethod);
585
601UPNP_EXPORT_SPEC SSL_CTX *UpnpGetSslCtx(void);
602
628UPNP_EXPORT_SPEC int UpnpSetSslCtx(
630 SSL_CTX *ctx);
631#endif
632
653
665UPNP_EXPORT_SPEC unsigned short UpnpGetServerPort(void);
666
678UPNP_EXPORT_SPEC unsigned short UpnpGetServerPort6(void);
679
691UPNP_EXPORT_SPEC unsigned short UpnpGetServerUlaGuaPort6(void);
692
704UPNP_EXPORT_SPEC unsigned short UpnpGetSsdpReqPort4(void);
705
717UPNP_EXPORT_SPEC unsigned short UpnpGetSsdpReqPort6(void);
718
731
744
797 const char *DescUrl,
800 Upnp_FunPtr Callback,
803 const void *Cookie,
805 UpnpDevice_Handle *Hnd);
806
877 Upnp_DescType descriptionType,
880 const char *description,
883 size_t bufferLen,
886 int config_baseURL,
889 Upnp_FunPtr Fun,
892 const void *Cookie,
894 UpnpDevice_Handle *Hnd);
895
934 const char *DescUrl,
937 Upnp_FunPtr Callback,
940 const void *Cookie,
945 int AddressFamily);
946
986 const char *DescUrl,
989 Upnp_FunPtr Callback,
992 const void *Cookie,
997 int AddressFamily,
1000 const char *LowerDescUrl);
1001
1020 UpnpDevice_Handle Hnd);
1021
1045 int PowerState,
1047 int SleepPeriod,
1049 int RegistrationState);
1050
1071 Upnp_FunPtr Callback,
1074 const void *Cookie,
1077 UpnpClient_Handle *Hnd);
1078
1097 UpnpClient_Handle Hnd);
1098
1123 size_t contentLength);
1124
1158 size_t headerSize);
1159
1160/* @} Initialization and Registration */
1161
1162/******************************************************************************
1163 ******************************************************************************
1164 * *
1165 * D I S C O V E R Y *
1166 * *
1167 ******************************************************************************
1168 ******************************************************************************/
1169
1175
1206 int Mx,
1209 const char *Target_const,
1211 const void *Cookie_const);
1212
1236 int Exp);
1237
1264 int Exp,
1266 int PowerState,
1268 int SleepPeriod,
1270 int RegistrationState);
1271
1272/* @} Discovery */
1273
1274/******************************************************************************
1275 ******************************************************************************
1276 * *
1277 * C O N T R O L *
1278 * *
1279 ******************************************************************************
1280 ******************************************************************************/
1281
1287
1317 const char *ActionURL,
1319 const char *VarName,
1323 DOMString *StVarVal);
1324
1346 const char *ActionURL,
1348 const char *VarName,
1351 Upnp_FunPtr Fun,
1354 const void *Cookie);
1355
1383 const char *ActionURL,
1385 const char *ServiceType,
1387 const char *DevUDN,
1389 IXML_Document *Action,
1392 IXML_Document **RespNode);
1393
1421 const char *ActionURL,
1423 const char *ServiceType,
1425 const char *DevUDN,
1428 IXML_Document *Header,
1430 IXML_Document *Action,
1433 IXML_Document **RespNode);
1434
1460 const char *ActionURL,
1462 const char *ServiceType,
1464 const char *DevUDN,
1466 IXML_Document *Action,
1469 Upnp_FunPtr Fun,
1472 const void *Cookie);
1473
1499 const char *ActionURL,
1501 const char *ServiceType,
1503 const char *DevUDN,
1506 IXML_Document *Header,
1508 IXML_Document *Action,
1511 Upnp_FunPtr Fun,
1514 const void *Cookie);
1515
1517
1518/******************************************************************************
1519 ******************************************************************************
1520 * *
1521 * E V E N T I N G *
1522 * *
1523 ******************************************************************************
1524 ******************************************************************************/
1525
1531
1562 const char *DevID,
1565 const char *ServID,
1567 const char **VarName,
1569 const char **NewVal,
1571 int cVariables,
1573 const Upnp_SID SubsId);
1574
1602 const char *DevID,
1605 const char *ServID,
1609 IXML_Document *PropSet,
1611 const Upnp_SID SubsId);
1612
1639 const char *DevID,
1641 const char *ServID,
1643 const char **VarName,
1645 const char **NewVal,
1647 int cVariables);
1648
1675 const char *DevID,
1677 const char *ServID,
1681 IXML_Document *PropSet);
1682
1717 int *TimeOut,
1719 const Upnp_SID SubsId);
1720
1774 int TimeOut,
1776 Upnp_SID SubsId,
1779 Upnp_FunPtr Fun,
1782 const void *Cookie);
1783
1802 int MaxSubscriptions);
1803
1823 int MaxSubscriptionTimeOut);
1824
1858 const char *PublisherUrl,
1862 int *TimeOut,
1864 Upnp_SID SubsId);
1865
1918 const char *PublisherUrl,
1921 int TimeOut,
1923 Upnp_FunPtr Fun,
1925 const void *Cookie);
1926
1961 const Upnp_SID SubsId);
1962
2016 Upnp_SID SubsId,
2019 Upnp_FunPtr Fun,
2022 const void *Cookie);
2023
2025
2026/******************************************************************************
2027 ******************************************************************************
2028 * *
2029 * C L I E N T - A P I *
2030 * *
2031 ******************************************************************************
2032 ******************************************************************************/
2033
2039
2044{
2045 UPNP_HTTPMETHOD_PUT = 0,
2046 UPNP_HTTPMETHOD_DELETE = 1,
2047 UPNP_HTTPMETHOD_GET = 2,
2048 UPNP_HTTPMETHOD_HEAD = 3,
2049 UPNP_HTTPMETHOD_POST = 4
2050};
2051
2052typedef enum Upnp_HttpMethod_e Upnp_HttpMethod;
2053
2082 const char *url,
2084 char **outBuf,
2087 char *contentType);
2088
2121 const char *url,
2123 void **handle,
2125 char **contentType,
2127 int *contentLength,
2129 int *httpStatus,
2134 int timeout);
2135
2168 const char *url,
2170 const char *proxy_str,
2172 void **handle,
2174 char **contentType,
2176 int *contentLength,
2178 int *httpStatus,
2183 int timeout);
2184
2217 const char *url,
2219 void **handle,
2221 char **contentType,
2223 int *contentLength,
2226 int *httpStatus,
2229 int lowRange,
2232 int highRange,
2236 int timeout);
2237
2257 void *handle,
2259 char *buf,
2261 size_t *size,
2266 int timeout);
2267
2278 void *handle,
2280 size_t *length,
2282 size_t *total);
2283
2294 void *handle);
2295
2307 void *handle);
2308
2336 const char *url,
2340 void **handle,
2343 const char *contentType,
2345 int contentLength,
2349 int timeout);
2350
2367 void *handle,
2369 char *buf,
2371 size_t *size,
2375 int timeout);
2376
2393 void *handle,
2396 int *httpStatus,
2400 int timeout);
2401
2428 const char *url,
2432 void **handle,
2436 int timeout);
2437
2464 /* ![in] The method to use to make the request. */
2465 Upnp_HttpMethod method,
2469 const char *url,
2471 void *handle,
2476 UpnpString *headers,
2478 const char *contentType,
2483 int contentLength,
2487 int timeout);
2488
2506 void *handle,
2508 char *buf,
2510 size_t *size,
2514 int timeout);
2515
2536 void *handle,
2540 int timeout);
2541
2573 void *handle,
2576 UpnpString *headers,
2578 char **contentType,
2580 int *contentLength,
2582 int *httpStatus,
2587 int timeout);
2588
2610 void *handle,
2612 char *buf,
2614 size_t *size,
2619 int timeout);
2620
2636 void *handle);
2637
2667 const char *url,
2669 IXML_Document **xmlDoc);
2670
2672
2673/******************************************************************************
2674 ******************************************************************************
2675 * *
2676 * W E B S E R V E R A P I *
2677 * *
2678 ******************************************************************************
2679 ******************************************************************************/
2680
2686
2705 const char *rootDir);
2706
2710typedef void *UpnpWebFileHandle;
2711
2715typedef int (*VDCallback_GetInfo)(
2717 const char *filename,
2720 UpnpFileInfo *info,
2722 const void *cookie,
2724 const void **request_cookie);
2725
2735 VDCallback_GetInfo callback);
2736
2742 const char *filename,
2745 enum UpnpOpenFileMode Mode,
2747 const void *cookie,
2749 const void *request_cookie);
2750
2760
2764typedef int (*VDCallback_Read)(
2766 UpnpWebFileHandle fileHnd,
2768 char *buf,
2770 size_t buflen,
2772 const void *cookie,
2774 const void *request_cookie);
2775
2785
2789typedef int (*VDCallback_Write)(
2791 UpnpWebFileHandle fileHnd,
2793 char *buf,
2795 size_t buflen,
2797 const void *cookie,
2799 const void *request_cookie);
2800
2810 VDCallback_Write callback);
2811
2815typedef int (*VDCallback_Seek)(
2817 UpnpWebFileHandle fileHnd,
2821 off_t offset,
2826 int origin,
2828 const void *cookie,
2830 const void *request_cookie);
2831
2841
2845typedef int (*VDCallback_Close)(
2847 UpnpWebFileHandle fileHnd,
2849 const void *cookie,
2851 const void *request_cookie);
2852
2862 VDCallback_Close callback);
2863
2876 int enable);
2877
2886
2887/*
2888 * \brief Callback for validating HTTP requests HOST header values.
2889 *
2890 * @param hostname the value in the request HOST header.
2891 * @return An integer representing one of the following:
2892 * \li \c UPNP_E_SUCCESS: a request with the HOST header set to hostname
2893 * should be processed.
2894 * \li \c UPNP_E_BAD_HTTPMSG the request should be rejected.
2895 */
2896typedef int (*WebCallback_HostValidate)(const char *hostname, void *cookie);
2897
2898/*
2899 * \brief Set callback for validating HTTP requests HOST header values.
2900 *
2901 * @param callback the host validating callback function or NULL.
2902 * @param cookie the chocolate you like.
2903 */
2904UPNP_EXPORT_SPEC void UpnpSetHostValidateCallback(
2905 WebCallback_HostValidate callback, void *cookie);
2906
2907/*
2908 * \brief Enable or disable literal IP redirection.
2909 *
2910 * @param enable Zero to disable (default) non-zero to enable.
2911 */
2912UPNP_EXPORT_SPEC void UpnpSetAllowLiteralHostRedirection(int enable);
2913
2927 const char *corsString);
2928
2945 const char *dirName,
2947 const void *cookie,
2950 const void **oldcookie);
2951
2961 const char *dirName);
2962
2967
2968/* @} Web Server API */
2969
2970#ifdef __cplusplus
2971}
2972#endif /* __cplusplus */
2973
2974/* @} UPnPAPI UPnP API */
2975
2976#endif /* UPNP_H */
int(* Upnp_FunPtr)(Upnp_EventType EventType, void *Event, void *Cookie)
Definition Callback.h:145
Header file for UpnpActionComplete methods.
Header file for UpnpActionRequest methods.
Header file for UpnpDiscovery methods.
Header file for UpnpEventSubscribe methods.
Header file for UpnpEvent methods.
Header file for UpnpFileInfo methods.
struct s_UpnpFileInfo UpnpFileInfo
Definition UpnpFileInfo.h:32
Defines constants that for some reason are not defined on some systems.
#define UPNP_EXPORT_SPEC
Export functions on WIN32 DLLs.
Definition UpnpGlobal.h:101
Provides a platform independent way to include TCP/IP types and functions.
Header file for UpnpStateVarComplete methods.
Header file for UpnpStateVarRequest methods.
Header file for UpnpSubscriptionRequest methods.
int UpnpCloseHttpGet(void *handle)
Closes the connection and frees memory that was allocated for the handle parameter.
Definition upnpapi.c:3549
int UpnpSendActionEx(UpnpClient_Handle Hnd, const char *ActionURL, const char *ServiceType, const char *DevUDN, IXML_Document *Header, IXML_Document *Action, IXML_Document **RespNode)
Sends a message to change a state variable in a service.
void UpnpRemoveAllVirtualDirs(void)
Removes all virtual directory mappings.
Definition upnpapi.c:4695
int UpnpVirtualDir_set_GetInfoCallback(VDCallback_GetInfo callback)
Sets the get_info callback function to be used to access a virtual directory.
Definition upnpapi.c:4767
int UpnpRenewSubscriptionAsync(UpnpClient_Handle Hnd, int TimeOut, Upnp_SID SubsId, Upnp_FunPtr Fun, const void *Cookie)
Renews a subscription that is about to expire, generating a callback when the operation is complete.
Definition upnpapi.c:2613
int(* VDCallback_Close)(UpnpWebFileHandle fileHnd, const void *cookie, const void *request_cookie)
Close callback function prototype.
Definition upnp.h:2845
char Upnp_SID[44]
Holds the subscription identifier for a subscription between a client and a device.
Definition upnp.h:448
int UpnpOpenHttpGet(const char *url, void **handle, char **contentType, int *contentLength, int *httpStatus, int timeout)
Gets a file specified in a URL.
Definition upnpapi.c:3465
unsigned short UpnpGetServerPort(void)
Returns the internal server IPv4 UPnP listening port.
Definition upnpapi.c:805
int UpnpRegisterRootDevice2(Upnp_DescType descriptionType, const char *description, size_t bufferLen, int config_baseURL, Upnp_FunPtr Fun, const void *Cookie, UpnpDevice_Handle *Hnd)
Registers a device application with the UPnP Library. Similar to UpnpRegisterRootDevice,...
Definition upnpapi.c:1163
Upnp_DescType_e
Specifies the type of description in UpnpRegisterRootDevice2.
Definition upnp.h:484
int UpnpReadHttpGet(void *handle, char *buf, size_t *size, int timeout)
Gets specified number of bytes from a file specified in a URL.
Definition upnpapi.c:3551
int UpnpSubscribeAsync(UpnpClient_Handle Hnd, const char *PublisherUrl, int TimeOut, Upnp_FunPtr Fun, const void *Cookie)
Performs the same operation as UpnpSubscribe, but returns immediately and calls the registered callba...
Definition upnpapi.c:2275
int UpnpCloseHttpPost(void *handle, int *httpStatus, int timeout)
Sends and receives any pending data, closes the connection with the server, and frees memory allocate...
Definition upnpapi.c:3454
int UpnpSendAdvertisementLowPower(UpnpDevice_Handle Hnd, int Exp, int PowerState, int SleepPeriod, int RegistrationState)
Sends out the discovery announcements for all devices and services for a device.
int UpnpSendActionAsync(UpnpClient_Handle Hnd, const char *ActionURL, const char *ServiceType, const char *DevUDN, IXML_Document *Action, Upnp_FunPtr Fun, const void *Cookie)
Sends a message to change a state variable in a service, generating a callback when the operation is ...
int UpnpRenewSubscription(UpnpClient_Handle Hnd, int *TimeOut, const Upnp_SID SubsId)
Renews a subscription that is about to expire.
Definition upnpapi.c:2552
int UpnpSubscribe(UpnpClient_Handle Hnd, const char *PublisherUrl, int *TimeOut, Upnp_SID SubsId)
Registers a control point to receive event notifications from another device.
Definition upnpapi.c:2352
int UpnpUnSubscribeAsync(UpnpClient_Handle Hnd, Upnp_SID SubsId, Upnp_FunPtr Fun, const void *Cookie)
Removes a subscription of a control point from a service previously subscribed to using UpnpSubscribe...
Definition upnpapi.c:2477
int UpnpAcceptSubscriptionExt(UpnpDevice_Handle Hnd, const char *DevID, const char *ServID, IXML_Document *PropSet, const Upnp_SID SubsId)
Similar to UpnpAcceptSubscription() except that it takes a DOM document for the variables to event ra...
Definition upnpapi.c:2866
int UpnpEnableWebserver(int enable)
Enables or disables the webserver.
Definition upnpapi.c:4716
int UpnpRegisterRootDevice4(const char *DescUrl, Upnp_FunPtr Callback, const void *Cookie, UpnpDevice_Handle *Hnd, int AddressFamily, const char *LowerDescUrl)
Registers a device application for a specific address family with the UPnP library....
Definition upnpapi.c:1352
int UpnpOpenHttpPost(const char *url, void **handle, const char *contentType, int contentLength, int timeout)
Makes an HTTP POST request message, opens a connection to the server and sends the POST request to th...
Definition upnpapi.c:3430
void * UpnpWebFileHandle
The type of handle returned by the web server for open requests.
Definition upnp.h:2710
int UpnpDownloadUrlItem(const char *url, char **outBuf, char *contentType)
Downloads a file specified in a URL.
Definition upnpapi.c:3618
int UpnpAddVirtualDir(const char *dirName, const void *cookie, const void **oldcookie)
Adds a virtual directory mapping.
Definition upnpapi.c:4589
int UpnpReadHttpResponse(void *handle, char *buf, size_t *size, int timeout)
Reads the content of a response using a connection previously created by UpnpOpenHttpConnection.
Definition upnpapi.c:3608
int UpnpSetMaxContentLength(size_t contentLength)
Sets the maximum content-length that the SDK will process on an incoming SOAP requests or responses.
Definition upnpapi.c:4827
int UpnpMakeHttpRequest(Upnp_HttpMethod method, const char *url, void *handle, UpnpString *headers, const char *contentType, int contentLength, int timeout)
Makes a HTTP request using a connection previously created by UpnpOpenHttpConnection.
Definition upnpapi.c:3566
int UpnpSearchAsync(UpnpClient_Handle Hnd, int Mx, const char *Target_const, const void *Cookie_const)
Searches for devices matching the given search target.
int UpnpSendAction(UpnpClient_Handle Hnd, const char *ActionURL, const char *ServiceType, const char *DevUDN, IXML_Document *Action, IXML_Document **RespNode)
Sends a message to change a state variable in a service.
int(* VDCallback_GetInfo)(const char *filename, UpnpFileInfo *info, const void *cookie, const void **request_cookie)
Get-info callback function prototype.
Definition upnp.h:2715
int UpnpUnSubscribe(UpnpClient_Handle Hnd, const Upnp_SID SubsId)
Removes the subscription of a control point from a service previously subscribed to using UpnpSubscri...
Definition upnpapi.c:2425
int UpnpFinish(void)
Initializes the OpenSSL library, and the OpenSSL context for use with pupnp.
Definition upnpapi.c:714
char * UpnpGetServerUlaGuaIp6Address(void)
Returns the IPv6 unique-local or globally-unique listening ip address.
Definition upnpapi.c:891
int UpnpOpenHttpGetProxy(const char *url, const char *proxy_str, void **handle, char **contentType, int *contentLength, int *httpStatus, int timeout)
Gets a file specified in a URL through the specified proxy.
Definition upnpapi.c:3496
Upnp_HttpMethod_e
Different HTTP methods.
Definition upnp.h:2044
int UpnpVirtualDir_set_WriteCallback(VDCallback_Write callback)
Sets the write callback function to be used to access a virtual directory.
Definition upnpapi.c:4797
int UpnpIsWebserverEnabled(void)
Returns 1 if the webserver is enabled, or 0 if it is not.
Definition upnpapi.c:4746
int UpnpWriteHttpPost(void *handle, char *buf, size_t *size, int timeout)
Sends a request to a server to copy the contents of a buffer to the URI specified in the UpnpOpenHttp...
Definition upnpapi.c:3449
int UpnpVirtualDir_set_SeekCallback(VDCallback_Seek callback)
Sets the seek callback function to be used to access a virtual directory.
Definition upnpapi.c:4807
int UpnpHttpGetProgress(void *handle, size_t *length, size_t *total)
Retrieve progress information of a http-get transfer.
Definition upnpapi.c:3556
int UpnpSetMaxSubscriptions(UpnpDevice_Handle Hnd, int MaxSubscriptions)
Sets the maximum number of subscriptions accepted per service.
Definition upnpapi.c:2191
int UpnpVirtualDir_set_ReadCallback(VDCallback_Read callback)
Sets the read callback function to be used to access a virtual directory.
Definition upnpapi.c:4787
char * UpnpGetServerIpAddress(void)
Returns the local IPv4 listening ip address.
Definition upnpapi.c:871
int UpnpInit2(const char *IfName, unsigned short DestPort)
Initializes the Linux SDK for UPnP Devices (IPv4 or IPv6).
Definition upnpapi.c:561
int UpnpNotify(UpnpDevice_Handle, const char *DevID, const char *ServID, const char **VarName, const char **NewVal, int cVariables)
Sends out an event change notification to all control points subscribed to a particular service.
Definition upnpapi.c:2688
int UpnpClient_Handle
Returned when a control point application registers with UpnpRegisterClient.
Definition upnp.h:429
int UpnpSetWebServerRootDir(const char *rootDir)
Sets the document root directory for the internal web server.
int UpnpCloseHttpConnection(void *handle)
Closes the connection created with UpnpOpenHttpConnection and frees any memory associated with the co...
Definition upnpapi.c:3613
unsigned short UpnpGetServerUlaGuaPort6(void)
Returns the internal server IPv6 ULA or GUA UPnP listening port.
Definition upnpapi.c:825
int UpnpSetMaxSubscriptionTimeOut(UpnpDevice_Handle Hnd, int MaxSubscriptionTimeOut)
Sets the maximum time-out accepted for a subscription request or renewal.
Definition upnpapi.c:2231
int UpnpGetServiceVarStatusAsync(UpnpClient_Handle Hnd, const char *ActionURL, const char *VarName, Upnp_FunPtr Fun, const void *Cookie)
Queries the state of a variable of a service, generating a callback when the operation is complete.
unsigned short UpnpGetSsdpReqPort4(void)
Returns the source IPv4 port used for SSDP M-SEARCH requests.
Definition upnpapi.c:837
int UpnpRegisterRootDevice3(const char *DescUrl, Upnp_FunPtr Callback, const void *Cookie, UpnpDevice_Handle *Hnd, int AddressFamily)
Registers a device application for a specific address family with the UPnP library.
Definition upnpapi.c:1335
int UpnpSendActionExAsync(UpnpClient_Handle Hnd, const char *ActionURL, const char *ServiceType, const char *DevUDN, IXML_Document *Header, IXML_Document *Action, Upnp_FunPtr Fun, const void *Cookie)
Sends a message to change a state variable in a service, generating a callback when the operation is ...
int UpnpSendAdvertisement(UpnpDevice_Handle Hnd, int Exp)
Sends out the discovery announcements for all devices and services for a device.
int UpnpNotifyExt(UpnpDevice_Handle, const char *DevID, const char *ServID, IXML_Document *PropSet)
Similar to UpnpNotify except that it takes a DOM document for the event rather than an array of strin...
Definition upnpapi.c:2738
int(* VDCallback_Seek)(UpnpWebFileHandle fileHnd, off_t offset, int origin, const void *cookie, const void *request_cookie)
Seek callback function prototype.
Definition upnp.h:2815
Upnp_SType_e
Represents the different types of searches that can be performed using the SDK for UPnP Devices API.
Definition upnp.h:459
int UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition upnp.h:439
int UpnpRegisterRootDevice(const char *DescUrl, Upnp_FunPtr Callback, const void *Cookie, UpnpDevice_Handle *Hnd)
Registers a device application with the UPnP Library.
Definition upnpapi.c:970
int UpnpRegisterClient(Upnp_FunPtr Callback, const void *Cookie, UpnpClient_Handle *Hnd)
Registers a control point application with the UPnP Library.
Definition upnpapi.c:1628
int UpnpSetMaxHeaderSize(size_t headerSize)
Sets the maximum size of the HTTP header block that the SDK will accept on an incoming request or res...
Definition upnpapi.c:4837
int UpnpUnRegisterRootDeviceLowPower(UpnpDevice_Handle Hnd, int PowerState, int SleepPeriod, int RegistrationState)
Unregisters a root device registered with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition upnpapi.c:1540
int UpnpOpenHttpGetEx(const char *url, void **handle, char **contentType, int *contentLength, int *httpStatus, int lowRange, int highRange, int timeout)
Gets specified number of bytes from a file specified in the URL.
Definition upnpapi.c:3528
int UpnpAcceptSubscription(UpnpDevice_Handle Hnd, const char *DevID, const char *ServID, const char **VarName, const char **NewVal, int cVariables, const Upnp_SID SubsId)
Accepts a subscription request and sends out the current state of the event table variables for a ser...
Definition upnpapi.c:2781
unsigned short UpnpGetServerPort6(void)
Returns the internal server IPv6 link-local (LLA) UPnP listening port.
Definition upnpapi.c:813
int UpnpUnRegisterRootDevice(UpnpDevice_Handle Hnd)
Unregisters a root device registered with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition upnpapi.c:1530
int UpnpRemoveVirtualDir(const char *dirName)
Removes a virtual directory mapping made with UpnpAddVirtualDir.
Definition upnpapi.c:4646
int UpnpEndHttpRequest(void *handle, int timeout)
Indicates the end of a HTTP request previously made by UpnpMakeHttpRequest.
Definition upnpapi.c:3588
int UpnpDownloadXmlDoc(const char *url, IXML_Document **xmlDoc)
Downloads an XML document specified in a URL.
Definition upnpapi.c:3634
unsigned short UpnpGetSsdpReqPort6(void)
Returns the source IPv6 port used for SSDP M-SEARCH requests.
Definition upnpapi.c:854
int UpnpCancelHttpGet(void *handle)
Set the cancel flag of the handle parameter.
Definition upnpapi.c:3547
int UpnpWriteHttpRequest(void *handle, char *buf, size_t *size, int timeout)
Writes the content of a HTTP request initiated by a UpnpMakeHttpRequest call. The end of the content ...
Definition upnpapi.c:3583
int(* VDCallback_Write)(UpnpWebFileHandle fileHnd, char *buf, size_t buflen, const void *cookie, const void *request_cookie)
Write callback function prototype.
Definition upnp.h:2789
int UpnpVirtualDir_set_OpenCallback(VDCallback_Open callback)
Sets the open callback function to be used to access a virtual directory.
Definition upnpapi.c:4777
int(* VDCallback_Read)(UpnpWebFileHandle fileHnd, char *buf, size_t buflen, const void *cookie, const void *request_cookie)
Read callback function prototype.
Definition upnp.h:2764
UpnpWebFileHandle(* VDCallback_Open)(const char *filename, enum UpnpOpenFileMode Mode, const void *cookie, const void *request_cookie)
Open callback function prototype.
Definition upnp.h:2740
char * UpnpGetServerIp6Address(void)
Returns the IPv6 link-local listening ip address.
Definition upnpapi.c:879
int UpnpUnRegisterClient(UpnpClient_Handle Hnd)
Unregisters a control point application, unsubscribing all active subscriptions.
Definition upnpapi.c:1684
int UpnpGetServiceVarStatus(UpnpClient_Handle Hnd, const char *ActionURL, const char *VarName, char **StVarVal)
Queries the state of a state variable of a service on another device.
int UpnpOpenHttpConnection(const char *url, void **handle, int timeout)
Opens a connection to the server.
Definition upnpapi.c:3561
int UpnpSetWebServerCorsString(const char *corsString)
Assign the Access-Control-Allow-Origin specfied by the input const char* cors_string parameterto the ...
int UpnpGetHttpResponse(void *handle, UpnpString *headers, char **contentType, int *contentLength, int *httpStatus, int timeout)
Gets the response from the server using a connection previously created by UpnpOpenHttpConnection.
Definition upnpapi.c:3593
int UpnpVirtualDir_set_CloseCallback(VDCallback_Close callback)
Sets the close callback function to be used to access a virtual directory.
Definition upnpapi.c:4817
@ UPNPREG_FILENAME_DESC
Definition upnp.h:490
@ UPNPREG_BUF_DESC
Definition upnp.h:494
@ UPNPREG_URL_DESC
Definition upnp.h:486
@ UPNP_S_ROOT
Definition upnp.h:464
@ UPNP_S_ALL
Definition upnp.h:461
@ UPNP_S_SERVICE
Definition upnp.h:472
@ UPNP_S_DEVICE
Definition upnp.h:468
struct s_UpnpString UpnpString
Type of the string objects inside libupnp.
Definition UpnpString.h:33
#define DOMString
The type of DOM strings.
Definition ixml.h:49
struct _IXML_Document IXML_Document
Data structure representing the DOM Document.