libUPnP 1.14.19
Files | Data Structures | Macros | Typedefs | Enumerations | Enumerator | Functions | Variables
SSDP Library

Files

file  ssdplib.h
 
file  ssdp_ctrlpt.c
 
file  ssdp_device.c
 
file  ssdp_server.c
 
file  SSDPResultDataCallback.h
 SSDPResultData object declararion.
 

Data Structures

struct  SsdpEventStruct
 
struct  TData
 
struct  ssdpsearchreply
 
struct  ssdpsearcharg
 
struct  ssdpsearchexparg
 
struct  ssdp_thread_data
 
struct  SSDPSockArray
 

Macros

#define BUFSIZE   (size_t)2500
 
#define SSDP_IP   "239.255.255.250"
 
#define SSDP_IPV6_LINKLOCAL   "FF02::C"
 
#define SSDP_IPV6_SITELOCAL   "FF05::C"
 
#define SSDP_PORT   1900
 
#define NUM_TRY   3
 
#define THREAD_LIMIT   50
 
#define COMMAND_LEN   300
 
#define MSGTYPE_SHUTDOWN   0
 
#define MSGTYPE_ADVERTISEMENT   1
 
#define MSGTYPE_REPLY   2
 
#define MAX_TIME_TOREAD   45
 

Typedefs

typedef enum SsdpSearchType SType
 

Enumerations

enum  SsdpSearchType {
  SSDP_SERROR = -1 , SSDP_ALL , SSDP_ROOTDEVICE , SSDP_DEVICEUDN ,
  SSDP_DEVICETYPE , SSDP_SERVICE
}
 
enum  Listener { Idle , Stopping , Running }
 

Functions

static void send_search_result (void *data)
 Sends a callback to the control point application with a SEARCH result.
 
static int CreateClientRequestPacket (char *RqstBuf, size_t RqstBufSize, int Mx, char *SearchTarget, int AddressFamily)
 Creates a HTTP search request packet depending on the input parameter.
 
static void searchExpired (void *arg)
 
static int NewRequestHandler (struct sockaddr *DestAddr, int NumPacket, char **RqPacket)
 Works as a request handler which passes the HTTP request string to multicast channel.
 
static int extractIPv6address (char *url, char *address)
 
static int isUrlV6UlaGua (char *descdocUrl)
 
static void CreateServicePacket (int msg_type, const char *nt, char *usn, char *location, int duration, char **packet, int AddressFamily, int PowerState, int SleepPeriod, int RegistrationState)
 Creates a HTTP request packet. Depending on the input parameter, it either creates a service advertisement request or service shutdown request etc.
 
void RequestHandler ()
 
static void free_ssdp_event_handler_data (void *the_data)
 Frees the ssdp request.
 
static UPNP_INLINE int valid_ssdp_msg (http_message_t *hmsg)
 Does some quick checking of the ssdp msg.
 
static UPNP_INLINE int start_event_handler (void *Data)
 Parses the message and dispatches it to a handler which handles the ssdp request msg.
 
static void ssdp_event_handler_thread (void *the_data)
 This function is a thread that handles SSDP requests.
 
static int create_ssdp_sock_v4 (SOCKET *ssdpSock)
 
static int create_ssdp_sock_reqv4 (SOCKET *ssdpReqSock)
 Creates the SSDP IPv4 socket to be used by the control point.
 
void SSDPResultData_Callback (const SSDPResultData *p)
 

Variables

enum SsdpSearchType SsdpEventStruct::RequestType
 
int SsdpEventStruct::ErrCode
 
int SsdpEventStruct::MaxAge
 
int SsdpEventStruct::Mx
 
char SsdpEventStruct::UDN [LINE_SIZE]
 
char SsdpEventStruct::DeviceType [LINE_SIZE]
 
char SsdpEventStruct::ServiceType [LINE_SIZE]
 
char SsdpEventStruct::Location [LINE_SIZE]
 
char SsdpEventStruct::HostAddr [LINE_SIZE]
 
char SsdpEventStruct::Os [LINE_SIZE]
 
char SsdpEventStruct::Ext [LINE_SIZE]
 
char SsdpEventStruct::Date [LINE_SIZE]
 
