Go to the documentation of this file.
20 #include <QWaitCondition>
23 #include <QTextStream>
25 #include <QMessageBox>
27 #define UPNPCONTROL_REINIT_MSEC 300000 // 5 minutes
28 #define UPNPCONTROL_MAX_WAIT_MSEC 60000 // 1 minute
62 bool shouldExit =
false;
101 quint16 desiredDirPort, desiredOrPort;
102 bool force_init =
false;
131 if (desiredOrPort !=
_orPort) {
206 if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0) {
207 vWarn(
"WSAStartup failure while updating UPnP port forwarding");
250 if (NULL == devlist) {
251 vWarn(
"upnpDiscover returned: NULL");
257 vInfo(
"GetValidIGD returned: %1").arg(retval);
261 if (retval != 1 && retval != 2)
279 sPort = QString::number(port);
283 qPrintable(sPort), qPrintable(sPort),
lanaddr,
284 "Tor relay",
"TCP", NULL);
286 vWarn(
"AddPortMapping(%1, %2, %3) failed with code %4")
287 .arg(sPort).arg(sPort).arg(
lanaddr).arg(retval);
293 qPrintable(sPort),
"TCP",
296 vWarn(
"GetSpecificPortMappingEntry() failed with code %1").arg(retval);
301 vWarn(
"GetSpecificPortMappingEntry failed.");
306 vInfo(
"(external):%1 -> %2:%3").arg(sPort).arg(intClient).arg(intPort);
316 QString sPort = QString::number(port);
320 qPrintable(sPort),
"TCP", NULL);
322 vWarn(
"DeletePortMapping() failed with code %1").arg(retval);
327 vInfo(
"(external):%1 -> <>").arg(sPort);
bool err(QString *str, const QString &errmsg)
static UPNPControl * instance()
@ ForwardingCompleteState
void setError(UPNPError error)
struct IGDdatas_service first
UPNPControl::UPNPError disablePort(quint16 port)
QWaitCondition * _waitCondition
#define UPNPCONTROL_REINIT_MSEC
LIBSPEC int UPNP_GetSpecificPortMappingEntry(const char *controlURL, const char *servicetype, const char *extPort, const char *proto, char *intClient, char *intPort)
LIBSPEC struct UPNPDev * upnpDiscover(int delay, const char *multicastif, const char *minissdpdsock, int sameport)
UPNPControl::UPNPError initializeUPNP()
#define UPNPCOMMAND_SUCCESS
void setState(UPNPState state)
LIBSPEC int UPNP_AddPortMapping(const char *controlURL, const char *servicetype, const char *extPort, const char *inPort, const char *inClient, const char *desc, const char *proto, const char *remoteHost)
char servicetype[MINIUPNPC_URL_MAXSIZE]
LIBSPEC int UPNP_DeletePortMapping(const char *controlURL, const char *servicetype, const char *extPort, const char *proto, const char *remoteHost)
@ DeletePortMappingFailed
LIBSPEC void freeUPNPDevlist(struct UPNPDev *devlist)
UPNPControlThread(UPNPControl *control)
UPNPControl::UPNPError updatePort(quint16 oldPort, quint16 newPort)
void getDesiredState(quint16 *desiredDirPort, quint16 *desiredOrPort)
#define UPNPCONTROL_MAX_WAIT_MSEC
UPNPControl::UPNPError forwardPort(quint16 port)
static const int UPNPCONTROL_DISCOVER_TIMEOUT
LIBSPEC int UPNP_GetValidIGD(struct UPNPDev *devlist, struct UPNPUrls *urls, struct IGDdatas *data, char *lanaddr, int lanaddrlen)