mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-10-11 01:38:14 +08:00
feat: support listen-routing-mark for dns section
This commit is contained in:
1 parent
d67572bbae
commit
ad730ae974
3 files changed
+19
-16
No files matched your search
+13
-10
@@ -156,6 +156,7 @@ type DNS struct {
|
||||
FallbackIPFilter []C.IpMatcher
|
||||
FallbackDomainFilter []C.DomainMatcher
|
||||
Listen string
|
||||
ListenRoutingMark int
|
||||
EnhancedMode C.DNSMode
|
||||
DefaultNameserver []dns.NameServer
|
||||
CacheAlgorithm string
|
||||
@@ -228,6 +229,7 @@ type RawDNS struct {
|
||||
Fallback []string `yaml:"fallback" json:"fallback"`
|
||||
FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"`
|
||||
Listen string `yaml:"listen" json:"listen"`
|
||||
ListenRoutingMark int `yaml:"listen-routing-mark" json:"listen-routing-mark"`
|
||||
EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"`
|
||||
FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"`
|
||||
FakeIPRange6 string `yaml:"fake-ip-range6" json:"fake-ip-range6"`
|
||||
@@ -1400,16 +1402,17 @@ func parseDNS(rawCfg *RawConfig, ruleProviders map[string]P.RuleProvider) (*DNS,
|
||||
}
|
||||
|
||||
dnsCfg := &DNS{
|
||||
Enable: cfg.Enable,
|
||||
Listen: cfg.Listen,
|
||||
PreferH3: cfg.PreferH3,
|
||||
IPv6Timeout: cfg.IPv6Timeout,
|
||||
IPv6: cfg.IPv6,
|
||||
UseHosts: cfg.UseHosts,
|
||||
UseSystemHosts: cfg.UseSystemHosts,
|
||||
EnhancedMode: cfg.EnhancedMode,
|
||||
CacheAlgorithm: cfg.CacheAlgorithm,
|
||||
CacheMaxSize: cfg.CacheMaxSize,
|
||||
Enable: cfg.Enable,
|
||||
Listen: cfg.Listen,
|
||||
ListenRoutingMark: cfg.ListenRoutingMark,
|
||||
PreferH3: cfg.PreferH3,
|
||||
IPv6Timeout: cfg.IPv6Timeout,
|
||||
IPv6: cfg.IPv6,
|
||||
UseHosts: cfg.UseHosts,
|
||||
UseSystemHosts: cfg.UseSystemHosts,
|
||||
EnhancedMode: cfg.EnhancedMode,
|
||||
CacheAlgorithm: cfg.CacheAlgorithm,
|
||||
CacheMaxSize: cfg.CacheMaxSize,
|
||||
}
|
||||
var err error
|
||||
if dnsCfg.NameServer, err = parseNameServer(cfg.NameServer, cfg.RespectRules, cfg.PreferH3); err != nil {
|
||||
|
||||
+2
-4
@@ -43,7 +43,7 @@ func (s *Server) SetService(service resolver.Service) {
|
||||
s.service = service
|
||||
}
|
||||
|
||||
func ReCreateServer(addr string, service resolver.Service) {
|
||||
func ReCreateServer(addr string, lc *inbound.ListenerConfig, service resolver.Service) {
|
||||
if addr == address && service != nil {
|
||||
server.SetService(service)
|
||||
return
|
||||
@@ -62,7 +62,7 @@ func ReCreateServer(addr string, service resolver.Service) {
|
||||
server.service = nil
|
||||
address = ""
|
||||
|
||||
if addr == "" || service == nil {
|
||||
if addr == "" || lc == nil || service == nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -81,8 +81,6 @@ func ReCreateServer(addr string, service resolver.Service) {
|
||||
address = addr
|
||||
server = &Server{service: service}
|
||||
|
||||
lc := inbound.NewListenerConfig()
|
||||
lc.SetRouteMark(0) // TODO: add route mark support for dns server
|
||||
go func() {
|
||||
p, err := lc.ListenPacket(context.Background(), "udp", addr)
|
||||
if err != nil {
|
||||
|
||||
@@ -242,7 +242,7 @@ func updateDNS(c *config.DNS, generalIPv6 bool) {
|
||||
resolver.DefaultService = nil
|
||||
resolver.ProxyServerHostResolver = nil
|
||||
resolver.DirectHostResolver = nil
|
||||
dns.ReCreateServer("", nil)
|
||||
dns.ReCreateServer("", nil, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -297,7 +297,9 @@ func updateDNS(c *config.DNS, generalIPv6 bool) {
|
||||
resolver.DirectHostResolver = r.Resolver
|
||||
}
|
||||
|
||||
dns.ReCreateServer(c.Listen, s)
|
||||
lc := inbound.NewListenerConfig()
|
||||
lc.SetRouteMark(c.ListenRoutingMark)
|
||||
dns.ReCreateServer(c.Listen, lc, s)
|
||||
}
|
||||
|
||||
func updateHosts(tree *trie.DomainTrie[resolver.HostValue]) {
|
||||
|
||||
Reference in new issue
Block a user