struct sockaddr * SsdpEventStruct::DestAddr
 
void * SsdpEventStruct::Cookie
 
int TData::Mx
 
void * TData::Cookie
 
char * TData::Data
 
struct sockaddr_storage TData::DestAddr
 
int ssdpsearchreply::MaxAge
 
UpnpDevice_Handle ssdpsearchreply::handle
 
struct sockaddr_storage ssdpsearchreply::dest_addr
 
SsdpEvent ssdpsearchreply::event
 
int ssdpsearcharg::timeoutEventId
 
char * ssdpsearcharg::searchTarget
 
void * ssdpsearcharg::cookie
 
enum SsdpSearchType ssdpsearcharg::requestType
 
int ssdpsearchexparg::handle
 
int ssdpsearchexparg::timeoutEventId
 
http_parser_t ssdp_thread_data::parser
 
struct sockaddr_storage ssdp_thread_data::dest_addr
 
SOCKET gSsdpReqSocket4 = INVALID_SOCKET
 
SOCKET SSDPSockArray::ssdpSock
 
int SSDPSockArray::ssdpReqSock
 
static const char SERVICELIST_STR [] = "serviceList"
 

X_USER_AGENT

can be overwritten by configure CFLAGS argument.

The {\tt X_USER_AGENT} constant specifies the value of the X-User-Agent: HTTP header. The value "redsonic" is needed for the DSM-320. See https://sourceforge.net/forum/message.php?msg_id=3166856 for more information

typedef struct SsdpEventStruct SsdpEvent
 
typedef void(* SsdpFunPtr) (SsdpEvent *)
 
typedef struct TData ThreadData
 
typedef struct ssdpsearchreply SsdpSearchReply
 
typedef struct ssdpsearcharg SsdpSearchArg
 
typedef struct ssdpsearchexparg SsdpSearchExpArg
 
typedef int(* ParserFun) (char *, SsdpEvent *)
 
SOCKET gSsdpReqSocket4
 
#define X_USER_AGENT   "redsonic"
 
#define NO_ERROR_FOUND   0
 
#define E_REQUEST_INVALID   -3
 
#define E_RES_EXPIRED   -4
 
#define E_MEM_ALLOC   -5
 
#define E_HTTP_SYNTEX   -6
 
#define E_SOCKET   -7
 
#define RQST_TIMEOUT   20
 

SSDP Server Functions

int AdvertiseAndReply (int AdFlag, UpnpDevice_Handle Hnd, enum SsdpSearchType SearchType, struct sockaddr *DestAddr, char *DeviceType, char *DeviceUDN, char *ServiceType, int Exp)
 Sends SSDP advertisements, replies and shutdown messages.
 
int unique_service_name (char *cmd, SsdpEvent *Evt)
 Fills the fields of the event structure like DeviceType, Device UDN and Service Type.
 
enum SsdpSearchType ssdp_request_type1 (char *cmd)
 This function figures out the type of the SSDP search in the in the request.
 
int ssdp_request_type (char *cmd, SsdpEvent *Evt)
 Starts filling the SSDP event structure based upon the request received.
 
int readFromSSDPSocket (SOCKET socket)
 This function reads the data from the ssdp socket.
 
int get_ssdp_sockets (MiniServerSockArray *out)
 Creates the IPv4 and IPv6 ssdp sockets required by the control point and device operation.
 

SSDP Control Point Functions

void ssdp_handle_ctrlpt_msg (http_message_t *hmsg, struct sockaddr_storage *dest_addr, int timeout)
 This function handles the ssdp messages from the devices. These messages includes the search replies, advertisement of device coming alive and bye byes.
 
int SearchByTarget (int Hnd, int Mx, char *St, void *Cookie)
 Creates and send the search request for a specific URL.
 

SSDP Device Functions

void advertiseAndReplyThread (void *data)
 Wrapper function to reply the search request coming from the control point.
 
void ssdp_handle_device_request (http_message_t *hmsg, struct sockaddr_storage *dest_addr)
 Handles the search request. It does the sanity checks of the request and then schedules a thread to send a random time reply (random within maximum time given by the control point to reply).
 
