feat(protonvpn): port forwarding support with NAT-PMP (#1543)
Co-authored-by: Nicholas Xavier <nicho@nicho.dev>
This commit is contained in:
26
internal/natpmp/natpmp.go
Normal file
26
internal/natpmp/natpmp.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package natpmp
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// Client is a NAT-PMP protocol client.
|
||||
type Client struct {
|
||||
serverPort uint16
|
||||
initialRetry time.Duration
|
||||
maxRetries uint
|
||||
}
|
||||
|
||||
// New creates a new NAT-PMP client.
|
||||
func New() (client *Client) {
|
||||
const natpmpPort = 5351
|
||||
|
||||
// Parameters described in https://www.ietf.org/rfc/rfc6886.html#section-3.1
|
||||
const initialRetry = 250 * time.Millisecond
|
||||
const maxTries = 9 // 64 seconds
|
||||
return &Client{
|
||||
serverPort: natpmpPort,
|
||||
initialRetry: initialRetry,
|
||||
maxRetries: maxTries,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user