2023-01-23 18:54:21 +07:00
|
|
|
/*
|
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
2023-01-28 12:56:06 +07:00
|
|
|
* Copyright (c) since 2022, v2rayA Organization <team@v2raya.org>
|
2023-01-23 18:54:21 +07:00
|
|
|
*/
|
|
|
|
|
|
|
|
package consts
|
|
|
|
|
2023-02-11 20:34:49 +07:00
|
|
|
import (
|
|
|
|
internal "github.com/v2rayA/dae/pkg/ebpf_internal"
|
|
|
|
"strconv"
|
|
|
|
)
|
2023-02-01 00:34:50 +07:00
|
|
|
|
2023-01-23 18:54:21 +07:00
|
|
|
const (
|
2023-01-29 06:31:52 +07:00
|
|
|
AppName = "dae"
|
|
|
|
BpfPinRoot = "/sys/fs/bpf"
|
2023-01-23 18:54:21 +07:00
|
|
|
|
|
|
|
AddrHdrSize = 20
|
2023-01-31 18:33:53 +07:00
|
|
|
|
|
|
|
TaskCommLen = 16
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
|
|
|
|
|
|
|
type ParamKey uint32
|
|
|
|
|
|
|
|
const (
|
2023-01-24 16:15:27 +07:00
|
|
|
ZeroKey ParamKey = iota
|
2023-01-23 18:54:21 +07:00
|
|
|
BigEndianTproxyPortKey
|
|
|
|
DisableL4TxChecksumKey
|
|
|
|
DisableL4RxChecksumKey
|
2023-02-11 12:34:12 +07:00
|
|
|
ControlPlanePidKey
|
|
|
|
ControlPlaneNatDirectKey
|
2023-02-07 12:49:47 +07:00
|
|
|
|
|
|
|
OneKey ParamKey = 1
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
|
|
|
|
|
|
|
type DisableL4ChecksumPolicy uint32
|
|
|
|
|
|
|
|
const (
|
|
|
|
DisableL4ChecksumPolicy_EnableL4Checksum DisableL4ChecksumPolicy = iota
|
|
|
|
DisableL4ChecksumPolicy_Restore
|
|
|
|
DisableL4ChecksumPolicy_SetZero
|
|
|
|
)
|
|
|
|
|
2023-01-29 12:38:15 +07:00
|
|
|
type RoutingType uint8
|
2023-01-23 18:54:21 +07:00
|
|
|
|
|
|
|
const (
|
2023-01-31 18:33:53 +07:00
|
|
|
MatchType_DomainSet RoutingType = iota
|
|
|
|
MatchType_IpSet
|
|
|
|
MatchType_SourceIpSet
|
|
|
|
MatchType_Port
|
|
|
|
MatchType_SourcePort
|
|
|
|
MatchType_L4Proto
|
|
|
|
MatchType_IpVersion
|
|
|
|
MatchType_Mac
|
|
|
|
MatchType_ProcessName
|
|
|
|
MatchType_Final
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
|
|
|
|
|
|
|
type OutboundIndex uint8
|
|
|
|
|
|
|
|
const (
|
2023-01-24 15:27:19 +07:00
|
|
|
OutboundDirect OutboundIndex = 0
|
2023-01-27 01:10:27 +07:00
|
|
|
OutboundBlock OutboundIndex = 1
|
2023-01-29 06:31:52 +07:00
|
|
|
OutboundControlPlaneDirect OutboundIndex = 0xFD
|
|
|
|
OutboundLogicalOr OutboundIndex = 0xFE
|
2023-01-24 15:27:19 +07:00
|
|
|
OutboundLogicalAnd OutboundIndex = 0xFF
|
2023-02-06 12:56:43 +07:00
|
|
|
|
2023-02-08 19:54:28 +07:00
|
|
|
OutboundMax = OutboundLogicalAnd
|
|
|
|
OutboundUserDefinedMax = OutboundControlPlaneDirect - 1
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
|
|
|
|
|
|
|
func (i OutboundIndex) String() string {
|
|
|
|
switch i {
|
|
|
|
case OutboundDirect:
|
|
|
|
return "direct"
|
2023-01-27 01:10:27 +07:00
|
|
|
case OutboundBlock:
|
|
|
|
return "block"
|
2023-01-24 15:27:19 +07:00
|
|
|
case OutboundControlPlaneDirect:
|
|
|
|
return "<Control Plane Direct>"
|
2023-01-29 06:31:52 +07:00
|
|
|
case OutboundLogicalOr:
|
|
|
|
return "<OR>"
|
2023-01-23 18:54:21 +07:00
|
|
|
case OutboundLogicalAnd:
|
|
|
|
return "<AND>"
|
|
|
|
default:
|
2023-02-11 20:34:49 +07:00
|
|
|
return strconv.Itoa(int(i))
|
2023-01-23 18:54:21 +07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const (
|
2023-02-02 20:22:18 +07:00
|
|
|
MaxMatchSetLen = 32 * 3
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
|
|
|
|
2023-01-24 23:31:20 +07:00
|
|
|
type L4ProtoType uint8
|
2023-01-23 18:54:21 +07:00
|
|
|
|
|
|
|
const (
|
2023-01-24 23:31:20 +07:00
|
|
|
L4ProtoType_TCP L4ProtoType = 1
|
|
|
|
L4ProtoType_UDP L4ProtoType = 2
|
|
|
|
L4ProtoType_TCP_UDP L4ProtoType = 3
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
|
|
|
|
2023-02-02 20:22:18 +07:00
|
|
|
type IpVersionType uint8
|
2023-01-23 18:54:21 +07:00
|
|
|
|
|
|
|
const (
|
2023-02-02 20:22:18 +07:00
|
|
|
IpVersion_4 IpVersionType = 1
|
|
|
|
IpVersion_6 IpVersionType = 2
|
|
|
|
IpVersion_X IpVersionType = 3
|
2023-01-23 18:54:21 +07:00
|
|
|
)
|
2023-02-01 00:34:50 +07:00
|
|
|
|
2023-02-04 10:38:01 +07:00
|
|
|
var (
|
|
|
|
BasicFeatureVersion = internal.Version{5, 2, 0}
|
|
|
|
// Deprecated: Ftrace does not support arm64 yet (Linux 6.2).
|
2023-02-04 12:37:36 +07:00
|
|
|
FtraceFeatureVersion = internal.Version{5, 5, 0}
|
|
|
|
UserspaceBatchUpdateFeatureVersion = internal.Version{5, 6, 0}
|
|
|
|
CgSocketCookieFeatureVersion = internal.Version{5, 7, 0}
|
2023-02-06 12:56:43 +07:00
|
|
|
SkAssignFeatureVersion = internal.Version{5, 7, 0}
|
2023-02-04 12:37:36 +07:00
|
|
|
ChecksumFeatureVersion = internal.Version{5, 8, 0}
|
|
|
|
UserspaceBatchUpdateLpmTrieFeatureVersion = internal.Version{5, 13, 0}
|
2023-02-04 10:38:01 +07:00
|
|
|
)
|
2023-02-06 12:56:43 +07:00
|
|
|
|
|
|
|
const (
|
2023-02-08 21:13:57 +07:00
|
|
|
TproxyMark uint32 = 0x8000000
|
2023-02-07 20:11:12 +07:00
|
|
|
LoopbackIfIndex = 1
|
2023-02-06 12:56:43 +07:00
|
|
|
)
|
2023-02-12 20:50:15 +07:00
|
|
|
|
|
|
|
const (
|
|
|
|
IsWan = 0
|
|
|
|
IsLan = 1
|
|
|
|
)
|