MCPcopy Create free account
hub / github.com/ElementsProject/elements / ProcessNatpmp

Function ProcessNatpmp

src/mapport.cpp:124–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124static bool ProcessNatpmp()
125{
126 bool ret = false;
127 natpmp_t natpmp;
128 struct in_addr external_ipv4_addr;
129 if (NatpmpInit(&natpmp) && NatpmpDiscover(&natpmp, external_ipv4_addr)) {
130 bool external_ip_discovered = false;
131 const uint16_t private_port = GetListenPort();
132 do {
133 ret = NatpmpMapping(&natpmp, external_ipv4_addr, private_port, external_ip_discovered);
134 } while (ret && g_mapport_interrupt.sleep_for(PORT_MAPPING_REANNOUNCE_PERIOD));
135 g_mapport_interrupt.reset();
136
137 const int r_send = sendnewportmappingrequest(&natpmp, NATPMP_PROTOCOL_TCP, private_port, g_mapport_external_port, /* remove a port mapping */ 0);
138 g_mapport_external_port = 0;
139 if (r_send == 12 /* OK */) {
140 LogPrintf("natpmp: Port mapping removed successfully.\n");
141 } else {
142 LogPrintf("natpmp: sendnewportmappingrequest(0) failed with %d error.\n", r_send);
143 }
144 }
145
146 closenatpmp(&natpmp);
147 return ret;
148}
149#endif // USE_NATPMP
150
151#ifdef USE_UPNP

Callers 1

ThreadMapPortFunction · 0.85

Calls 6

NatpmpInitFunction · 0.85
NatpmpDiscoverFunction · 0.85
GetListenPortFunction · 0.85
NatpmpMappingFunction · 0.85
sleep_forMethod · 0.80
resetMethod · 0.45

Tested by

no test coverage detected