@@ -26,33 +26,37 @@ func (h *Headscale) GetNodeRoutes(namespace string, nodeName string) (*[]netaddr
2626
2727// EnableNodeRoute enables a subnet route advertised by a node (identified by
2828// namespace and node name)
29- func (h * Headscale ) EnableNodeRoute (namespace string , nodeName string , routeStr string ) error {
29+ func (h * Headscale ) EnableNodeRoute (namespace string , nodeName string , routeStr string ) ( * netaddr. IPPrefix , error ) {
3030 m , err := h .GetMachine (namespace , nodeName )
3131 if err != nil {
32- return err
32+ return nil , err
3333 }
3434 hi , err := m .GetHostInfo ()
3535 if err != nil {
36- return err
36+ return nil , err
3737 }
3838 route , err := netaddr .ParseIPPrefix (routeStr )
3939 if err != nil {
40- return err
40+ return nil , err
4141 }
4242
4343 for _ , rIP := range hi .RoutableIPs {
4444 if rIP == route {
4545 db , err := h .db ()
4646 if err != nil {
4747 log .Printf ("Cannot open DB: %s" , err )
48- return err
48+ return nil , err
4949 }
5050
5151 routes , _ := json .Marshal ([]string {routeStr }) // TODO: only one for the time being, so overwriting the rest
5252 m .EnabledRoutes = postgres.Jsonb {RawMessage : json .RawMessage (routes )}
5353 db .Save (& m )
5454 db .Close ()
5555
56+ // THIS IS COMPLETELY USELESS.
57+ // The peers map is stored in memory in the server process.
58+ // Definetely not accessible from the CLI tool.
59+ // We need RPC to the server - or some kind of 'needsUpdate' field in the DB
5660 peers , _ := h .getPeers (* m )
5761 h .pollMu .Lock ()
5862 for _ , p := range * peers {
@@ -61,9 +65,9 @@ func (h *Headscale) EnableNodeRoute(namespace string, nodeName string, routeStr
6165 }
6266 }
6367 h .pollMu .Unlock ()
64- return nil
68+ return & rIP , nil
6569 }
6670 }
6771
68- return errors .New ("could not find routable range" )
72+ return nil , errors .New ("could not find routable range" )
6973}
0 commit comments