miniupnpc-libevent: use service type from root description
This commit is contained in:
parent
37cb73329a
commit
3065bc570f
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: miniupnpc-libevent.c,v 1.10 2014/11/14 11:37:45 nanard Exp $ */
|
/* $Id: miniupnpc-libevent.c,v 1.11 2014/11/17 09:17:38 nanard Exp $ */
|
||||||
/* miniupnpc-libevent
|
/* miniupnpc-libevent
|
||||||
* Copyright (c) 2008-2014, Thomas BERNARD <miniupnp@free.fr>
|
* Copyright (c) 2008-2014, Thomas BERNARD <miniupnp@free.fr>
|
||||||
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
||||||
|
@ -342,9 +342,13 @@ static void upnpc_desc_received(struct evhttp_request * req, void * pvoid)
|
||||||
printIGD(&igd);
|
printIGD(&igd);
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
p->control_conn_url = build_url_string(igd.urlbase, p->root_desc_location, igd.first.controlurl);
|
p->control_conn_url = build_url_string(igd.urlbase, p->root_desc_location, igd.first.controlurl);
|
||||||
|
p->conn_service_type = strdup(igd.first.servicetype);
|
||||||
p->control_cif_url = build_url_string(igd.urlbase, p->root_desc_location, igd.CIF.controlurl);
|
p->control_cif_url = build_url_string(igd.urlbase, p->root_desc_location, igd.CIF.controlurl);
|
||||||
debug_printf("control_conn_url='%s'\n", p->control_conn_url);
|
p->cif_service_type = strdup(igd.CIF.servicetype);
|
||||||
debug_printf("control_cif_url='%s'\n", p->control_cif_url);
|
debug_printf("control_conn_url='%s'\n (service_type='%s')\n",
|
||||||
|
p->control_conn_url, p->conn_service_type);
|
||||||
|
debug_printf("control_cif_url='%s'\n (service_type='%s')\n",
|
||||||
|
p->control_cif_url, p->cif_service_type);
|
||||||
p->ready_cb(evhttp_request_get_response_code(req), p->cb_data);
|
p->ready_cb(evhttp_request_get_response_code(req), p->cb_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -592,8 +596,12 @@ int upnpc_finalize(upnpc_t * p)
|
||||||
p->root_desc_location = NULL;
|
p->root_desc_location = NULL;
|
||||||
free(p->control_cif_url);
|
free(p->control_cif_url);
|
||||||
p->control_cif_url = NULL;
|
p->control_cif_url = NULL;
|
||||||
|
free(p->cif_service_type);
|
||||||
|
p->cif_service_type = NULL;
|
||||||
free(p->control_conn_url);
|
free(p->control_conn_url);
|
||||||
p->control_conn_url = NULL;
|
p->control_conn_url = NULL;
|
||||||
|
free(p->conn_service_type);
|
||||||
|
p->conn_service_type = NULL;
|
||||||
if(p->ssdp_socket >= 0) {
|
if(p->ssdp_socket >= 0) {
|
||||||
close(p->ssdp_socket);
|
close(p->ssdp_socket);
|
||||||
p->ssdp_socket = -1;
|
p->ssdp_socket = -1;
|
||||||
|
@ -621,14 +629,14 @@ int upnpc_finalize(upnpc_t * p)
|
||||||
int upnpc_get_external_ip_address(upnpc_t * p)
|
int upnpc_get_external_ip_address(upnpc_t * p)
|
||||||
{
|
{
|
||||||
return upnpc_send_soap_request(p, p->control_conn_url,
|
return upnpc_send_soap_request(p, p->control_conn_url,
|
||||||
"urn:schemas-upnp-org:service:WANIPConnection:1",
|
p->conn_service_type/*"urn:schemas-upnp-org:service:WANIPConnection:1"*/,
|
||||||
"GetExternalIPAddress", NULL, 0);
|
"GetExternalIPAddress", NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int upnpc_get_link_layer_max_rate(upnpc_t * p)
|
int upnpc_get_link_layer_max_rate(upnpc_t * p)
|
||||||
{
|
{
|
||||||
return upnpc_send_soap_request(p, p->control_cif_url,
|
return upnpc_send_soap_request(p, p->control_cif_url,
|
||||||
"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1",
|
p->cif_service_type/*"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"*/,
|
||||||
"GetCommonLinkProperties", NULL, 0);
|
"GetCommonLinkProperties", NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,7 +657,7 @@ int upnpc_delete_port_mapping(upnpc_t * p,
|
||||||
args[2].elt = "NewProtocol";
|
args[2].elt = "NewProtocol";
|
||||||
args[2].val = proto;
|
args[2].val = proto;
|
||||||
return upnpc_send_soap_request(p, p->control_conn_url,
|
return upnpc_send_soap_request(p, p->control_conn_url,
|
||||||
"urn:schemas-upnp-org:service:WANIPConnection:1",
|
p->conn_service_type,/*"urn:schemas-upnp-org:service:WANIPConnection:1",*/
|
||||||
"DeletePortMapping",
|
"DeletePortMapping",
|
||||||
args, 3);
|
args, 3);
|
||||||
}
|
}
|
||||||
|
@ -687,7 +695,7 @@ int upnpc_add_port_mapping(upnpc_t * p,
|
||||||
args[7].elt = "NewLeaseDuration";
|
args[7].elt = "NewLeaseDuration";
|
||||||
args[7].val = lease_duration_str;
|
args[7].val = lease_duration_str;
|
||||||
return upnpc_send_soap_request(p, p->control_conn_url,
|
return upnpc_send_soap_request(p, p->control_conn_url,
|
||||||
"urn:schemas-upnp-org:service:WANIPConnection:1",
|
p->conn_service_type/*"urn:schemas-upnp-org:service:WANIPConnection:1"*/,
|
||||||
"AddPortMapping",
|
"AddPortMapping",
|
||||||
args, 8);
|
args, 8);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: miniupnpc-libevent.h,v 1.5 2014/11/14 10:55:37 nanard Exp $ */
|
/* $Id: miniupnpc-libevent.h,v 1.6 2014/11/17 09:17:38 nanard Exp $ */
|
||||||
/* miniupnpc-libevent
|
/* miniupnpc-libevent
|
||||||
* Copyright (c) 2008-2014, Thomas BERNARD <miniupnp@free.fr>
|
* Copyright (c) 2008-2014, Thomas BERNARD <miniupnp@free.fr>
|
||||||
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
||||||
|
@ -42,7 +42,9 @@ typedef struct {
|
||||||
char * root_desc_location;
|
char * root_desc_location;
|
||||||
struct evhttp_connection * desc_conn;
|
struct evhttp_connection * desc_conn;
|
||||||
char * control_cif_url;
|
char * control_cif_url;
|
||||||
|
char * cif_service_type;
|
||||||
char * control_conn_url;
|
char * control_conn_url;
|
||||||
|
char * conn_service_type;
|
||||||
struct evhttp_connection * soap_conn;
|
struct evhttp_connection * soap_conn;
|
||||||
struct NameValueParserData soap_response_data;
|
struct NameValueParserData soap_response_data;
|
||||||
upnpc_callback_fn ready_cb;
|
upnpc_callback_fn ready_cb;
|
||||||
|
|
Loading…
Reference in New Issue