int DeviceAdvertisement (char *DevType, int RootDev, char *Udn, char *Location, int Duration, int AddressFamily, int PowerState, int SleepPeriod, int RegistrationState)
 Creates the device advertisement request based on the input parameter, and send it to the multicast channel.
 
int SendReply (struct sockaddr *DestAddr, char *DevType, int RootDev, char *Udn, char *Location, int Duration, int ByType, int PowerState, int SleepPeriod, int RegistrationState)
 Creates the reply packet based on the input parameter, and send it to the client addesss given in its input parameter DestAddr.
 
int DeviceReply (struct sockaddr *DestAddr, char *DevType, int RootDev, char *Udn, char *Location, int Duration, int PowerState, int SleepPeriod, int RegistrationState)
 Creates the reply packet based on the input parameter, and send it to the client address given in its input parameter DestAddr.
 
int ServiceAdvertisement (char *Udn, char *ServType, char *Location, int Duration, int AddressFamily, int PowerState, int SleepPeriod, int RegistrationState)
 Creates the advertisement packet based on the input parameter, and send it to the multicast channel.
 
int ServiceReply (struct sockaddr *DestAddr, char *ServType, char *Udn, char *Location, int Duration, int PowerState, int SleepPeriod, int RegistrationState)
 Creates the advertisement packet based on the input parameter, and send it to the multicast channel.
 
int ServiceShutdown (char *Udn, char *ServType, char *Location, int Duration, int AddressFamily, int PowerState, int SleepPeriod, int RegistrationState)
 Creates a HTTP service shutdown request packet and sends it to the multicast channel through RequestHandler.
 
int DeviceShutdown (char *DevType, int RootDev, char *Udn, char *Location, int Duration, int AddressFamily, int PowerState, int SleepPeriod, int RegistrationState)
 Creates a HTTP device shutdown request packet and send it to the multicast channel through RequestHandler.
 

Detailed Description

Macro Definition Documentation

◆ NO_ERROR_FOUND

#define NO_ERROR_FOUND   0

Error codes.

Typedef Documentation

◆ SsdpEvent

typedef struct SsdpEventStruct SsdpEvent

Structure to store the SSDP information

◆ SType

typedef enum SsdpSearchType SType

Enumeration to define all different types of ssdp searches

Enumeration Type Documentation

◆ SsdpSearchType

Enumeration to define all different types of ssdp searches

Enumerator
SSDP_SERROR 

Unknown search command.

Function Documentation

◆ AdvertiseAndReply()

int AdvertiseAndReply ( int  AdFlag,
UpnpDevice_Handle  Hnd,
enum SsdpSearchType  SearchType,
struct sockaddr *  DestAddr,
char *  DeviceType,
char *  DeviceUDN,
char *  ServiceType,
int  Exp 
)

◆ advertiseAndReplyThread()

void advertiseAndReplyThread ( void *  data)

Wrapper function to reply the search request coming from the control point.

References AdvertiseAndReply().

Referenced by ssdp_handle_device_request().

◆ create_ssdp_sock_reqv4()

static int create_ssdp_sock_reqv4 ( SOCKET ssdpReqSock)
static

Creates the SSDP IPv4 socket to be used by the control point.

Returns
UPNP_E_SUCCESS on successful socket creation.
Parameters
[out]ssdpReqSockSSDP IPv4 request socket to be created.

References INVALID_SOCKET, sock_make_no_blocking(), UPNP_E_OUTOF_SOCKET, UPNP_E_SUCCESS, and UpnpPrintf().

Referenced by get_ssdp_sockets().

◆ create_ssdp_sock_v4()

static int create_ssdp_sock_v4 ( SOCKET ssdpSock)
static

◆ CreateClientRequestPacket()

static int CreateClientRequestPacket ( char *  RqstBuf,
size_t  RqstBufSize,
int  Mx,
char *  SearchTarget,
int  AddressFamily 
)
static

Creates a HTTP search request packet depending on the input parameter.

Parameters
[in,out]RqstBufOutput string in HTTP format.
[in]RqstBufSizeRqstBuf size.
[in]MxSearch Target.
[in]SearchTargetNumber of seconds to wait to collect all the responses.
[in]AddressFamilysearch address family.

