routes_darwin.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package local
  2. import (
  3. "net"
  4. "strings"
  5. "github.com/gravitl/netmaker/logger"
  6. "github.com/gravitl/netmaker/netclient/ncutils"
  7. "github.com/seancfoley/ipaddress-go/ipaddr"
  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. cidr := ipaddr.NewIPAddressString(addr.String()).GetAddress()
  34. if cidr.IsIPv4() {
  35. ncutils.RunCmd("route -q -n add -net "+addr.String()+" "+address, false)
  36. } else if cidr.IsIPv6() {
  37. ncutils.RunCmd("route -A inet6 -q -n add -net "+addr.String()+" "+address, false)
  38. } else {
  39. logger.Log(1, "could not parse address: "+addr.String())
  40. }
  41. }
  42. func removeCidr(iface string, addr *net.IPNet, address string) {
  43. ncutils.RunCmd("route -q -n delete "+addr.String()+" -interface "+iface, false)
  44. }