@@ -10,6 +10,7 @@ import (
1010 "runtime"
1111 "slices"
1212 "sync"
13+ "sync/atomic"
1314 "time"
1415
1516 "github.com/google/uuid"
@@ -23,6 +24,7 @@ import (
2324 "github.com/netbirdio/netbird/client/iface/netstack"
2425 "github.com/netbirdio/netbird/client/internal/dns"
2526 "github.com/netbirdio/netbird/client/internal/listener"
27+ nbdns "github.com/netbirdio/netbird/dns"
2628 "github.com/netbirdio/netbird/client/internal/peer"
2729 "github.com/netbirdio/netbird/client/internal/peerstore"
2830 "github.com/netbirdio/netbird/client/internal/routemanager/client"
@@ -54,6 +56,7 @@ type Manager interface {
5456 SetRouteChangeListener(listener listener.NetworkChangeListener)
5557 InitialRouteRange() []string
5658 SetFirewall(firewall.Manager) error
59+ SetDNSForwarderPort(port uint16)
5760 Stop(stateManager *statemanager.Manager)
5861}
5962
@@ -101,6 +104,7 @@ type DefaultManager struct {
101104 disableServerRoutes bool
102105 activeRoutes map[route.HAUniqueID]client.RouteHandler
103106 fakeIPManager *fakeip.Manager
107+ dnsForwarderPort atomic.Uint32
104108}
105109
106110func NewManager(config ManagerConfig) *DefaultManager {
@@ -130,6 +134,7 @@ func NewManager(config ManagerConfig) *DefaultManager {
130134 disableServerRoutes: config.DisableServerRoutes,
131135 activeRoutes: make(map[route.HAUniqueID]client.RouteHandler),
132136 }
137+ dm.dnsForwarderPort.Store(uint32(nbdns.ForwarderClientPort))
133138
134139 useNoop := netstack.IsEnabled() || config.DisableClientRoutes
135140 dm.setupRefCounters(useNoop)
@@ -270,6 +275,11 @@ func (m *DefaultManager) SetFirewall(firewall firewall.Manager) error {
270275 return nil
271276}
272277
278+ // SetDNSForwarderPort sets the DNS forwarder port for route handlers
279+ func (m *DefaultManager) SetDNSForwarderPort(port uint16) {
280+ m.dnsForwarderPort.Store(uint32(port))
281+ }
282+
273283// Stop stops the manager watchers and clean firewall rules
274284func (m *DefaultManager) Stop(stateManager *statemanager.Manager) {
275285 m.stop()
@@ -345,6 +355,7 @@ func (m *DefaultManager) updateSystemRoutes(newRoutes route.HAMap) error {
345355 UseNewDNSRoute: m.useNewDNSRoute,
346356 Firewall: m.firewall,
347357 FakeIPManager: m.fakeIPManager,
358+ ForwarderPort: &m.dnsForwarderPort,
348359 }
349360 handler := client.HandlerFromRoute(params)
350361 if err := handler.AddRoute(m.ctx); err != nil {
0 commit comments