routes_linux.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package local
  2. import (
  3. //"github.com/davecgh/go-spew/spew"
  4. "fmt"
  5. "net"
  6. "strings"
  7. "github.com/gravitl/netmaker/netclient/ncutils"
  8. )
  9. func setRoute(iface string, addr *net.IPNet, address string) error {
  10. out, err := ncutils.RunCmd(fmt.Sprintf("ip route get %s", addr.IP.String()), false)
  11. if err != nil || !strings.Contains(out, iface) {
  12. _, err = ncutils.RunCmd(fmt.Sprintf("ip route add %s dev %s", addr.String(), iface), false)
  13. }
  14. return err
  15. }
  16. func deleteRoute(iface string, addr *net.IPNet, address string) error {
  17. var err error
  18. out, _ := ncutils.RunCmd(fmt.Sprintf("ip route get %s", addr.IP.String()), false)
  19. if strings.Contains(out, iface) {
  20. _, err = ncutils.RunCmd(fmt.Sprintf("ip route del %s dev %s", addr.String(), iface), false)
  21. }
  22. return err
  23. }
  24. func setCidr(iface, address string, addr *net.IPNet) {
  25. ncutils.RunCmd("ip -4 route add "+addr.String()+" dev "+iface, false)
  26. }
  27. func removeCidr(iface string, addr *net.IPNet, address string) {
  28. ncutils.RunCmd("ip route delete "+addr.String()+" dev "+iface, false)
  29. }