routes_darwin.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package local
  2. import (
  3. "net"
  4. "strings"
  5. "github.com/c-robinson/iplib"
  6. "github.com/gravitl/netmaker/logger"
  7. "github.com/gravitl/netmaker/netclient/ncutils"
  8. )
  9. // route -n add -net 10.0.0.0/8 192.168.0.254
  10. // networksetup -setadditionalroutes Ethernet 192.168.1.0 255.255.255.0 10.0.0.2 persistent
  11. func setRoute(iface string, addr *net.IPNet, address string) error {
  12. var err error
  13. var out string
  14. var inetx = "inet"
  15. if strings.Contains(addr.IP.String(), ":") {
  16. inetx = "inet6"
  17. }
  18. out, err = ncutils.RunCmd("route -n get -"+inetx+" "+addr.IP.String(), false)
  19. if err != nil {
  20. return err
  21. }
  22. if !(strings.Contains(out, iface)) {
  23. _, err = ncutils.RunCmd("route -q -n add -"+inetx+" "+addr.String()+" -interface "+iface, false)
  24. }
  25. return err
  26. }
  27. func deleteRoute(iface string, addr *net.IPNet, address string) error {
  28. var err error
  29. _, err = ncutils.RunCmd("route -q -n delete "+addr.String(), false)
  30. return err
  31. }
  32. func setCidr(iface, address string, addr *net.IPNet) {
  33. if iplib.Version(addr.IP) == 4 {
  34. ncutils.RunCmd("route -q -n add -net "+addr.String()+" "+address, false)
  35. } else if iplib.Version(addr.IP) == 6 {
  36. ncutils.RunCmd("route -A inet6 -q -n add -net "+addr.String()+" "+address, false)
  37. } else {
  38. logger.Log(1, "could not parse address: "+addr.String())
  39. }
  40. }
  41. func removeCidr(iface string, addr *net.IPNet, address string) {
  42. ncutils.RunCmd("route -q -n delete "+addr.String()+" -interface "+iface, false)
  43. }