27 lines
628 B
Go
27 lines
628 B
Go
package natpmp
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Client is a NAT-PMP protocol client.
|
|
type Client struct {
|
|
serverPort uint16
|
|
initialConnectionDuration 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 initialConnectionDuration = 250 * time.Millisecond
|
|
const maxTries = 9 // 64 seconds
|
|
return &Client{
|
|
serverPort: natpmpPort,
|
|
initialConnectionDuration: initialConnectionDuration,
|
|
maxRetries: maxTries,
|
|
}
|
|
}
|