Files
sing-box-extended-mirror/experimental/libbox/platform.go
T

105 lines
2.7 KiB
Go
Raw Normal View History

2022-10-25 12:55:00 +08:00
package libbox
2026-05-13 22:37:05 +08:00
import C "github.com/sagernet/sing-box/constant"
2023-02-28 19:02:27 +08:00
2022-10-25 12:55:00 +08:00
type PlatformInterface interface {
2025-03-16 14:50:44 +08:00
LocalDNSTransport() LocalDNSTransport
UsePlatformAutoDetectInterfaceControl() bool
2022-10-25 12:55:00 +08:00
AutoDetectInterfaceControl(fd int32) error
2023-02-26 19:16:28 +08:00
OpenTun(options TunOptions) (int32, error)
2022-10-25 12:55:00 +08:00
UseProcFS() bool
2026-01-04 02:53:33 +08:00
FindConnectionOwner(ipProtocol int32, sourceAddress string, sourcePort int32, destinationAddress string, destinationPort int32) (*ConnectionOwner, error)
2023-04-18 14:04:09 +08:00
StartDefaultInterfaceMonitor(listener InterfaceUpdateListener) error
CloseDefaultInterfaceMonitor(listener InterfaceUpdateListener) error
GetInterfaces() (NetworkInterfaceIterator, error)
2023-06-07 21:01:29 +08:00
UnderNetworkExtension() bool
2024-05-07 20:34:24 +08:00
IncludeAllNetworks() bool
ReadWIFIState() *WIFIState
2025-01-08 10:34:45 +08:00
SystemCertificates() StringIterator
ClearDNSCache()
2024-11-06 12:51:53 +08:00
SendNotification(notification *Notification) error
StartNeighborMonitor(listener NeighborUpdateListener) error
CloseNeighborMonitor(listener NeighborUpdateListener) error
RegisterMyInterface(name string)
}
type NeighborUpdateListener interface {
UpdateNeighborTable(entries NeighborEntryIterator)
2022-10-25 12:55:00 +08:00
}
2026-01-04 02:53:33 +08:00
type ConnectionOwner struct {
2026-03-23 18:33:03 +08:00
UserId int32
UserName string
ProcessPath string
androidPackageNames []string
}
func (c *ConnectionOwner) SetAndroidPackageNames(names StringIterator) {
c.androidPackageNames = iteratorToArray[string](names)
}
func (c *ConnectionOwner) AndroidPackageNames() StringIterator {
return newIterator(c.androidPackageNames)
2026-01-04 02:53:33 +08:00
}
2023-04-18 14:04:09 +08:00
type InterfaceUpdateListener interface {
2024-11-11 16:23:45 +08:00
UpdateDefaultInterface(interfaceName string, interfaceIndex int32, isExpensive bool, isConstrained bool)
2023-04-18 14:04:09 +08:00
}
2024-11-11 16:23:45 +08:00
const (
2024-11-13 19:05:28 +08:00
InterfaceTypeWIFI = int32(C.InterfaceTypeWIFI)
InterfaceTypeCellular = int32(C.InterfaceTypeCellular)
InterfaceTypeEthernet = int32(C.InterfaceTypeEthernet)
InterfaceTypeOther = int32(C.InterfaceTypeOther)
2024-11-11 16:23:45 +08:00
)
2023-04-18 14:04:09 +08:00
type NetworkInterface struct {
Index int32
MTU int32
Name string
Addresses StringIterator
2024-10-29 15:28:58 +08:00
Flags int32
2024-11-11 16:23:45 +08:00
2024-11-13 19:05:28 +08:00
Type int32
2024-11-11 16:23:45 +08:00
DNSServer StringIterator
Metered bool
2023-04-18 14:04:09 +08:00
}
type WIFIState struct {
SSID string
BSSID string
}
func NewWIFIState(wifiSSID string, wifiBSSID string) *WIFIState {
return &WIFIState{wifiSSID, wifiBSSID}
}
2023-04-18 14:04:09 +08:00
type NetworkInterfaceIterator interface {
Next() *NetworkInterface
2023-02-28 19:02:27 +08:00
HasNext() bool
}
2024-11-06 12:51:53 +08:00
type Notification struct {
Identifier string
TypeName string
TypeID int32
Title string
Subtitle string
Body string
OpenURL string
}
2023-02-28 19:02:27 +08:00
type OnDemandRule interface {
Target() int32
DNSSearchDomainMatch() StringIterator
DNSServerAddressMatch() StringIterator
InterfaceTypeMatch() int32
SSIDMatch() StringIterator
ProbeURL() string
}
2023-04-18 14:04:09 +08:00
type OnDemandRuleIterator interface {
Next() OnDemandRule
HasNext() bool
}