MCPcopy Create free account
hub / github.com/ddnet/ddnet / Open

Method Open

src/engine/server/upnp.cpp:17–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15#include <cstdlib>
16
17void CUPnP::Open(NETADDR Address)
18{
19 if(g_Config.m_SvUseUPnP)
20 {
21 m_Enabled = false;
22 m_Addr = Address;
23 m_pUPnPUrls = (struct UPNPUrls *)malloc(sizeof(struct UPNPUrls));
24 m_pUPnPData = (struct IGDdatas *)malloc(sizeof(struct IGDdatas));
25
26 char aLanAddr[64];
27 char aPort[6];
28 int Error;
29
30 m_pUPnPDevice = upnpDiscover(2000, NULL, NULL, 0, 0, 2, &Error);
31
32#if MINIUPNPC_API_VERSION > 17
33 char aWanAddr[64];
34 int Status = UPNP_GetValidIGD(m_pUPnPDevice, m_pUPnPUrls, m_pUPnPData, aLanAddr, sizeof(aLanAddr), aWanAddr, sizeof(aWanAddr));
35 dbg_msg("upnp", "status=%d, lan_addr=%s, wan_addr=%s", Status, aLanAddr, aWanAddr);
36#else
37 int Status = UPNP_GetValidIGD(m_pUPnPDevice, m_pUPnPUrls, m_pUPnPData, aLanAddr, sizeof(aLanAddr));
38 dbg_msg("upnp", "status=%d, lan_addr=%s", Status, aLanAddr);
39#endif
40
41 if(Status == 1)
42 {
43 m_Enabled = true;
44 dbg_msg("upnp", "found valid IGD: %s", m_pUPnPUrls->controlURL);
45 str_format(aPort, sizeof(aPort), "%d", m_Addr.port);
46 Error = UPNP_AddPortMapping(m_pUPnPUrls->controlURL, m_pUPnPData->first.servicetype,
47 aPort, aPort, aLanAddr,
48 "DDNet Server " GAME_RELEASE_VERSION,
49 "UDP", NULL, "0");
50
51 if(Error)
52 dbg_msg("upnp", "failed to map port, error: %s", strupnperror(Error));
53 else
54 dbg_msg("upnp", "successfully mapped port");
55 }
56 else
57 dbg_msg("upnp", "no valid IGD found, disabled");
58 }
59}
60
61void CUPnP::Shutdown()
62{

Callers 15

SaveMethod · 0.45
OnMapChangeMethod · 0.45
OpenMapFunction · 0.45
ResaveMapFunction · 0.45
ProcessFunction · 0.45
ProcessFunction · 0.45
TestMapFunction · 0.45
ExtractMapFunction · 0.45
mainFunction · 0.45
ProcessFunction · 0.45
mainFunction · 0.45
OpenMapsFunction · 0.45

Calls 2

dbg_msgFunction · 0.85
str_formatFunction · 0.85

Tested by 2

TestMapFunction · 0.36
TESTFunction · 0.36