feat: support listen-routing-mark for dns section

This commit is contained in:
wwqgtxx committed 2026-06-12 10:12:04 +08:00
1 parent d67572bbae
commit ad730ae974
3 files changed
+19 -16

No files matched your search

+13 -10
View File
@@ -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
View File
@@ -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 {
+4 -2
View File
@@ -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]) {