mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-04 22:10:56 +01:00
9203690033
Code cleaning around the util/net package. The goal was to write a more understandable source code but modify nothing on the logic. Protect the WireGuard UDP listeners with marks. The implementation can support the VPN permission revocation events in thread safe way. It will be important if we start to support the running time route and DNS update features. - uniformize the file name convention: [struct_name] _ [functions] _ [os].go - code cleaning in net_linux.go - move env variables to env.go file
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
//go:build !ios
|
|
|
|
package net
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func DialUDP(network string, laddr, raddr *net.UDPAddr) (*net.UDPConn, error) {
|
|
if CustomRoutingDisabled() {
|
|
return net.DialUDP(network, laddr, raddr)
|
|
}
|
|
|
|
dialer := NewDialer()
|
|
dialer.LocalAddr = laddr
|
|
|
|
conn, err := dialer.Dial(network, raddr.String())
|
|
if err != nil {
|
|
return nil, fmt.Errorf("dialing UDP %s: %w", raddr.String(), err)
|
|
}
|
|
|
|
udpConn, ok := conn.(*Conn).Conn.(*net.UDPConn)
|
|
if !ok {
|
|
if err := conn.Close(); err != nil {
|
|
log.Errorf("Failed to close connection: %v", err)
|
|
}
|
|
return nil, fmt.Errorf("expected UDP connection, got different type: %T", conn)
|
|
}
|
|
|
|
return udpConn, nil
|
|
}
|
|
|
|
func DialTCP(network string, laddr, raddr *net.TCPAddr) (*net.TCPConn, error) {
|
|
if CustomRoutingDisabled() {
|
|
return net.DialTCP(network, laddr, raddr)
|
|
}
|
|
|
|
dialer := NewDialer()
|
|
dialer.LocalAddr = laddr
|
|
|
|
conn, err := dialer.Dial(network, raddr.String())
|
|
if err != nil {
|
|
return nil, fmt.Errorf("dialing TCP %s: %w", raddr.String(), err)
|
|
}
|
|
|
|
tcpConn, ok := conn.(*Conn).Conn.(*net.TCPConn)
|
|
if !ok {
|
|
if err := conn.Close(); err != nil {
|
|
log.Errorf("Failed to close connection: %v", err)
|
|
}
|
|
return nil, fmt.Errorf("expected TCP connection, got different type: %T", conn)
|
|
}
|
|
|
|
return tcpConn, nil
|
|
}
|