mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-09 06:35:23 +08:00
adding windows logic
This commit is contained in:
parent
c41042ff06
commit
6b41de6563
2 changed files with 17 additions and 3 deletions
|
@ -44,6 +44,7 @@ func setRoute(iface string, addr *net.IPNet, address string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetExplicitRoute - sets route via explicit ip address
|
||||||
func SetExplicitRoute(iface string, destination *net.IPNet, gateway string) error {
|
func SetExplicitRoute(iface string, destination *net.IPNet, gateway string) error {
|
||||||
_, err := ncutils.RunCmd(fmt.Sprintf("ip route add %s via %s dev %s", destination.String(), gateway, iface), false)
|
_, err := ncutils.RunCmd(fmt.Sprintf("ip route add %s via %s dev %s", destination.String(), gateway, iface), false)
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -16,12 +16,16 @@ func GetDefaultRoute() (string, string, error) {
|
||||||
var iface string
|
var iface string
|
||||||
var err error
|
var err error
|
||||||
var outLine string
|
var outLine string
|
||||||
output, err := ncutils.RunCmd("netsh interface ipv4 show route", false)
|
output, err := ncutils.RunCmd("netstat -rn", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ipaddr, iface, err
|
return ipaddr, iface, err
|
||||||
}
|
}
|
||||||
|
var startLook bool
|
||||||
for _, line := range strings.Split(strings.TrimSuffix(output, "\n"), "\n") {
|
for _, line := range strings.Split(strings.TrimSuffix(output, "\n"), "\n") {
|
||||||
if strings.Contains(line, "0.0.0.0/0") {
|
if strings.Contains(line, "Active Routes:") {
|
||||||
|
startLook = true
|
||||||
|
}
|
||||||
|
if startLook && strings.Contains(line, "0.0.0.0") {
|
||||||
outLine = line
|
outLine = line
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -31,7 +35,7 @@ func GetDefaultRoute() (string, string, error) {
|
||||||
}
|
}
|
||||||
space := regexp.MustCompile(`\s+`)
|
space := regexp.MustCompile(`\s+`)
|
||||||
outputSlice := strings.Split(strings.TrimSpace(space.ReplaceAllString(outLine, " ")), " ")
|
outputSlice := strings.Split(strings.TrimSpace(space.ReplaceAllString(outLine, " ")), " ")
|
||||||
ipaddr = outputSlice[len(outputSlice)-1]
|
ipaddr = outputSlice[len(outputSlice)-2]
|
||||||
if err = ncutils.CheckIPAddress(ipaddr); err != nil {
|
if err = ncutils.CheckIPAddress(ipaddr); err != nil {
|
||||||
return ipaddr, iface, fmt.Errorf("invalid output for ip address check: " + err.Error())
|
return ipaddr, iface, fmt.Errorf("invalid output for ip address check: " + err.Error())
|
||||||
}
|
}
|
||||||
|
@ -47,6 +51,15 @@ func setRoute(iface string, addr *net.IPNet, address string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetExplicitRoute - sets route via explicit ip address
|
||||||
|
func SetExplicitRoute(iface string, destination *net.IPNet, gateway string) error {
|
||||||
|
var err error
|
||||||
|
_, err = ncutils.RunCmd("route ADD "+destination.String()+" "+gateway, false)
|
||||||
|
time.Sleep(time.Second >> 2)
|
||||||
|
ncutils.RunCmd("route CHANGE "+destination.IP.String()+" MASK "+destination.Mask.String()+" "+gateway, false)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func deleteRoute(iface string, addr *net.IPNet, address string) error {
|
func deleteRoute(iface string, addr *net.IPNet, address string) error {
|
||||||
var err error
|
var err error
|
||||||
_, err = ncutils.RunCmd("route DELETE "+addr.IP.String()+" MASK "+addr.Mask.String()+" "+address, false)
|
_, err = ncutils.RunCmd("route DELETE "+addr.IP.String()+" MASK "+addr.Mask.String()+" "+address, false)
|
||||||
|
|
Loading…
Add table
Reference in a new issue