[#NATPMPRequestPortMap] = NATPMPRequestPortMap :mrdocs: Try to open a port using RFC 6886 NAT‐PMP. IPv4 only. == Synopsis Declared in `<common/pcp.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- std::variant<MappingResult, MappingError> NATPMPRequestPortMap( xref:CNetAddr.adoc[CNetAddr] const& gateway, uint16_t port, uint32_t lifetime, xref:CThreadInterrupt.adoc[CThreadInterrupt]& interrupt, int num_tries = 3, std::chrono::milliseconds timeout_per_try = std::chrono::milliseconds(1000)); ---- == Description * gateway: Destination address for PCP requests (usually the default gateway). * port: Internal port, and desired external port. * lifetime: Requested lifetime in seconds for mapping. The server may assign as shorter or longer lifetime. A lifetime of 0 deletes the mapping. * num_tries: Number of tries in case of no response. Returns the external_ip:external_port of the mapping if successful, otherwise a MappingError. == Return Value The mapping result on success, otherwise a MappingError. == Parameters [cols="1,4"] |=== | Name| Description | *gateway* | Destination address for requests (usually the default gateway). | *port* | Internal port, and desired external port. | *lifetime* | Requested lifetime in seconds; 0 deletes the mapping. | *interrupt* | Interruption signal used to abort while waiting for a response. | *num_tries* | Number of attempts in case of no response. | *timeout_per_try* | Time to wait for a response on each attempt. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#