References UPNP_E_INTERNAL_ERROR, UPNP_E_INVALID_ARGUMENT, and UPNP_E_SUCCESS.

Referenced by SearchByTarget().

◆ CreateServicePacket()

static void CreateServicePacket ( int  msg_type,
const char *  nt,
char *  usn,
char *  location,
int  duration,
char **  packet,
int  AddressFamily,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)
static

Creates a HTTP request packet. Depending on the input parameter, it either creates a service advertisement request or service shutdown request etc.

Parameters
[in]msg_typetype of the message (Search Reply, Advertisement or Shutdown).
[in]ntssdp type.
[in]usnunique service name ( go in the HTTP Header).
[in]locationLocation URL.
[in]durationService duration in sec.
[out]packetOutput buffer filled with HTTP statement.
[in]AddressFamilyAddress family of the HTTP request.
[in]PowerStatePowerState as defined by UPnP Low Power.
[in]SleepPeriodSleepPeriod as defined by UPnP Low Power.
[in]RegistrationStateRegistrationState as defined by UPnP Low Power.

References gUpnpSdkNLSuuid, http_MakeMessage(), isUrlV6UlaGua(), and membuffer::size_inc.

Referenced by DeviceAdvertisement(), DeviceReply(), DeviceShutdown(), SendReply(), ServiceAdvertisement(), ServiceReply(), and ServiceShutdown().

◆ DeviceAdvertisement()

int DeviceAdvertisement ( char *  DevType,
int  RootDev,
char *  Udn,
char *  Location,
int  Duration,
int  AddressFamily,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates the device advertisement request based on the input parameter, and send it to the multicast channel.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), gIF_INDEX, isUrlV6UlaGua(), NewRequestHandler(), UPNP_E_OUTOF_MEMORY, and UpnpPrintf().

Referenced by AdvertiseAndReply().

◆ DeviceReply()

int DeviceReply ( struct sockaddr *  DestAddr,
char *  DevType,
int  RootDev,
char *  Udn,
char *  Location,
int  Duration,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates the reply packet based on the input parameter, and send it to the client address given in its input parameter DestAddr.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), NewRequestHandler(), and UPNP_E_OUTOF_MEMORY.

Referenced by AdvertiseAndReply().

◆ DeviceShutdown()

int DeviceShutdown ( char *  DevType,
int  RootDev,
char *  Udn,
char *  Location,
int  Duration,
int  AddressFamily,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates a HTTP device shutdown request packet and send it to the multicast channel through RequestHandler.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), gIF_INDEX, isUrlV6UlaGua(), NewRequestHandler(), UPNP_E_OUTOF_MEMORY, and UpnpPrintf().

Referenced by AdvertiseAndReply().

◆ extractIPv6address()

static int extractIPv6address ( char *  url,
char *  address 
)
static
Returns
1 if an inet6 @ has been found.

Referenced by isUrlV6UlaGua().

◆ free_ssdp_event_handler_data()

static void free_ssdp_event_handler_data ( void *  the_data)
static

Frees the ssdp request.

Parameters
[in]the_datassdp_thread_data structure. This structure contains SSDP request message.

Referenced by readFromSSDPSocket(), ssdp_event_handler_thread(), and start_event_handler().

◆ get_ssdp_sockets()

int get_ssdp_sockets ( MiniServerSockArray out)

Creates the IPv4 and IPv6 ssdp sockets required by the control point and device operation.

Returns
UPNP_E_SUCCESS if successful else returns appropriate error.

References create_ssdp_sock_reqv4(), create_ssdp_sock_v4(), gIF_IPV4, gIF_IPV6, gIF_IPV6_ULA_GUA, INVALID_SOCKET, MServerSockArray::ssdpReqSock4, MServerSockArray::ssdpReqSock6, MServerSockArray::ssdpSock4, MServerSockArray::ssdpSock6, MServerSockArray::ssdpSock6UlaGua, UPNP_E_SUCCESS, and UpnpCloseSocket.

Referenced by StartMiniServer().

◆ isUrlV6UlaGua()

static int isUrlV6UlaGua ( char *  descdocUrl)
static
Returns
1 if the Url contains an ULA or GUA IPv6 address, 0 otherwise.

