fix: 添加relay日志

This commit is contained in:
2026-03-28 15:28:19 +08:00
parent 581c52f9b5
commit 17122f6e4c
8 changed files with 179 additions and 27 deletions

View File

@@ -196,15 +196,26 @@ func generateKCPConversationID() (uint32, error) {
return convID, nil
}
func listenKCPPacketConn(listenAddr, bindDevice string, logger KCPPacketDebugLogger, nodeRole, nodeID string) (net.PacketConn, error) {
// ResolveUDPListenConfig parses a UDP listen address and returns the socket
// family that should be used for binding it.
func ResolveUDPListenConfig(listenAddr string) (string, *net.UDPAddr, error) {
udpAddr, err := net.ResolveUDPAddr("udp", listenAddr)
if err != nil {
return "", nil, fmt.Errorf("transport: resolve udp listen addr %s: %w", listenAddr, err)
}
return udpListenNetwork(udpAddr), udpAddr, nil
}
func listenKCPPacketConn(listenAddr, bindDevice string, logger KCPPacketDebugLogger, nodeRole, nodeID string) (net.PacketConn, error) {
network, udpAddr, err := ResolveUDPListenConfig(listenAddr)
if err != nil {
return nil, fmt.Errorf("transport: resolve kcp listen addr %s: %w", listenAddr, err)
}
rawConn, err := listenUDPConn("udp", udpAddr, bindDevice)
rawConn, err := listenUDPConn(network, udpAddr, bindDevice)
if err != nil {
return nil, fmt.Errorf("transport: listen udp for kcp on %s: %w", listenAddr, err)
return nil, fmt.Errorf("transport: listen %s for kcp on %s: %w", network, udpListenAddr(udpAddr), err)
}
packetConn, err := newKCPPacketConn(rawConn, logger, nodeRole, nodeID)
@@ -280,3 +291,13 @@ func udpListenAddr(addr *net.UDPAddr) string {
}
return addr.String()
}
func udpListenNetwork(addr *net.UDPAddr) string {
if addr == nil || addr.IP == nil {
return "udp"
}
if addr.IP.To4() != nil {
return "udp4"
}
return "udp6"
}