Go to the documentation of this file.
45 #include "upnpconfig.h"
55 #if defined(UPNP_USE_MSVCPP) || defined(UPNP_USE_BCBPP)
56 #include <sys/types.h>
58 #elif (defined(BSD) && BSD >= 199306)
64 #ifdef UPNP_ENABLE_OPEN_SSL
65 #include <openssl/ssl.h>
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
97 #define UPNP_E_SUCCESS 0
102 #define UPNP_E_INVALID_HANDLE -100
110 #define UPNP_E_INVALID_PARAM -101
117 #define UPNP_E_OUTOF_HANDLE -102
119 #define UPNP_E_OUTOF_CONTEXT -103
126 #define UPNP_E_OUTOF_MEMORY -104
134 #define UPNP_E_INIT -105
136 #define UPNP_E_BUFFER_TOO_SMALL -106
143 #define UPNP_E_INVALID_DESC -107
152 #define UPNP_E_INVALID_URL -108
154 #define UPNP_E_INVALID_SID -109
156 #define UPNP_E_INVALID_DEVICE -110
164 #define UPNP_E_INVALID_SERVICE -111
172 #define UPNP_E_BAD_RESPONSE -113
174 #define UPNP_E_BAD_REQUEST -114
182 #define UPNP_E_INVALID_ACTION -115
189 #define UPNP_E_FINISH -116
196 #define UPNP_E_INIT_FAILED -117
203 #define UPNP_E_URL_TOO_BIG -118
214 #define UPNP_E_BAD_HTTPMSG -119
222 #define UPNP_E_ALREADY_REGISTERED -120
228 #define UPNP_E_INVALID_INTERFACE -121
237 #define UPNP_E_NETWORK_ERROR -200
247 #define UPNP_E_SOCKET_WRITE -201
257 #define UPNP_E_SOCKET_READ -202
267 #define UPNP_E_SOCKET_BIND -203
277 #define UPNP_E_SOCKET_CONNECT -204
287 #define UPNP_E_OUTOF_SOCKET -205
295 #define UPNP_E_LISTEN -206
303 #define UPNP_E_TIMEDOUT -207
311 #define UPNP_E_SOCKET_ERROR -208
313 #define UPNP_E_FILE_WRITE_ERROR -209
319 #define UPNP_E_CANCELED -210
321 #define UPNP_E_EVENT_PROTOCOL -300
326 #define UPNP_E_SUBSCRIBE_UNACCEPTED -301
331 #define UPNP_E_UNSUBSCRIBE_UNACCEPTED -302
336 #define UPNP_E_NOTIFY_UNACCEPTED -303
344 #define UPNP_E_INVALID_ARGUMENT -501
350 #define UPNP_E_FILE_NOT_FOUND -502
355 #define UPNP_E_FILE_READ_ERROR -503
361 #define UPNP_E_EXT_NOT_XML -504
363 #define UPNP_E_NO_WEB_SERVER -505
364 #define UPNP_E_OUTOF_BOUNDS -506
370 #define UPNP_E_NOT_FOUND -507
376 #define UPNP_E_INTERNAL_ERROR -911
379 #define UPNP_SOAP_E_INVALID_ACTION 401
380 #define UPNP_SOAP_E_INVALID_ARGS 402
381 #define UPNP_SOAP_E_OUT_OF_SYNC 403
382 #define UPNP_SOAP_E_INVALID_VAR 404
383 #define UPNP_SOAP_E_ACTION_FAILED 501
413 enum UpnpOpenFileMode
546 unsigned short DestPort);
560 #ifdef UPNP_ENABLE_OPEN_SSL
568 const SSL_METHOD *sslMethod);
643 EXPORT_SPEC char *UpnpGetServerUlaGuaIp6Address(
void);
761 Upnp_DescType descriptionType,
764 const char* description,
879 const char *LowerDescUrl);
928 int RegistrationState);
986 size_t contentLength);
1007 size_t contentLength);
1058 const char *TTarget_constarget_const,
1060 const void *Cookie_const);
1119 int RegistrationState);
1166 const char *ActionURL,
1168 const char *VarName,
1195 const char *ActionURL,
1197 const char *VarName,
1202 const void *Cookie);
1231 const char *ActionURL,
1233 const char *ServiceType,
1269 const char *ActionURL,
1271 const char *ServiceType,
1308 const char *ActionURL,
1310 const char *ServiceType,
1320 const void *Cookie);
1347 const char *ActionURL,
1349 const char *ServiceType,
1362 const void *Cookie);
1413 const char **VarName,
1415 const char **NewVal,
1486 const char **VarName,
1488 const char **NewVal,
1621 const void *Cookie);
1641 int MaxSubscriptions);
1662 int MaxSubscriptionTimeOut);
1697 const char *PublisherUrl,
1757 const char *PublisherUrl,
1764 const void *Cookie);
1856 const void *Cookie);
1879 UPNP_HTTPMETHOD_PUT = 0,
1880 UPNP_HTTPMETHOD_DELETE = 1,
1881 UPNP_HTTPMETHOD_GET = 2,
1882 UPNP_HTTPMETHOD_HEAD = 3,
1883 UPNP_HTTPMETHOD_POST = 4
2003 const char *proxy_str,
2169 const char *contentType,
2288 Upnp_HttpMethod method,
2299 const char *contentType,
2522 const char *rootDir);
2534 const char *filename,
2538 const void *cookie);
2555 const char *filename,
2558 enum UpnpOpenFileMode Mode,
2560 const void *cookie);
2583 const void *cookie);
2606 const void *cookie);
2634 const void *cookie);
2653 const void *cookie);
2701 const char *dirName,
2705 const void **oldcookie);
2716 const char *dirName);
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:1064
int(* VDCallback_Read)(UpnpWebFileHandle fileHnd, char *buf, size_t buflen, const void *cookie)
Read callback function prototype.
Definition: upnp.h:2575
int UpnpVirtualDir_set_WriteCallback(VDCallback_Write callback)
Sets the write callback function to be used to access a virtual directory.
Definition: upnpapi.c:4163
int UpnpGetServiceVarStatus(UpnpClient_Handle Hnd, const char *ActionURL, const char *VarName, DOMString *StVarVal)
Queries the state of a state variable of a service on another device.
Definition: upnpapi.c:2942
UpnpActionComplete object declaration.
int UpnpCloseHttpConnection(void *handle)
Closes the connection created with UpnpOpenHttpConnection and frees any memory associated with the co...
Definition: upnpapi.c:3167
int(* VDCallback_Close)(UpnpWebFileHandle fileHnd, const void *cookie)
Close callback function prototype.
Definition: upnp.h:2649
UpnpStateVarRequest object declararion.
@ UPNPREG_BUF_DESC
Definition: upnp.h:488
Upnp_DescType_e
Specifies the type of description in UpnpRegisterRootDevice2.
Definition: upnp.h:478
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:3059
UpnpFileInfo object declararion.
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:2998
@ UPNP_S_SERVICE
Definition: upnp.h:467
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:763
int UpnpSetContentLength(UpnpClient_Handle Hnd, size_t contentLength)
Definition: upnpapi.c:4201
int UpnpSetMaxSubscriptions(UpnpDevice_Handle Hnd, int MaxSubscriptions)
Sets the maximum number of subscriptions accepted per service.
Definition: upnpapi.c:1814
char Upnp_SID[44]
Holds the subscription identifier for a subscription between a client and a device.
Definition: upnp.h:445
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 eventable variables for a servi...
Definition: upnpapi.c:2380
int UpnpCloseHttpGet(void *handle)
Closes the connection and frees memory that was allocated for the handle parameter.
Definition: upnpapi.c:3104
int UpnpRenewSubscription(UpnpClient_Handle Hnd, int *TimeOut, const Upnp_SID SubsId)
Renews a subscription that is about to expire.
Definition: upnpapi.c:2151
int UpnpDownloadXmlDoc(const char *url, IXML_Document **xmlDoc)
Downloads an XML document specified in a URL.
Definition: upnpapi.c:3190
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 ...
Definition: upnpapi.c:2751
int UpnpClient_Handle
Returned when a control point application registers with UpnpRegisterClient.
Definition: upnp.h:426
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:2459
void UpnpRemoveAllVirtualDirs(void)
Removes all virtual directory mappings.
Definition: upnpapi.c:4055
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.
Definition: upnpapi.c:1645
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.
Definition: upnpapi.c:2873
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:923
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:3082
int UpnpVirtualDir_set_GetInfoCallback(VDCallback_GetInfo callback)
Sets the get_info callback function to be used to access a virtual directory.
Definition: upnpapi.c:4124
int UpnpRemoveVirtualDir(const char *dirName)
Removes a virtual directory mapping made with UpnpAddVirtualDir.
Definition: upnpapi.c:4006
int(* Upnp_FunPtr)(Upnp_EventType EventType, const void *Event, void *Cookie)
Definition: Callback.h:145
int UpnpRegisterClient(Upnp_FunPtr Callback, const void *Cookie, UpnpClient_Handle *Hnd)
Registers a control point application with the UPnP Library.
Definition: upnpapi.c:1308
UpnpDiscovery object declararion.
Data structure representing the DOM Document.
Definition: ixml.h:198
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:1080
@ UPNP_S_DEVICE
Definition: upnp.h:463
unsigned short UpnpGetServerPort(void)
Returns the internal server IPv4 UPnP listening port.
Definition: upnpapi.c:659
@ UPNPREG_URL_DESC
Definition: upnp.h:480
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:2083
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:3014
int UpnpVirtualDir_set_ReadCallback(VDCallback_Read callback)
Sets the read callback function to be used to access a virtual directory.
Definition: upnpapi.c:4150
int UpnpAddVirtualDir(const char *dirName, const void *cookie, const void **oldcookie)
Adds a virtual directory mapping.
Definition: upnpapi.c:3937
UpnpActionRequest object declaration.
int UpnpInit2(const char *IfName, unsigned short DestPort)
Initializes the Linux SDK for UPnP Devices (IPv4 or IPv6).
Definition: upnpapi.c:460
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:3110
int UpnpEndHttpRequest(void *handle, int timeout)
Indicates the end of a HTTP request previously made by UpnpMakeHttpRequest.
Definition: upnpapi.c:3145
Upnp_SType_e
Represents the different types of searches that can be performed using the SDK for UPnP Devices API.
Definition: upnp.h:455
int UpnpUnRegisterRootDevice(UpnpDevice_Handle Hnd)
Unregisters a root device registered with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition: upnpapi.c:1226
int UpnpVirtualDir_set_CloseCallback(VDCallback_Close callback)
Sets the close callback function to be used to access a virtual directory.
Definition: upnpapi.c:4189
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:2035
int UpnpIsWebserverEnabled(void)
Returns TRUE if the webserver is enabled, or FALSE if it is not.
Definition: upnpapi.c:4114
int(* VDCallback_Write)(UpnpWebFileHandle fileHnd, char *buf, size_t buflen, const void *cookie)
Write callback function prototype.
Definition: upnp.h:2598
int UpnpDownloadUrlItem(const char *url, char **outBuf, char *contentType)
Downloads a file specified in a URL.
Definition: upnpapi.c:3173
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.
Definition: upnpapi.c:2544
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:3129
int UpnpHttpGetProgress(void *handle, size_t *length, size_t *total)
Retrieve progress information of a http-get transfer.
Definition: upnpapi.c:3116
@ UPNP_S_ALL
Definition: upnp.h:457
struct s_UpnpString UpnpString
Type of the string objects inside libupnp.
Definition: UpnpString.h:38
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:1964
int UpnpUnRegisterRootDeviceLowPower(UpnpDevice_Handle Hnd, int PowerState, int SleepPeriod, int RegistrationState)
Unregisters a root device registered with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition: upnpapi.c:1233
UpnpEvent object declararion.
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:2279
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 ...
Definition: upnpapi.c:2656
unsigned short UpnpGetServerPort6(void)
Returns the internal server IPv6 UPnP listening port.
Definition: upnpapi.c:667
int UpnpCancelHttpGet(void *handle)
Set the cancel flag of the handle parameter.
Definition: upnpapi.c:3098
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.
Definition: upnpapi.c:2600
int UpnpVirtualDir_set_OpenCallback(VDCallback_Open callback)
Sets the open callback function to be used to access a virtual directory.
Definition: upnpapi.c:4137
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:3037
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:2207
int UpnpVirtualDir_set_SeekCallback(VDCallback_Seek callback)
Sets the seek callback function to be used to access a virtual directory.
Definition: upnpapi.c:4176
@ UPNPREG_FILENAME_DESC
Definition: upnp.h:484
#define EXPORT_SPEC
Export functions on WIN32 DLLs.
Definition: UpnpGlobal.h:87
int UpnpSendAdvertisement(UpnpDevice_Handle Hnd, int Exp)
Sends out the discovery announcements for all devices and services for a device.
Definition: upnpapi.c:1638
int(* VDCallback_GetInfo)(const char *filename, UpnpFileInfo *info, const void *cookie)
Get-info callback function prototype.
Definition: upnp.h:2532
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:1890
UpnpWebFileHandle(* VDCallback_Open)(const char *filename, enum UpnpOpenFileMode Mode, const void *cookie)
Open callback function prototype.
Definition: upnp.h:2553
int UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition: upnp.h:436
int UpnpSetMaxSubscriptionTimeOut(UpnpDevice_Handle Hnd, int MaxSubscriptionTimeOut)
Sets the maximum time-out accepted for a subscription request or renewal.
Definition: upnpapi.c:1851
Upnp_HttpMethod_e
Different HTTP methods.
Definition: upnp.h:1878
Defines constants that for some reason are not defined on some systems.
int UpnpOpenHttpConnection(const char *url, void **handle, int timeout)
Opens a connection to the server.
Definition: upnpapi.c:3122
#define DOMString
The type of DOM strings.
Definition: ixml.h:59
char * UpnpGetServerIpAddress(void)
Returns the local IPv4 listening ip address.
Definition: upnpapi.c:679
char * UpnpGetServerIp6Address(void)
Returns the local IPv6 listening ip address.
Definition: upnpapi.c:687
int UpnpSearchAsync(UpnpClient_Handle Hnd, int Mx, const char *TTarget_constarget_const, const void *Cookie_const)
Searches for devices matching the given search target.
Definition: upnpapi.c:1757
int(* VDCallback_Seek)(UpnpWebFileHandle fileHnd, off_t offset, int origin, const void *cookie)
Seek callback function prototype.
Definition: upnp.h:2621
void * UpnpWebFileHandle
The type of handle returned by the web server for open requests.
Definition: upnp.h:2527
UpnpEventSubscribe object declararion.
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:2333
UpnpSubscriptionRequest object declararion.
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:3138
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:3160
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:4232
UpnpStateVarComplete object declararion.
Provides a platform independent way to include TCP/IP types and functions.
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:3151
int UpnpEnableWebserver(int enable)
Enables or disables the webserver.
Definition: upnpapi.c:4077
int UpnpFinish(void)
Initializes the OpenSSL library, and the OpenSSL context for use with pupnp.
Definition: upnpapi.c:585
int UpnpUnRegisterClient(UpnpClient_Handle Hnd)
Unregisters a control point application, unsubscribing all active subscriptions.
Definition: upnpapi.c:1356
int UpnpSetWebServerRootDir(const char *rootDir)
Sets the document root directory for the internal web server.
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:3024
@ UPNP_S_ROOT
Definition: upnp.h:460