References extractIPv6address().

Referenced by CreateServicePacket(), DeviceAdvertisement(), DeviceShutdown(), ServiceAdvertisement(), and ServiceShutdown().

◆ NewRequestHandler()

static int NewRequestHandler ( struct sockaddr *  DestAddr,
int  NumPacket,
char **  RqPacket 
)
static

Works as a request handler which passes the HTTP request string to multicast channel.

Returns
UPNP_E_SUCCESS if successful else appropriate error.
Parameters
[in]DestAddrIp address, to send the reply.
[in]NumPacketNumber of packet to be sent.
[in]RqPacket.

References gIF_INDEX, gIF_IPV4, INVALID_SOCKET, UPNP_E_INVALID_PARAM, UPNP_E_NETWORK_ERROR, UPNP_E_OUTOF_SOCKET, UPNP_E_SOCKET_WRITE, UPNP_E_SUCCESS, UpnpCloseSocket, and UpnpPrintf().

Referenced by DeviceAdvertisement(), DeviceReply(), DeviceShutdown(), SendReply(), ServiceAdvertisement(), ServiceReply(), and ServiceShutdown().

◆ readFromSSDPSocket()

int readFromSSDPSocket ( SOCKET  socket)

◆ SearchByTarget()

int SearchByTarget ( int  Hnd,
int  Mx,
char *  St,
void *  Cookie 
)

Creates and send the search request for a specific URL.

This function implements the search request of the discovery phase. A M-SEARCH request is sent on the SSDP channel for both IPv4 and IPv6 addresses. The search target(ST) is required and must be one of the following:

  • "ssdp:all" : Search for all devices and services.
  • "ssdp:rootdevice" : Search for root devices only.
  • "uuid:<device-uuid>" : Search for a particular device.
  • "urn:schemas-upnp-org:device:<deviceType:v>"
  • "urn:schemas-upnp-org:service:<serviceType:v>"
  • "urn:<domain-name>:device:<deviceType:v>"
  • "urn:<domain-name>:service:<serviceType:v>"
Returns
1 if successful else appropriate error.

References CreateClientRequestPacket(), GetHandleInfo(), gIF_INDEX, gIF_IPV4, gTimerThread, INVALID_SOCKET, REL_SEC, ssdp_request_type1(), SSDP_SERROR, Handle_Info::SsdpSearchList, TimerThreadSchedule(), TPJobInit(), TPJobSetFreeFunction(), TPJobSetPriority(), UPNP_E_INTERNAL_ERROR, UPNP_E_INVALID_PARAM, UPNP_E_SUCCESS, UpnpCloseSocket, and UpnpPrintf().

Referenced by UpnpSearchAsync().

◆ send_search_result()

static void send_search_result ( void *  data)
static

Sends a callback to the control point application with a SEARCH result.

References SSDPResultData_delete().

Referenced by ssdp_handle_ctrlpt_msg().

◆ SendReply()

int SendReply ( struct sockaddr *  DestAddr,
char *  DevType,
int  RootDev,
char *  Udn,
char *  Location,
int  Duration,
int  ByType,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates the reply packet based on the input parameter, and send it to the client addesss given in its input parameter DestAddr.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), NewRequestHandler(), and UPNP_E_OUTOF_MEMORY.

Referenced by AdvertiseAndReply().

◆ ServiceAdvertisement()

int ServiceAdvertisement ( char *  Udn,
char *  ServType,
char *  Location,
int  Duration,
int  AddressFamily,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates the advertisement packet based on the input parameter, and send it to the multicast channel.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), gIF_INDEX, isUrlV6UlaGua(), NewRequestHandler(), UPNP_E_OUTOF_MEMORY, and UpnpPrintf().

Referenced by AdvertiseAndReply().

◆ ServiceReply()

int ServiceReply ( struct sockaddr *  DestAddr,
char *  ServType,
char *  Udn,
char *  Location,
int  Duration,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates the advertisement packet based on the input parameter, and send it to the multicast channel.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), NewRequestHandler(), and UPNP_E_OUTOF_MEMORY.

Referenced by AdvertiseAndReply().

◆ ServiceShutdown()

