-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupnp.h
More file actions
40 lines (34 loc) · 999 Bytes
/
upnp.h
File metadata and controls
40 lines (34 loc) · 999 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once
#include <miniupnpc/miniupnpc.h>
#include <miniupnpc/upnpcommands.h>
#include <string>
class UPnPForward {
public:
UPnPForward();
~UPnPForward();
bool add_port_mapping(int port);
bool remove_port_mapping(int port);
bool test_upnp_available() {
UPNPDev* devlist = nullptr;
try {
unsigned char ttl = 2;
devlist = upnpDiscover(2000, nullptr, nullptr, 0, 0, ttl, nullptr);
if (!devlist) return false;
struct UPNPUrls urls;
struct IGDdatas data;
char lanaddr[16] = { 0 };
int result = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
freeUPNPDevlist(devlist);
FreeUPNPUrls(&urls);
return result == 1;
}
catch (...) {
if (devlist) freeUPNPDevlist(devlist);
return false;
}
}
private:
struct UPNPUrls urls;
struct IGDdatas data;
char lanaddr[16];
};