You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.4 KiB
65 lines
1.4 KiB
//go:build windows
|
|
|
|
package internal
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os/exec"
|
|
)
|
|
|
|
func SetIPv4Address(ifaceName, ipAddr, mask string) error {
|
|
cmd := exec.Command("netsh", "interface", "ipv4", "set", "address",
|
|
fmt.Sprintf("name=\"%s\"", ifaceName),
|
|
"static", ipAddr, mask)
|
|
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return fmt.Errorf("%s", output)
|
|
}
|
|
|
|
log.Println("IPv4 address set successfully:", ipAddr)
|
|
return nil
|
|
}
|
|
|
|
func SetIPv6Address(ifaceName, ipAddr, mask string) error {
|
|
cmd := exec.Command("netsh", "interface", "ipv6", "set", "address",
|
|
fmt.Sprintf("interface=\"%s\"", ifaceName),
|
|
ipAddr+"/"+mask)
|
|
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return fmt.Errorf("%s", output)
|
|
}
|
|
|
|
log.Println("IPv6 address set successfully:", ipAddr)
|
|
return nil
|
|
}
|
|
|
|
func SetIPv4MTU(ifaceName string, mtu int) error {
|
|
cmd := exec.Command("netsh", "interface", "ipv4", "set", "subinterface",
|
|
fmt.Sprintf("\"%s\"", ifaceName),
|
|
fmt.Sprintf("mtu=%d", mtu))
|
|
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return fmt.Errorf("%s", output)
|
|
}
|
|
|
|
log.Println("IPv4 MTU set successfully:", mtu)
|
|
return nil
|
|
}
|
|
|
|
func SetIPv6MTU(ifaceName string, mtu int) error {
|
|
cmd := exec.Command("netsh", "interface", "ipv6", "set", "subinterface",
|
|
fmt.Sprintf("\"%s\"", ifaceName),
|
|
fmt.Sprintf("mtu=%d", mtu))
|
|
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return fmt.Errorf("%s", output)
|
|
}
|
|
|
|
log.Println("IPv6 MTU set successfully:", mtu)
|
|
return nil
|
|
}
|
|
|