Files
x/router/router_linux.go
T
ginuerzh 4443b0b964 fix(router): close httpLoader on shutdown, log parse errors, default nil logger
- Add missing httpLoader.Close() in localRouter.Close() to prevent
  resource leak
- Log parse errors from file/redis/http loaders instead of silently
  discarding them
- Add nil reader guards before calling parseRoutes in load()
- Default nil logger to xlogger.Nop() to prevent nil panics
- Use context.Background() instead of context.TODO() for root context
- Use strings.ReplaceAll instead of deprecated strings.Replace with -1
- Add doc comments to all exported symbols
- Add 27 unit tests + 1 benchmark
2026-05-25 23:03:19 +08:00

34 lines
681 B
Go

package router
import (
"fmt"
"net"
"github.com/go-gost/core/router"
"github.com/vishvananda/netlink"
)
// setSysRoutes applies the given routes as system-level network routes using netlink.
func (p *localRouter) setSysRoutes(routes ...*router.Route) error {
for _, route := range routes {
if route.Net == nil {
continue
}
gw := net.ParseIP(route.Gateway)
if gw == nil {
continue
}
p.options.logger.Debugf("ip route replace %s via %s", route.Net, route.Gateway)
r := netlink.Route{
Dst: route.Net,
Gw: gw,
}
if err := netlink.RouteReplace(&r); err != nil {
return fmt.Errorf("set route %v %v: %v", r.Dst, r.Gw, err)
}
}
return nil
}