aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tunnel/winipcfg
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2019-05-27 09:57:02 +0200
committerSimon Rozman <simon@rozman.si>2019-05-27 09:57:02 +0200
commit65317dcd758e916b751dcae5928e3a53f6d9f701 (patch)
treedd347f7322ec60a98668283053d49b456ec8aafe /tunnel/winipcfg
parentbuild: set 6.1 PE flags (diff)
downloadwireguard-windows-65317dcd758e916b751dcae5928e3a53f6d9f701.tar.xz
wireguard-windows-65317dcd758e916b751dcae5928e3a53f6d9f701.zip
winipcfg: make LUID.DeleteIPAddress accept IPNet
Thou DeleteUnicastIpAddressEntry() cares about the IP only. Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'tunnel/winipcfg')
-rw-r--r--tunnel/winipcfg/luid.go10
-rw-r--r--tunnel/winipcfg/winipcfg_test.go2
2 files changed, 9 insertions, 3 deletions
diff --git a/tunnel/winipcfg/luid.go b/tunnel/winipcfg/luid.go
index b4bf5146..f3cc1f43 100644
--- a/tunnel/winipcfg/luid.go
+++ b/tunnel/winipcfg/luid.go
@@ -118,11 +118,17 @@ func (luid LUID) SetIPAddresses(addresses []net.IPNet) error {
// DeleteIPAddress method deletes interface's unicast IP address. Corresponds to DeleteUnicastIpAddressEntry function
// (https://docs.microsoft.com/en-us/windows/desktop/api/netioapi/nf-netioapi-deleteunicastipaddressentry).
-func (luid LUID) DeleteIPAddress(ip net.IP) error {
- row, err := luid.IPAddress(ip)
+func (luid LUID) DeleteIPAddress(address net.IPNet) error {
+ row := &MibUnicastIPAddressRow{}
+ initializeUnicastIPAddressEntry(row)
+ row.InterfaceLUID = luid
+ err := row.Address.SetIP(address.IP, 0)
if err != nil {
return err
}
+ // Note: OnLinkPrefixLength member is ignored by DeleteUnicastIpAddressEntry().
+ ones, _ := address.Mask.Size()
+ row.OnLinkPrefixLength = uint8(ones)
return row.Delete()
}
diff --git a/tunnel/winipcfg/winipcfg_test.go b/tunnel/winipcfg/winipcfg_test.go
index c69c1847..829d2675 100644
--- a/tunnel/winipcfg/winipcfg_test.go
+++ b/tunnel/winipcfg/winipcfg_test.go
@@ -439,7 +439,7 @@ func TestAddDeleteIPAddress(t *testing.T) {
t.Errorf("Notification handler has not been called on add.")
}
- err = ifc.LUID.DeleteIPAddress(unexistentIPAddresToAdd.IP)
+ err = ifc.LUID.DeleteIPAddress(unexistentIPAddresToAdd)
if err != nil {
t.Errorf("LUID.DeleteIPAddress() returned an error: %v", err)
}