20 #ifndef XDISCOVERY_PRIVATE_H_
21 #define XDISCOVERY_PRIVATE_H_
26 #define G_LOG_DOMAIN "XUPNP"
27 #define XUPNP_RESCAN_INTERVAL 22000000
28 #define XDISC_SERVICE "urn:schemas-upnp-org:service:DiscoverFriendlies:1"
29 #define XDISC_SERVICE_IDENTITY "urn:schemas-upnp-org:service:X1Identity:1"
30 #define XDISC_SERVICE_MEDIA "urn:schemas-upnp-org:service:X1MediaConfiguration:1"
31 #define XDISC_SERVICE_GW_CFG "urn:schemas-upnp-org:service:X1GatewayConfiguration:1"
32 #define XDISC_SERVICE_QAM_CFG "urn:schemas-upnp-org:service:X1QamConfiguration:1"
33 #define XDISC_SERVICE_TIME "urn:schemas-upnp-org:service:X1Time:1"
34 #define XDISC_SERVICE_PROTECTION "urn:schemas-upnp-org:service:DeviceProtection:1"
36 #define MAX_ENTRIES 1024
37 #define MAX_OVERFLOW 1024
38 #define MAX_BUF_SIZE 2048
39 #define MAC_ADDRESS_SIZE 20
42 typedef enum { DP_SUCCESS=0, DP_INVALID_MAC, DP_COLLISION, DP_WLIST_ERROR} dp_wlist_ss_t;
43 typedef enum { FIFO_OK=0, FIFO_FULL=1, FIFO_EMPTY=2} fstat_t;
45 #define DEF_FIFO(name, max_size, type) \
46 typedef struct fname1 { \
47 type entries[max_size]; \
53 #define INIT_FIFO(name, max_size) \
55 name.tail = max_size;\
56 name.size = max_size; \
59 #define ENQUEUE_FIFO(name, value, ret) \
61 if (name.tail > 0) { \
63 name.entries[name.tail] = value; \
71 #define DEQUEUE_FIFO(name, value, ret) \
73 if (name.tail != name.size) {\
74 value = name.entries[name.tail]; \
83 typedef struct dp_wlist {
85 char macaddr[MAC_ADDRESS_SIZE];
91 GUPnPDeviceProxy *proxy;
92 GUPnPServiceProxyAction *action;
102 GString* gatewaystbip;
105 GString* bcastmacaddress;
106 GString* hostmacaddress;
107 GString* recvdevtype;
109 GString* buildversion;
110 GString* dsgtimezone;
114 gboolean usesdaylighttime;
117 GString* playbackurl;
118 GString* dataGatewayIPaddress;
123 gboolean devFoundFlag;
125 gboolean isOwnGateway;
126 gboolean isDevRefactored;
127 GUPnPServiceInfo* sproxy;
128 GUPnPServiceInfo* sproxy_i;
129 GUPnPServiceInfo* sproxy_m;
130 GUPnPServiceInfo* sproxy_g;
131 GUPnPServiceInfo* sproxy_q;
132 GUPnPServiceInfo* sproxy_t;
134 GString* modelnumber;
136 GString* hardwarerevision;
137 GString* softwarerevision;
138 GString* managementurl;
145 GList* xdevlist= NULL;
147 const guint host_port = 50759;
152 GMainContext *main_context;
153 GUPnPContext *context;
154 GUPnPContext *upnpContextDeviceProtect;
155 GUPnPControlPoint* cp, *cp_client, *cp_gw, *cp_bgw;
156 GString* outputfilename;
157 GString* outputcontents;
160 GString *ownSerialNo;
161 char ipaddress[INET6_ADDRSTRLEN];
167 gchar *gwSetupFile,*logFile,*outputJsonFile,*disCertFile, *disCertPath, *disKeyFile, *disKeyPath;
168 gboolean enableGwSetup;
175 #ifdef USE_XUPNP_TZ_UPDATE
183 {
"US/Hawaii",
"HST11",
"HST11HDT,M3.2.0,M11.1.0"},
184 {
"US/Alaska",
"AKST",
"AKST09AKDT,M3.2.0,M11.1.0"},
185 {
"US/Pacific",
"PST08",
"PST08PDT,M3.2.0,M11.1.0"},
186 {
"US/Mountain",
"MST07",
"MST07MDT,M3.2.0,M11.1.0"},
187 {
"US/Central",
"CST06",
"CST06CDT,M3.2.0,M11.1.0"},
188 {
"US/Eastern",
"EST05",
"EST05EDT,M3.2.0,M11.1.0"},
197 void xupnp_logger (
const gchar *log_domain, GLogLevelFlags log_level,
198 const gchar *message, gpointer user_data);
200 gboolean verifyDeviceAttributeChanges(GUPnPServiceProxy *,
GwyDeviceData *);
201 static void on_last_change (GUPnPServiceProxy *sproxy,
const char *variable_name, GValue *value, gpointer user_data);
204 int getipaddress(
const char* ifname,
char* ipAddressBuffer, gboolean ipv6Enabled);
210 void broadcastIPModeChange(
void);
213 #if defined(ENABLE_FEATURE_TELEMETRY2_0)
214 #include <telemetry_busmessage_sender.h>
223 gboolean process_gw_services_identity(GUPnPServiceProxy *sproxy,
GwyDeviceData* gwData);
224 gboolean process_gw_services_media_config(GUPnPServiceProxy *sproxy,
GwyDeviceData* gwData);
225 gboolean process_gw_services_time_config(GUPnPServiceProxy *sproxy,
GwyDeviceData* gwData);
226 gboolean process_gw_services_gateway_config(GUPnPServiceProxy *sproxy,
GwyDeviceData* gwData);
227 gboolean process_gw_services_qam_config(GUPnPServiceProxy *sproxy,
GwyDeviceData* gwData);
228 gboolean
processStringRequest(
const GUPnPServiceProxy *sproxy ,
const char * requestFn,
const char * responseFn, gchar ** result, gboolean isInCriticalPath);