forked from extern/smegmesh
74 lines
1.3 KiB
Go
74 lines
1.3 KiB
Go
package mesh
|
|
|
|
import (
|
|
"github.com/tim-beatham/wgmesh/pkg/route"
|
|
)
|
|
|
|
type RouteManager interface {
|
|
UpdateRoutes() error
|
|
ApplyWg() error
|
|
}
|
|
|
|
type RouteManagerImpl struct {
|
|
meshManager *MeshManager
|
|
routeInstaller route.RouteInstaller
|
|
}
|
|
|
|
func (r *RouteManagerImpl) UpdateRoutes() error {
|
|
// // meshes := r.meshManager.Meshes
|
|
// // ulaBuilder := new(ip.ULABuilder)
|
|
|
|
// for _, mesh1 := range meshes {
|
|
// for _, mesh2 := range meshes {
|
|
// if mesh1 == mesh2 {
|
|
// continue
|
|
// }
|
|
|
|
// ipNet, err := ulaBuilder.GetIPNet(mesh2.MeshId)
|
|
|
|
// if err != nil {
|
|
// logging.Log.WriteErrorf(err.Error())
|
|
// return err
|
|
// }
|
|
|
|
// mesh1.AddRoutes(ipNet.String())
|
|
// }
|
|
// }
|
|
|
|
return nil
|
|
}
|
|
|
|
func (r *RouteManagerImpl) ApplyWg() error {
|
|
// snapshot, err := mesh.GetMesh()
|
|
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// for _, node := range snapshot.Nodes {
|
|
// if node.HostEndpoint == r.meshManager.HostEndpoint {
|
|
// continue
|
|
// }
|
|
|
|
// for route, _ := range node.Routes {
|
|
// _, netIP, err := net.ParseCIDR(route)
|
|
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// err = r.routeInstaller.InstallRoutes(mesh.IfName, netIP)
|
|
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
return nil
|
|
}
|
|
|
|
func NewRouteManager(m *MeshManager) RouteManager {
|
|
return &RouteManagerImpl{meshManager: m, routeInstaller: route.NewRouteInstaller()}
|
|
}
|