mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-10-18 21:29:50 +00:00
42 lines
943 B
Go
42 lines
943 B
Go
|
package sockaddr
|
||
|
|
||
|
import "os/exec"
|
||
|
|
||
|
var cmds map[string][]string = map[string][]string{
|
||
|
"netstat": {"netstat", "-rn"},
|
||
|
"ipconfig": {"ipconfig"},
|
||
|
}
|
||
|
|
||
|
type routeInfo struct {
|
||
|
cmds map[string][]string
|
||
|
}
|
||
|
|
||
|
// NewRouteInfo returns a BSD-specific implementation of the RouteInfo
|
||
|
// interface.
|
||
|
func NewRouteInfo() (routeInfo, error) {
|
||
|
return routeInfo{
|
||
|
cmds: cmds,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
// GetDefaultInterfaceName returns the interface name attached to the default
|
||
|
// route on the default interface.
|
||
|
func (ri routeInfo) GetDefaultInterfaceName() (string, error) {
|
||
|
ifNameOut, err := exec.Command(cmds["netstat"][0], cmds["netstat"][1:]...).Output()
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
ipconfigOut, err := exec.Command(cmds["ipconfig"][0], cmds["ipconfig"][1:]...).Output()
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
ifName, err := parseDefaultIfNameWindows(string(ifNameOut), string(ipconfigOut))
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
return ifName, nil
|
||
|
}
|