mirror of
https://github.com/daeuniverse/dae.git
synced 2024-12-22 20:44:41 +07:00
94 lines
1.9 KiB
Go
94 lines
1.9 KiB
Go
/*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
* Copyright (c) 2022-2024, daeuniverse Organization <dae@v2raya.org>
|
|
*/
|
|
|
|
package consts
|
|
|
|
import (
|
|
"net/netip"
|
|
"time"
|
|
|
|
"golang.org/x/sys/unix"
|
|
)
|
|
|
|
type DialerSelectionPolicy string
|
|
|
|
const (
|
|
DialerSelectionPolicy_Random DialerSelectionPolicy = "random"
|
|
DialerSelectionPolicy_Fixed DialerSelectionPolicy = "fixed"
|
|
DialerSelectionPolicy_MinAverage10Latencies DialerSelectionPolicy = "min_avg10"
|
|
DialerSelectionPolicy_MinMovingAverageLatencies DialerSelectionPolicy = "min_moving_avg"
|
|
DialerSelectionPolicy_MinLastLatency DialerSelectionPolicy = "min"
|
|
)
|
|
|
|
const (
|
|
UdpCheckLookupHost = "connectivitycheck.gstatic.com."
|
|
DefaultDialTimeout = 8 * time.Second
|
|
)
|
|
|
|
type L4ProtoStr string
|
|
|
|
const (
|
|
L4ProtoStr_TCP L4ProtoStr = "tcp"
|
|
L4ProtoStr_UDP L4ProtoStr = "udp"
|
|
)
|
|
|
|
func (l L4ProtoStr) ToL4Proto() uint8 {
|
|
switch l {
|
|
case L4ProtoStr_TCP:
|
|
return unix.IPPROTO_TCP
|
|
case L4ProtoStr_UDP:
|
|
return unix.IPPROTO_IDP
|
|
}
|
|
panic("unsupported l4proto")
|
|
}
|
|
|
|
func (l L4ProtoStr) ToL4ProtoType() L4ProtoType {
|
|
switch l {
|
|
case L4ProtoStr_TCP:
|
|
return L4ProtoType_TCP
|
|
case L4ProtoStr_UDP:
|
|
return L4ProtoType_UDP
|
|
}
|
|
panic("unsupported l4proto: " + l)
|
|
}
|
|
|
|
type IpVersionStr string
|
|
|
|
const (
|
|
IpVersionStr_4 IpVersionStr = "4"
|
|
IpVersionStr_6 IpVersionStr = "6"
|
|
)
|
|
|
|
func (v IpVersionStr) ToIpVersion() uint8 {
|
|
switch v {
|
|
case IpVersionStr_4:
|
|
return 4
|
|
case IpVersionStr_6:
|
|
return 6
|
|
}
|
|
panic("unsupported ipversion")
|
|
}
|
|
|
|
func (v IpVersionStr) ToIpVersionType() IpVersionType {
|
|
switch v {
|
|
case IpVersionStr_4:
|
|
return IpVersion_4
|
|
case IpVersionStr_6:
|
|
return IpVersion_6
|
|
}
|
|
panic("unsupported ipversion")
|
|
}
|
|
|
|
func IpVersionFromAddr(addr netip.Addr) IpVersionStr {
|
|
var ipversion IpVersionStr
|
|
switch {
|
|
case addr.Is4() || addr.Is4In6():
|
|
ipversion = IpVersionStr_4
|
|
case addr.Is6():
|
|
ipversion = IpVersionStr_6
|
|
}
|
|
return ipversion
|
|
}
|