wintun: try multiple names until one isn't a duplicate
This commit is contained in:
parent
68fea631d8
commit
3cedc22d7b
@ -373,7 +373,7 @@ func CreateInterface(description string, requestedGUID *windows.GUID) (wintun *W
|
|||||||
// Wait for TCP/IP interface registry key to emerge.
|
// Wait for TCP/IP interface registry key to emerge.
|
||||||
tcpipInterfaceRegKey, err := registryEx.OpenKeyWait(
|
tcpipInterfaceRegKey, err := registryEx.OpenKeyWait(
|
||||||
registry.LOCAL_MACHINE,
|
registry.LOCAL_MACHINE,
|
||||||
tcpipInterfaceRegKeyName, registry.QUERY_VALUE | registry.SET_VALUE,
|
tcpipInterfaceRegKeyName, registry.QUERY_VALUE|registry.SET_VALUE,
|
||||||
waitForRegistryTimeout)
|
waitForRegistryTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("OpenKeyWait(HKLM\\%s) failed: %v", tcpipInterfaceRegKeyName, err)
|
err = fmt.Errorf("OpenKeyWait(HKLM\\%s) failed: %v", tcpipInterfaceRegKeyName, err)
|
||||||
@ -522,9 +522,17 @@ func (wintun *Wintun) InterfaceName() (string, error) {
|
|||||||
|
|
||||||
// SetInterfaceName sets name of the Wintun interface.
|
// SetInterfaceName sets name of the Wintun interface.
|
||||||
func (wintun *Wintun) SetInterfaceName(ifname string) error {
|
func (wintun *Wintun) SetInterfaceName(ifname string) error {
|
||||||
err := nci.SetConnectionName(&wintun.cfgInstanceID, ifname)
|
const maxSuffix = 1000
|
||||||
if err != nil {
|
availableIfname := ifname
|
||||||
return fmt.Errorf("NciSetConnectionName failed: %v", err)
|
for i := 0; ; i++ {
|
||||||
|
err := nci.SetConnectionName(&wintun.cfgInstanceID, availableIfname)
|
||||||
|
if err == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if i > maxSuffix || err != windows.ERROR_DUP_NAME {
|
||||||
|
return fmt.Errorf("NciSetConnectionName failed: %v", err)
|
||||||
|
}
|
||||||
|
availableIfname = fmt.Sprintf("%s %d", ifname, i+1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This should use NetSetup2 so that it doesn't get unset.
|
// TODO: This should use NetSetup2 so that it doesn't get unset.
|
||||||
|
Loading…
Reference in New Issue
Block a user