routes_linux.go 1.3 KB

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