无法将LinkLocalAddressBehavior设置为LinkLocalAlwaysOff

问题描述 投票:0回答:1

我试图通过使用LinkLocalAddressBehavior函数将LinkLocalAlwaysOff设置为SetIpInterfaceEntry的接口,但我总是得到ERROR_INVALID_PARAMETER。当我将LinkLocalAddressBehavior设置为LinkLocalDelayed时,SetIpInterfaceEntry执行没有问题。

我没有在MSDN(SetIpInterfaceEntryMIB_IPINTERFACE_ROWNL_LINK_LOCAL_ADDRESS_BEHAVIOR)找到任何可能有助于解决此问题的方法。

有什么建议?

谢谢!

更新:代码示例:

// Initialize MIB_IPINTERFACE_ROW with actual InterfaceLuid:
auto row = MIB_IPINTERFACE_ROW{ AF_INET, 1689399632855040 };

// GetIpInterfaceEntry succeeds
auto result = GetIpInterfaceEntry(&row);

// Setting the value:
row.LinkLocalAddressBehavior = LinkLocalAlwaysOff;

// SetIpInterfaceEntry fails with ERROR_INVALID_PARAMETER:
result = SetIpInterfaceEntry(&row);
c++ winapi
1个回答
0
投票

this article说:

在接口上分配IPv4链路本地地址仅基于接口的状态,并且独立于任何其他协议,例如DHCP。主机不得改变其行为和使用其他协议(如DHCP),因为主机已为接口分配了IPv4链路本地地址。

因此,当启用它时,我们无法更改其行为。 LinkLocalDelayed成功,因为原始状态是LinkLocalDelayed

对于IPv6,我在msdn上找到了答案。好像他们有一些类似的行为。如果已启用,则无法禁用。

© www.soinside.com 2019 - 2024. All rights reserved.