Set up fake ip route only if the dns feature flag is enabled

This commit is contained in:
Viktor Liu
2025-06-17 22:29:13 +02:00
parent 9468e69c8c
commit 306d75fe1a
3 changed files with 50 additions and 32 deletions
+21 -15
View File
@@ -66,6 +66,7 @@ type ManagerConfig struct {
InitialRoutes []*route.Route
StateManager *statemanager.Manager
DNSServer dns.Server
DNSFeatureFlag bool
PeerStore *peerstore.Store
DisableClientRoutes bool
DisableServerRoutes bool
@@ -134,13 +135,29 @@ func NewManager(config ManagerConfig) *DefaultManager {
}
if runtime.GOOS == "android" {
dm.fakeIPManager = fakeip.NewManager()
cr := dm.initialClientRoutes(config.InitialRoutes)
dm.notifier.SetInitialClientRoutes(cr)
dm.setupAndroidRoutes(config)
}
return dm
}
func (m *DefaultManager) setupAndroidRoutes(config ManagerConfig) {
cr := m.initialClientRoutes(config.InitialRoutes)
if config.DNSFeatureFlag {
m.fakeIPManager = fakeip.NewManager()
id := uuid.NewString()
fakeIPRoute := &route.Route{
ID: route.ID(id),
Network: m.fakeIPManager.GetFakeIPBlock(),
NetID: route.NetID(id),
Peer: m.pubKey,
NetworkType: route.IPv4Network,
}
cr = append(cr, fakeIPRoute)
}
m.notifier.SetInitialClientRoutes(cr, config.DNSFeatureFlag)
}
func (m *DefaultManager) setupRefCounters(useNoop bool) {
m.routeRefCounter = refcounter.New(
@@ -528,17 +545,6 @@ func (m *DefaultManager) initialClientRoutes(initialRoutes []*route.Route) []*ro
rs = append(rs, routes...)
}
fakeIPBlock := m.fakeIPManager.GetFakeIPBlock()
id := uuid.NewString()
fakeIPRoute := &route.Route{
ID: route.ID(id),
Network: fakeIPBlock,
NetID: route.NetID(id),
Peer: m.pubKey,
NetworkType: route.IPv4Network,
}
rs = append(rs, fakeIPRoute)
return rs
}
@@ -29,9 +29,13 @@ func (n *Notifier) SetListener(listener listener.NetworkChangeListener) {
n.listener = listener
}
func (n *Notifier) SetInitialClientRoutes(clientRoutes []*route.Route) {
func (n *Notifier) SetInitialClientRoutes(clientRoutes []*route.Route, dnsFeatureFlag bool) {
nets := make([]string, 0)
for _, r := range clientRoutes {
if r.IsDynamic() && !dnsFeatureFlag {
// this kind of dynamic route is not supported on android
continue
}
nets = append(nets, r.Network.String())
}
sort.Strings(nets)