UpnpMapping
data class UpnpMapping(val igd: IgdControl, val externalPort: Int, val internalPort: Int, val internalClient: String, val leaseSeconds: Int, val tcpMapped: Boolean, val udpMapped: Boolean)
The handle returned by Upnp.mapTcpAndUdp: enough state for the engine to refresh the lease (re-call mapTcpAndUdp before leaseSeconds elapses) and to tear the mapping down (Upnp.removeMapping) on shutdown.