mirror of
https://github.com/luscis/openlan.git
synced 2025-12-24 11:10:54 +08:00
97 lines
2.3 KiB
Go
Executable File
97 lines
2.3 KiB
Go
Executable File
package network
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func LinkAdd(name string, opts ...string) ([]byte, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func LinkSet(name string, opts ...string) ([]byte, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func LinkDel(name string, opts ...string) ([]byte, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func LinkUp(name string) ([]byte, error) {
|
|
args := []string{
|
|
"interface", "set", "interface",
|
|
"name=" + name, "admin=ENABLED",
|
|
}
|
|
return exec.Command("netsh", args...).CombinedOutput()
|
|
}
|
|
|
|
func LinkDown(name string) ([]byte, error) {
|
|
args := []string{
|
|
"interface", "set", "interface",
|
|
"name=" + name, "admin=DISABLED",
|
|
}
|
|
return exec.Command("netsh", args...).CombinedOutput()
|
|
}
|
|
|
|
func AddrAdd(name, addr string, opts ...string) ([]byte, error) {
|
|
args := append([]string{
|
|
"interface", "ipv4", "add", "address",
|
|
"name=" + name, "address=" + addr, "store=active",
|
|
}, opts...)
|
|
return exec.Command("netsh", args...).CombinedOutput()
|
|
}
|
|
|
|
func AddrDel(name, addr string) ([]byte, error) {
|
|
ipAddr := strings.SplitN(addr, "/", 1)[0]
|
|
args := []string{
|
|
"interface", "ipv4", "delete", "address",
|
|
"name=" + name, "address=" + ipAddr, "store=active",
|
|
}
|
|
return exec.Command("netsh", args...).CombinedOutput()
|
|
}
|
|
|
|
func AddrShow(name string) []string {
|
|
addrs := make([]string, 0, 4)
|
|
args := []string{
|
|
"interface", "ipv4", "show", "ipaddress",
|
|
"interface=" + name, "level=verbose",
|
|
}
|
|
out, err := exec.Command("netsh", args...).Output()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
outArr := strings.Split(string(out), "\n")
|
|
for _, addrStr := range outArr {
|
|
addrArr := strings.SplitN(addrStr, " ", 3)
|
|
if len(addrArr) != 3 {
|
|
continue
|
|
}
|
|
if addrArr[0] == "Remote" && strings.Contains(addrArr[2], "Parameters") {
|
|
addrs = append(addrs, addrArr[1])
|
|
}
|
|
}
|
|
return addrs
|
|
}
|
|
|
|
func RouteAdd(name, prefix, nexthop string, opts ...string) ([]byte, error) {
|
|
args := []string{
|
|
"interface", "ipv4", "add", "route",
|
|
"prefix=" + prefix, "interface=" + name, "nexthop=" + nexthop,
|
|
"store=active",
|
|
}
|
|
return exec.Command("netsh", args...).CombinedOutput()
|
|
}
|
|
|
|
func RouteDel(name, prefix, nexthop string, opts ...string) ([]byte, error) {
|
|
args := []string{
|
|
"interface", "ipv4", "delete", "route",
|
|
"prefix=" + prefix, "interface=" + name, "nexthop=" + nexthop,
|
|
"store=active",
|
|
}
|
|
return exec.Command("netsh", args...).CombinedOutput()
|
|
}
|
|
|
|
func RouteShow(name string) []string {
|
|
return nil
|
|
}
|