make routes from corp presisting and update with the list of route change on corp

This commit is contained in:
Kevin Liang 2024-03-20 17:08:21 +00:00
parent db01cc62e0
commit 4db1ea4729
3 changed files with 19 additions and 5 deletions

View File

@ -11,7 +11,6 @@ package appc
import (
"context"
"fmt"
"net/netip"
"slices"
"strings"
@ -168,12 +167,26 @@ func (e *AppConnector) updateRoutes(routes []netip.Prefix) {
return
}
routeInfo := e.routeAdvertiser.ReadRouteInfoFromStore()
oldCorp := routeInfo.Corp
var toRemove []netip.Prefix
for _, ipp := range oldCorp {
if slices.Contains(routes, ipp) {
continue
}
toRemove = append(toRemove, ipp)
}
if err := e.routeAdvertiser.UnadvertiseRoute(toRemove...); err != nil {
e.logf("failed to unadvertise old routes: %v: %v", routes, err)
}
routeInfo.Corp = routes
if err := e.routeAdvertiser.AdvertiseRoute(routes...); err != nil {
e.logf("failed to advertise routes: %v: %v", routes, err)
return
}
var toRemove []netip.Prefix
toRemove = toRemove[:0]
nextRoute:
for _, r := range routes {
@ -193,6 +206,7 @@ nextRoute:
}
e.controlRoutes = routes
e.routeAdvertiser.UpdateRoutesInfoToStore(routeInfo)
}
// Domains returns the currently configured domain list.
@ -343,7 +357,6 @@ func (e *AppConnector) ObserveDNSResponse(res []byte) {
routeInfo.UpdateRoutesInDiscoveredForDomain(domain, routesToUpdate)
e.routeAdvertiser.UpdateRoutesInfoToStore(routeInfo)
fmt.Println("Appc DNS lookup", routeInfo)
e.scheduleAdvertisement(domain, toAdvertise...)
}
}

View File

@ -727,7 +727,7 @@ func (lc *LocalClient) EditPrefs(ctx context.Context, mp *ipn.MaskedPrefs) (*ipn
if err != nil {
return nil, err
}
fmt.Println(decodeJSON[*ipn.Prefs](body))
fmt.Println(decodeJSON[*ipn.Prefs](body)) // Kevin debug
return decodeJSON[*ipn.Prefs](body)
}

View File

@ -5988,6 +5988,7 @@ func coveredRouteRangeNoDefault(finalRoutes []netip.Prefix, ipp netip.Prefix) bo
// UnadvertiseRoute implements the appc.RouteAdvertiser interface. It removes
// a route advertisement if one is present in the existing routes.
func (b *LocalBackend) UnadvertiseRoute(toRemove ...netip.Prefix) error {
fmt.Println("We are unadvertising routes: ", toRemove)
currentRoutes := b.Prefs().AdvertiseRoutes().AsSlice()
finalRoutes := currentRoutes[:0]
@ -5997,7 +5998,7 @@ func (b *LocalBackend) UnadvertiseRoute(toRemove ...netip.Prefix) error {
}
finalRoutes = append(finalRoutes, ipp)
}
fmt.Println("We are advertising these routes in unadvertising routes: ", finalRoutes)
_, err := b.EditPrefs(&ipn.MaskedPrefs{
Prefs: ipn.Prefs{
AdvertiseRoutes: finalRoutes,