LIBSSDP
 All Classes Files Functions Variables Typedefs Macros
ssdp_message.h
Go to the documentation of this file.
1 
7 #ifndef __SSDP_MESSAGE_H__
8 #define __SSDP_MESSAGE_H__
9 
10 #include "configuration.h"
11 
12 // TODO: move daemon port to daemon.h ?
14 #define DAEMON_PORT 43210
15 
16 #define XML_BUFFER_SIZE 2048
17 
18 #define DEVICE_INFO_SIZE 16384
19 
20 #define MULTICAST_TIMEOUT 2
21 
22 /* SSDP header types string representations */
23 #define SSDP_HEADER_HOST_STR "host"
24 #define SSDP_HEADER_ST_STR "st"
25 #define SSDP_HEADER_MAN_STR "man"
26 #define SSDP_HEADER_MX_STR "mx"
27 #define SSDP_HEADER_CACHE_STR "cache"
28 #define SSDP_HEADER_LOCATION_STR "location"
29 #define SSDP_HEADER_OPT_STR "opt"
30 #define SSDP_HEADER_01NLS_STR "01-nls"
31 #define SSDP_HEADER_NT_STR "nt"
32 #define SSDP_HEADER_NTS_STR "nts"
33 #define SSDP_HEADER_SERVER_STR "server"
34 #define SSDP_HEADER_XUSERAGENT_STR "x-user-agent"
35 #define SSDP_HEADER_USN_STR "usn"
36 #define SSDP_HEADER_UNKNOWN_STR "unknown"
37 
38 //TODO: make enum
39 /* SSDP header types uchars */
40 #define SSDP_HEADER_HOST 1
41 #define SSDP_HEADER_ST 2
42 #define SSDP_HEADER_MAN 3
43 #define SSDP_HEADER_MX 4
44 #define SSDP_HEADER_CACHE 5
45 #define SSDP_HEADER_LOCATION 6
46 #define SSDP_HEADER_OPT 7
47 #define SSDP_HEADER_01NLS 8
48 #define SSDP_HEADER_NT 9
49 #define SSDP_HEADER_NTS 10
50 #define SSDP_HEADER_SERVER 11
51 #define SSDP_HEADER_XUSERAGENT 12
52 #define SSDP_HEADER_USN 13
53 #define SSDP_HEADER_UNKNOWN 0
54 
56 typedef struct ssdp_header_struct {
58  unsigned char type;
60  char *unknown_type;
62  char *contents;
68 
70 typedef struct ssdp_custom_field_struct {
72  char *name;
74  char *contents;
80 
82 typedef struct ssdp_message_struct {
84  char *mac;
86  char *ip;
90  char *datetime;
95  char *request;
97  char *protocol;
99  char *answer;
104  char *info;
106  unsigned char header_count;
110  unsigned char custom_field_count;
114 
124  const char *custom_field);
125 
136 
144 const char *get_header_string(const unsigned int header_type,
145  const ssdp_header_s *header);
146 
154 BOOL init_ssdp_message(ssdp_message_s **message_pointer);
155 
167 BOOL build_ssdp_message(ssdp_message_s *message, char *ip, char *mac,
168  int message_length, const char *raw_message);
169 
175 void free_ssdp_message(ssdp_message_s **message_pointer);
176 
177 #endif /* __SSDP_MESSAGE_H__ */
178 
const char * get_header_string(const unsigned int header_type, const ssdp_header_s *header)
Definition: ssdp_message.c:402
ssdp_custom_field_s * get_custom_field(const ssdp_message_s *ssdp_message, const char *custom_field)
Definition: ssdp_message.c:134
unsigned char header_count
Definition: ssdp_message.h:106
struct ssdp_custom_field_struct * custom_fields
Definition: ssdp_message.h:112
unsigned char type
Definition: ssdp_message.h:58
struct ssdp_header_struct * next
Definition: ssdp_message.h:66
struct ssdp_header_struct * headers
Definition: ssdp_message.h:108
void free_ssdp_message(ssdp_message_s **message_pointer)
Definition: ssdp_message.c:608
int fetch_custom_fields(configuration_s *conf, ssdp_message_s *ssdp_message)
Definition: ssdp_message.c:157
BOOL build_ssdp_message(ssdp_message_s *message, char *ip, char *mac, int message_length, const char *raw_message)
Definition: ssdp_message.c:498
unsigned char custom_field_count
Definition: ssdp_message.h:110
struct ssdp_custom_field_struct ssdp_custom_field_s
struct ssdp_header_struct ssdp_header_s
struct ssdp_custom_field_struct * first
Definition: ssdp_message.h:76
BOOL init_ssdp_message(ssdp_message_s **message_pointer)
Definition: ssdp_message.c:431
struct ssdp_header_struct * first
Definition: ssdp_message.h:64
int BOOL
static configuration_s conf
Definition: main.c:73
struct ssdp_custom_field_struct * next
Definition: ssdp_message.h:78
struct ssdp_message_struct ssdp_message_s