wintun: revise GetInterface()
- Make foreign interface found error numeric to ease condition detection. - Update GetInterface() documentation. - Make tun.CreateTUN() quit when foreign interface found before attempting to create a Wintun interface with a duplicate name. Creation is futile. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
8fdcf5ee30
commit
6a0a3a5406
|
@ -71,6 +71,8 @@ func CreateTUN(ifname string) (TUNDevice, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unable to delete already existing Wintun interface: %v", err)
|
return nil, fmt.Errorf("Unable to delete already existing Wintun interface: %v", err)
|
||||||
}
|
}
|
||||||
|
} else if err == windows.ERROR_ALREADY_EXISTS {
|
||||||
|
return nil, fmt.Errorf("Foreign network interface with the same name exists")
|
||||||
}
|
}
|
||||||
wt, _, err = wintun.CreateInterface("WireGuard Tunnel Adapter", 0)
|
wt, _, err = wintun.CreateInterface("WireGuard Tunnel Adapter", 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -89,8 +89,9 @@ func makeWintun(deviceInfoSet setupapi.DevInfo, deviceInfoData *setupapi.DevInfo
|
||||||
// optional and can be 0. If a specific top-level window is not required, set
|
// optional and can be 0. If a specific top-level window is not required, set
|
||||||
// hwndParent to 0.
|
// hwndParent to 0.
|
||||||
//
|
//
|
||||||
// Function returns interface if found, or nil otherwise. If the interface is
|
// Function returns interface if found, or windows.ERROR_OBJECT_NOT_FOUND
|
||||||
// found but not Wintun-class, the function returns interface and an error.
|
// otherwise. If the interface is found but not Wintun-class, the function
|
||||||
|
// returns windows.ERROR_ALREADY_EXISTS.
|
||||||
//
|
//
|
||||||
func GetInterface(ifname string, hwndParent uintptr) (*Wintun, error) {
|
func GetInterface(ifname string, hwndParent uintptr) (*Wintun, error) {
|
||||||
// Create a list of network devices.
|
// Create a list of network devices.
|
||||||
|
@ -164,7 +165,7 @@ func GetInterface(ifname string, hwndParent uintptr) (*Wintun, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This interface is not using Wintun driver.
|
// This interface is not using Wintun driver.
|
||||||
return nil, errors.New("Foreign network interface with the same name exists")
|
return nil, windows.ERROR_ALREADY_EXISTS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue