42#include "VirtualDir.h"
45#define MAX_INTERFACES 256
51#define DEFAULT_MAXAGE 1800
53#define DEFAULT_SOAP_CONTENT_LENGTH 64000
62#define UPNP_TIMEOUT 30
84#ifdef INCLUDE_DEVICE_APIS
99 int RegistrationState;
117#ifdef INCLUDE_CLIENT_APIS
134 #pragma GCC diagnostic push
135 #pragma GCC diagnostic ignored "-Wunused-function"
143static void HandleUnlock(
const char *file,
int line)
150static void HandleReadLock(
const char *file,
int line)
157static void HandleWriteLock(
const char *file,
int line)
164static void HandleLock(
const char *file,
int line)
166 HandleWriteLock(file, line);
169 #pragma GCC diagnostic pop
181 int *client_handle_out,
198 int *device_handle_out,
215 int *device_handle_out,
219 service_info **serv_info);
222extern char gIF_IPV4[INET_ADDRSTRLEN];
224extern char gIF_IPV6[INET6_ADDRSTRLEN];
263 char VarName[NAME_SIZE];
264 char NewVal[NAME_SIZE];
265 char DevType[NAME_SIZE];
266 char DevId[NAME_SIZE];
267 char ServiceType[NAME_SIZE];
268 char ServiceVer[NAME_SIZE];
275 struct DevDesc *Devdesc;
287#define E_HTTP_SYNTAX -6
318 const struct in_addr *v4_addr,
319 const struct in_addr *v4_netmask,
322 char *out_v4_netmask,
323 size_t out_v4_netmask_len,
324 int valid_v6_addr_found,
325 const struct in6_addr *v6_addr,
int(* Upnp_FunPtr)(Upnp_EventType EventType, void *Event, void *Cookie)
Definition Callback.h:145
Header file for GenlibClientSubscription methods.
struct s_GenlibClientSubscription GenlibClientSubscription
Definition GenlibClientSubscription.h:27
struct LINKEDLIST LinkedList
struct THREADPOOL ThreadPool
A thread pool similar to the thread pool in the UPnP SDK.
struct TIMERTHREAD TimerThread
WebCallback_HostValidate gWebCallback_HostValidate
Definition upnpapi.c:161
unsigned gIF_IPV6_ULA_GUA_PREFIX_LENGTH
Definition upnpapi.c:190
char Upnp_SID[44]
Holds the subscription identifier for a subscription between a client and a device.
Definition upnp.h:448
struct VirtualDirCallbacks virtualDirCallback
Definition upnpapi.c:126
void UpnpThreadDistribution(struct UpnpNonblockParam *Param)
Schedule async functions in threadpool.
Definition upnpapi.c:4194
ThreadPool gSendThreadPool
Definition upnpapi.c:149
char gIF_IPV6_ULA_GUA[INET6_ADDRSTRLEN]
Definition upnpapi.c:187
void UpnpSetIfAddrStrings(int valid_v4_addr_found, const struct in_addr *v4_addr, const struct in_addr *v4_netmask, char *out_v4, size_t out_v4_len, char *out_v4_netmask, size_t out_v4_netmask_len, int valid_v6_addr_found, const struct in6_addr *v6_addr, char *out_v6, size_t out_v6_len)
Format the discovered v4/v6 interface addresses into their output string buffers, but only for the ad...
Definition upnpapi.c:3728
ThreadPool gRecvThreadPool
Definition upnpapi.c:152
unsigned short LOCAL_PORT_V6_ULA_GUA
Definition upnpapi.c:202
int gAllowLiteralHostRedirection
Definition upnpapi.c:167
int PrintHandleInfo(UpnpClient_Handle Hnd)
Print handle info.
Definition upnpapi.c:4462
Upnp_Handle_Type GetDeviceHandleInfoForPath(const char *path, int AddressFamily, int *device_handle_out, struct Handle_Info **HndInfo, service_info **serv_info)
Retrieves the device handle and information of the first device of the address family specified,...
Definition upnpapi.c:4373
unsigned gIF_IPV6_PREFIX_LENGTH
Definition upnpapi.c:183
void * gWebCallback_HostValidateCookie
Definition upnpapi.c:164
size_t g_maxContentLength
Definition upnpapi.c:216
int UpnpClient_Handle
Returned when a control point application registers with UpnpRegisterClient.
Definition upnp.h:429
virtualDirList * pVirtualDirList
Definition upnpapi.c:129
int g_UpnpSdkEQMaxLen
Definition upnpapi.c:222
char gIF_NAME[(size_t) 180]
Definition upnpapi.c:170
int UpnpGetIfInfo(const char *IfName)
Retrieve interface information and keep it in global variables. If NULL, we'll find the first suitabl...
Definition upnpapi.c:3752
unsigned short LOCAL_PORT_V6
Definition upnpapi.c:199
unsigned short LOCAL_PORT_V4
Definition upnpapi.c:196
ithread_rwlock_t GlobalHndRWLock
Definition upnpapi.c:137
int UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition upnp.h:439
Upnp_Handle_Type GetDeviceHandleInfo(UpnpDevice_Handle start, int AddressFamily, int *device_handle_out, struct Handle_Info **HndInfo)
Retrieves the device handle and information of the first device of the address family specified....
Definition upnpapi.c:4336
char gIF_IPV4[INET_ADDRSTRLEN]
Definition upnpapi.c:173
TimerThread gTimerThread
Definition upnpapi.c:146
unsigned gIF_INDEX
Definition upnpapi.c:193
ThreadPool gMiniServerThreadPool
Definition upnpapi.c:155
char gIF_IPV4_NETMASK[INET_ADDRSTRLEN]
Definition upnpapi.c:176
int g_UpnpSdkEQMaxAge
Definition upnpapi.c:232
char gIF_IPV6[INET6_ADDRSTRLEN]
Definition upnpapi.c:180
Upnp_Handle_Type GetHandleInfo(int Hnd, struct Handle_Info **HndInfo)
Definition upnpapi.c:4419
Upnp_Handle_Type GetClientHandleInfo(int *client_handle_out, struct Handle_Info **HndInfo)
Get client handle info.
Definition upnpapi.c:4316
WebServerState bWebServerState
Definition upnpapi.c:158
struct _IXML_NodeList IXML_NodeList
Data structure representing a list of nodes.
struct _IXML_Document IXML_Document
Data structure representing the DOM Document.
Upnp_Handle_Type HType
Definition upnpapi.h:75
IXML_NodeList * ServiceList
Definition upnpapi.h:105
int aliasInstalled
Definition upnpapi.h:81
GenlibClientSubscription * ClientSubList
Definition upnpapi.h:119
service_table ServiceTable
Definition upnpapi.h:107
char DescURL[(size_t) 180]
Definition upnpapi.h:86
char DescXML[(size_t) 180]
Definition upnpapi.h:91
IXML_Document * DescDocument
Definition upnpapi.h:101
char LowerDescURL[(size_t) 180]
Definition upnpapi.h:89
char * Cookie
Definition upnpapi.h:79
Upnp_FunPtr Callback
Definition upnpapi.h:77
int MaxSubscriptionTimeOut
Definition upnpapi.h:111
int MaxSubscriptions
Definition upnpapi.h:109
LinkedList SsdpSearchList
Definition upnpapi.h:121
IXML_NodeList * DeviceList
Definition upnpapi.h:103
int DeviceAf
Definition upnpapi.h:113
Definition VirtualDir.h:11
static enum Upnp_LogLevel_e debug_handle
Get handle information.
Definition upnpapi.h:132
void AutoAdvertise(void *input)
This function is a timer thread scheduled by UpnpSendAdvertisement to the send advetisement again.
void UpnpPrintf(Upnp_LogLevel DLevel, Dbg_Module Module, const char *DbgFileName, int DbgLineNo, const char *FmtStr,...)
Prints the debug statement either on the standard output or log file along with the information from ...
Definition upnpdebug.c:264