int ServiceShutdown ( char *  Udn,
char *  ServType,
char *  Location,
int  Duration,
int  AddressFamily,
int  PowerState,
int  SleepPeriod,
int  RegistrationState 
)

Creates a HTTP service shutdown request packet and sends it to the multicast channel through RequestHandler.

Returns
UPNP_E_SUCCESS if successful else appropriate error.

References CreateServicePacket(), gIF_INDEX, isUrlV6UlaGua(), NewRequestHandler(), UPNP_E_OUTOF_MEMORY, and UpnpPrintf().

Referenced by AdvertiseAndReply().

◆ ssdp_event_handler_thread()

static void ssdp_event_handler_thread ( void *  the_data)
static

This function is a thread that handles SSDP requests.

Parameters
the_data[] ssdp_thread_data structure. This structure contains SSDP request message.

References free_ssdp_event_handler_data(), http_message_t::method, http_message_t::request_method, ssdp_handle_ctrlpt_msg(), ssdp_handle_device_request(), and start_event_handler().

Referenced by readFromSSDPSocket().

◆ ssdp_handle_ctrlpt_msg()

void ssdp_handle_ctrlpt_msg ( http_message_t hmsg,
struct sockaddr_storage *  dest_addr,
int  timeout 
)

◆ ssdp_handle_device_request()

void ssdp_handle_device_request ( http_message_t hmsg,
struct sockaddr_storage *  dest_addr 
)

Handles the search request. It does the sanity checks of the request and then schedules a thread to send a random time reply (random within maximum time given by the control point to reply).

References advertiseAndReplyThread(), memptr::buf, GetDeviceHandleInfo(), gTimerThread, memptr::length, REL_SEC, ssdp_request_type(), TimerThreadSchedule(), TPJobInit(), TPJobSetFreeFunction(), and UpnpPrintf().

Referenced by ssdp_event_handler_thread().

◆ ssdp_request_type()

int ssdp_request_type ( char *  cmd,
SsdpEvent Evt 
)

Starts filling the SSDP event structure based upon the request received.

Returns
0 on success; -1 on error.

References NO_ERROR_FOUND, ssdp_request_type1(), SSDP_SERROR, and unique_service_name().

Referenced by ssdp_handle_ctrlpt_msg(), and ssdp_handle_device_request().

◆ ssdp_request_type1()

enum SsdpSearchType ssdp_request_type1 ( char *  cmd)

This function figures out the type of the SSDP search in the in the request.

Returns
enum SsdpSearchType. Returns appropriate search type, else returns SSDP_ERROR

References SSDP_SERROR.

Referenced by SearchByTarget(), and ssdp_request_type().

◆ start_event_handler()

static UPNP_INLINE int start_event_handler ( void *  Data)
static

Parses the message and dispatches it to a handler which handles the ssdp request msg.

Returns
0 if successful, -1 if error.
Parameters
[in]Datassdp_thread_data structure. This structure contains SSDP request message.

References free_ssdp_event_handler_data(), http_message_t::method, PARSE_FAILURE, PARSE_SUCCESS, UpnpPrintf(), valid_ssdp_msg(), and http_parser_t::valid_ssdp_notify_hack.

Referenced by ssdp_event_handler_thread().

◆ unique_service_name()

int unique_service_name ( char *  cmd,
SsdpEvent Evt 
)

Fills the fields of the event structure like DeviceType, Device UDN and Service Type.

Returns
0 if successful else -1.

Referenced by ssdp_handle_ctrlpt_msg(), and ssdp_request_type().

◆ valid_ssdp_msg()

static UPNP_INLINE int valid_ssdp_msg ( http_message_t hmsg)
static

Does some quick checking of the ssdp msg.

Returns
1 if msg is valid, else 0.
Parameters
[in]hmsgssdp_thread_data structure. This structure contains SSDP request message.

References http_message_t::method, http_message_t::request_method, UpnpPrintf(), and http_message_t::uri.

Referenced by start_event_handler().

Variable Documentation

◆ ssdpReqSock

int SSDPSockArray::ssdpReqSock

socket for sending search requests and receiving search replies

◆ ssdpSock

SOCKET SSDPSockArray::ssdpSock

socket for incoming advertisments and search requests