- added support for libminiupnpc 1.7

This commit is contained in:
Mark Vejvoda
2012-12-26 01:11:11 +00:00
parent f78ba5e5e6
commit 7a57668a91
3 changed files with 71 additions and 31 deletions

View File

@@ -58,20 +58,40 @@ if (MINIUPNP_FOUND)
#include <stdio.h> #include <stdio.h>
int main() int main()
{ {
struct UPNPDev *devlist = NULL; static struct UPNPUrls urls;
int upnp_delay = 5000; static struct IGDdatas data;
const char *upnp_multicastif = NULL;
const char *upnp_minissdpdsock = NULL; GetUPNPUrls (&urls, &data, \"myurl\",0);
int upnp_sameport = 0;
int upnp_ipv6 = 0;
int upnp_error = 0;
devlist = upnpDiscover(upnp_delay, upnp_multicastif, upnp_minissdpdsock, upnp_sameport, upnp_ipv6, &upnp_error);
return 0; return 0;
}" }"
MINIUPNPC_VERSION_1_6_OR_HIGHER) MINIUPNPC_VERSION_1_7_OR_HIGHER)
IF (NOT MINIUPNPC_VERSION_1_6_OR_HIGHER) IF (NOT MINIUPNPC_VERSION_1_7_OR_HIGHER)
set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY})
check_cxx_source_runs("
#include <miniwget.h>
#include <miniupnpc.h>
#include <upnpcommands.h>
#include <stdio.h>
int main()
{
struct UPNPDev *devlist = NULL;
int upnp_delay = 5000;
const char *upnp_multicastif = NULL;
const char *upnp_minissdpdsock = NULL;
int upnp_sameport = 0;
int upnp_ipv6 = 0;
int upnp_error = 0;
devlist = upnpDiscover(upnp_delay, upnp_multicastif, upnp_minissdpdsock, upnp_sameport, upnp_ipv6, &upnp_error);
return 0;
}"
MINIUPNPC_VERSION_PRE1_7)
ENDIF()
IF (NOT MINIUPNPC_VERSION_PRE1_7 AND NOT MINIUPNPC_VERSION_1_7_OR_HIGHER)
set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR}) set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY}) set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY})
check_cxx_source_runs(" check_cxx_source_runs("
@@ -96,25 +116,27 @@ if (MINIUPNP_FOUND)
ENDIF() ENDIF()
set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR}) IF (NOT MINIUPNPC_VERSION_PRE1_6 AND NOT MINIUPNPC_VERSION_PRE1_7 AND NOT MINIUPNPC_VERSION_1_7_OR_HIGHER)
set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY}) set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR})
check_cxx_source_runs(" set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY})
#include <miniwget.h> check_cxx_source_runs("
#include <miniupnpc.h> #include <miniwget.h>
#include <upnpcommands.h> #include <miniupnpc.h>
#include <stdio.h> #include <upnpcommands.h>
static struct UPNPUrls urls; #include <stdio.h>
static struct IGDdatas data; static struct UPNPUrls urls;
int main() static struct IGDdatas data;
{ int main()
char externalIP[16] = ""; {
UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIP); char externalIP[16] = "";
UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIP);
return 0; return 0;
}" }"
MINIUPNPC_VERSION_1_5_OR_HIGHER) MINIUPNPC_VERSION_1_5_OR_HIGHER)
ENDIF()
IF (NOT MINIUPNPC_VERSION_1_5_OR_HIGHER) IF (NOT MINIUPNPC_VERSION_1_5_OR_HIGHER AND NOT MINIUPNPC_VERSION_PRE1_6 AND NOT MINIUPNPC_VERSION_PRE1_7 AND NOT MINIUPNPC_VERSION_1_7_OR_HIGHER)
set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR}) set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY}) set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY})
check_cxx_source_runs(" check_cxx_source_runs("
@@ -141,8 +163,12 @@ if (MINIUPNP_FOUND)
IF(MINIUPNPC_VERSION_PRE1_6) IF(MINIUPNPC_VERSION_PRE1_6)
message(STATUS "Found miniupnpc version is pre v1.6") message(STATUS "Found miniupnpc version is pre v1.6")
ENDIF() ENDIF()
IF(NOT MINIUPNPC_VERSION_PRE1_5 AND NOT MINIUPNPC_VERSION_PRE1_6) IF(MINIUPNPC_VERSION_PRE1_7)
message(STATUS "Found miniupnpc version is v1.6 or higher") message(STATUS "Found miniupnpc version is pre v1.7")
ENDIF()
IF(NOT MINIUPNPC_VERSION_PRE1_5 AND NOT MINIUPNPC_VERSION_PRE1_6 AND NOT MINIUPNPC_VERSION_PRE1_7)
message(STATUS "Found miniupnpc version is v1.7 or higher")
ENDIF() ENDIF()
else () else ()

View File

@@ -297,7 +297,12 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
ADD_DEFINITIONS(-DMINIUPNPC_VERSION_PRE1_6) ADD_DEFINITIONS(-DMINIUPNPC_VERSION_PRE1_6)
message(STATUS "Adding macro for miniupnpc version: pre v1.6") message(STATUS "Adding macro for miniupnpc version: pre v1.6")
ENDIF() ENDIF()
IF(NOT MINIUPNPC_VERSION_PRE1_5 AND NOT MINIUPNPC_VERSION_PRE1_6) IF(MINIUPNPC_VERSION_PRE1_7)
ADD_DEFINITIONS(-DMINIUPNPC_VERSION_PRE1_7)
message(STATUS "Adding macro for miniupnpc version: pre v1.7")
ENDIF()
IF(NOT MINIUPNPC_VERSION_PRE1_5 AND NOT MINIUPNPC_VERSION_PRE1_6 AND NOT MINIUPNPC_VERSION_PRE1_7)
message(STATUS "**No macros required for miniupnpc version") message(STATUS "**No macros required for miniupnpc version")
ENDIF() ENDIF()

View File

@@ -2478,13 +2478,22 @@ int UPNP_Tools::upnp_init(void *param) {
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("UPnP device found: %s %s\n", dev->descURL, dev->st); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("UPnP device found: %s %s\n", dev->descURL, dev->st);
//printf("UPnP device found: [%s] [%s] lanaddr [%s]\n", dev->descURL, dev->st,lanaddr); //printf("UPnP device found: [%s] [%s] lanaddr [%s]\n", dev->descURL, dev->st,lanaddr);
#ifndef MINIUPNPC_VERSION_PRE1_7
descXML = (char *)miniwget_getaddr(dev->descURL, &descXMLsize, lanaddr, (sizeof(lanaddr) / sizeof(lanaddr[0])),0);
#else
descXML = (char *)miniwget_getaddr(dev->descURL, &descXMLsize, lanaddr, (sizeof(lanaddr) / sizeof(lanaddr[0]))); descXML = (char *)miniwget_getaddr(dev->descURL, &descXMLsize, lanaddr, (sizeof(lanaddr) / sizeof(lanaddr[0])));
#endif
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"LAN address: %s\n", lanaddr); if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"LAN address: %s\n", lanaddr);
if (descXML) { if (descXML) {
parserootdesc (descXML, descXMLsize, &data); parserootdesc (descXML, descXMLsize, &data);
free (descXML); descXML = 0; free (descXML); descXML = 0;
#ifndef MINIUPNPC_VERSION_PRE1_7
GetUPNPUrls (&urls, &data, dev->descURL,0);
#else
GetUPNPUrls (&urls, &data, dev->descURL); GetUPNPUrls (&urls, &data, dev->descURL);
#endif
} }
snprintf(buf, 255,"UPnP device found: %s %s LAN address %s", dev->descURL, dev->st, lanaddr); snprintf(buf, 255,"UPnP device found: %s %s LAN address %s", dev->descURL, dev->st, lanaddr);