NotifyIpInterfaceChange function (netioapi.h) does not notify on manual DNS changes

Brad House 0 Reputation points
2024-06-05T16:21:55.43+00:00

I work on the c-ares open source asynchronous DNS library (https://c-ares.org) and we have recently added automatic configuration reloading when we detect a network configuration change has occurred.

We get notifications properly when network interfaces go up or down, or IP addresses change (e.g. DHCP), but we aren't getting notifications for a user manually changing a DNS server via Control Panel -> Network and Internet -> Network Connections, then right click on an interface and go to properties then modify the DNS server in "Internet Protocol Version 4 (TCP/IPv4)" or "Internet Protocol Version 6 (TCP/IPv6)".

We used NotifyIpInterfaceChange() for this (https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-notifyipinterfacechange), which the documentation seems to indicate since we made a change to the interface we should be notified, however no notification is sent. We would expect to get a MibParameterNotification.

We also tried using NotifyUnicastIpAddressChange() but that didn't notify on that condition either.

This was tested on an up-to-date Windows 11 development machine. I would consider this a bug in NotifyIpInterfaceChange() since it doesn't match the description in the documentation.

Windows development | Windows API - Win32
Windows for business | Windows Client for IT Pros | User experience | Other
Developer technologies | C++
{count} votes

1 answer

Sort by: Most helpful
  1. Xiaopo Yang - MSFT 12,731 Reputation points Microsoft External Staff
    2024-06-11T06:03:37.63+00:00

    Hello @Brad House,

    Where do we go from here?

    If the issue has a big impact on you, you can open a Windows SDK incident at https://developer.microsoft.com/en-us/windows/support/?tabs=Contact-us so that our engineer can work with you closely and please choose the 'Networking Development - Internet Protocol Helper (IP Helper) API' for this issue. In-addition, if the support engineer determines that the issue is the result of a bug the service request will be a no-charge case and you won't be charged.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.