mirror of
https://github.com/hanzokms/turn.git
synced 2026-10-30 20:50:36 +00:00
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package turn
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"strconv"
|
|
|
|
"github.com/pion/transport/v3"
|
|
"github.com/pion/transport/v3/stdnet"
|
|
)
|
|
|
|
// RelayAddressGeneratorNone returns the listener with no modifications.
|
|
type RelayAddressGeneratorNone struct {
|
|
// Address is passed to Listen/ListenPacket when creating the Relay
|
|
Address string
|
|
|
|
Net transport.Net
|
|
}
|
|
|
|
// Validate is called on server startup and confirms the RelayAddressGenerator is properly configured.
|
|
func (r *RelayAddressGeneratorNone) Validate() error {
|
|
if r.Net == nil {
|
|
var err error
|
|
r.Net, err = stdnet.NewNet()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create network: %w", err)
|
|
}
|
|
}
|
|
|
|
switch {
|
|
case r.Address == "":
|
|
return errListeningAddressInvalid
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// AllocatePacketConn generates a new PacketConn to receive traffic on and the IP/Port
|
|
// to populate the allocation response with.
|
|
func (r *RelayAddressGeneratorNone) AllocatePacketConn(network string, requestedPort int) (
|
|
net.PacketConn,
|
|
net.Addr,
|
|
error,
|
|
) {
|
|
conn, err := r.Net.ListenPacket(network, r.Address+":"+strconv.Itoa(requestedPort))
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
return conn, conn.LocalAddr(), nil
|
|
}
|
|
|
|
// AllocateConn generates a new Conn to receive traffic on and the IP/Port
|
|
// to populate the allocation response with.
|
|
func (r *RelayAddressGeneratorNone) AllocateConn(string, int) (net.Conn, net.Addr, error) {
|
|
return nil, nil, errTODO
|
|
}
|