| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | 
							- package adapter
 
- import (
 
- 	"context"
 
- 	"net"
 
- 	"net/netip"
 
- 	"github.com/sagernet/sing-box/common/geoip"
 
- 	"github.com/sagernet/sing-dns"
 
- 	"github.com/sagernet/sing/common/control"
 
- 	N "github.com/sagernet/sing/common/network"
 
- 	"golang.org/x/net/dns/dnsmessage"
 
- )
 
- type Router interface {
 
- 	Service
 
- 	Outbound(tag string) (Outbound, bool)
 
- 	DefaultOutbound(network string) Outbound
 
- 	RouteConnection(ctx context.Context, conn net.Conn, metadata InboundContext) error
 
- 	RoutePacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext) error
 
- 	GeoIPReader() *geoip.Reader
 
- 	LoadGeosite(code string) (Rule, error)
 
- 	Exchange(ctx context.Context, message *dnsmessage.Message) (*dnsmessage.Message, error)
 
- 	Lookup(ctx context.Context, domain string, strategy dns.DomainStrategy) ([]netip.Addr, error)
 
- 	LookupDefault(ctx context.Context, domain string) ([]netip.Addr, error)
 
- 	InterfaceBindManager() control.BindManager
 
- 	DefaultInterface() string
 
- 	AutoDetectInterface() bool
 
- 	AutoDetectInterfaceName() string
 
- 	AutoDetectInterfaceIndex() int
 
- 	Rules() []Rule
 
- 	SetTrafficController(controller TrafficController)
 
- }
 
- type Rule interface {
 
- 	Service
 
- 	Type() string
 
- 	UpdateGeosite() error
 
- 	Match(metadata *InboundContext) bool
 
- 	Outbound() string
 
- 	String() string
 
- }
 
 
  |