From 6a0a3a54067182aee4c2cb4c7ef7ac5aaf2fd961 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Fri, 24 May 2019 09:28:50 +0200 Subject: 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 --- tun/wintun/wintun_windows.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'tun/wintun/wintun_windows.go') diff --git a/tun/wintun/wintun_windows.go b/tun/wintun/wintun_windows.go index aea4ad1..7b99a50 100644 --- a/tun/wintun/wintun_windows.go +++ b/tun/wintun/wintun_windows.go @@ -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 // hwndParent to 0. // -// Function returns interface if found, or nil otherwise. If the interface is -// found but not Wintun-class, the function returns interface and an error. +// Function returns interface if found, or windows.ERROR_OBJECT_NOT_FOUND +// 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) { // 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. - return nil, errors.New("Foreign network interface with the same name exists") + return nil, windows.ERROR_ALREADY_EXISTS } } -- cgit v1.2.3-59-g8ed1b