iphlpapi: Flesh out NotifyIpInterfaceChange arguments

André Hentschel nerv at dawncrow.de
Sat Mar 11 08:05:08 CST 2017


Signed-off-by: André Hentschel <nerv at dawncrow.de>
---
 dlls/iphlpapi/iphlpapi_main.c |  4 ++--
 include/netioapi.h            | 41 +++++++++++++++++++++++++++++++++++++++++
 include/nldef.h               | 26 ++++++++++++++++++++++++++
 include/ws2def.h              |  3 ++-
 4 files changed, 71 insertions(+), 3 deletions(-)

diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 51d05ed..953af88 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -2640,8 +2640,8 @@ DWORD WINAPI NotifyAddrChange(PHANDLE Handle, LPOVERLAPPED overlapped)
 /******************************************************************
  *    NotifyIpInterfaceChange (IPHLPAPI.@)
  */
-DWORD WINAPI NotifyIpInterfaceChange(ULONG family, PVOID callback, PVOID context,
-                                     BOOLEAN init_notify, PHANDLE handle)
+DWORD WINAPI NotifyIpInterfaceChange(ADDRESS_FAMILY family, PIPINTERFACE_CHANGE_CALLBACK callback,
+                                     PVOID context, BOOLEAN init_notify, PHANDLE handle)
 {
     FIXME("(family %d, callback %p, context %p, init_notify %d, handle %p): stub\n",
           family, callback, context, init_notify, handle);
diff --git a/include/netioapi.h b/include/netioapi.h
index 7c4917b..b34d019 100644
--- a/include/netioapi.h
+++ b/include/netioapi.h
@@ -90,6 +90,45 @@ typedef struct _MIB_IF_TABLE2
     MIB_IF_ROW2 Table[1];
 } MIB_IF_TABLE2, *PMIB_IF_TABLE2;
 
+typedef struct _MIB_IPINTERFACE_ROW
+{
+    ADDRESS_FAMILY Family;
+    NET_LUID InterfaceLuid;
+    NET_IFINDEX InterfaceIndex;
+    ULONG MaxReassemblySize;
+    ULONG64 InterfaceIdentifier;
+    ULONG MinRouterAdvertisementInterval;
+    ULONG MaxRouterAdvertisementInterval;
+    BOOLEAN AdvertisingEnabled;
+    BOOLEAN ForwardingEnabled;
+    BOOLEAN WeakHostSend;
+    BOOLEAN WeakHostReceive;
+    BOOLEAN UseAutomaticMetric;
+    BOOLEAN UseNeighborUnreachabilityDetection;
+    BOOLEAN ManagedAddressConfigurationSupported;
+    BOOLEAN OtherStatefulConfigurationSupported;
+    BOOLEAN AdvertiseDefaultRoute;
+    NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior;
+    ULONG DadTransmits;
+    ULONG BaseReachableTime;
+    ULONG RetransmitTime;
+    ULONG PathMtuDiscoveryTimeout;
+    NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
+    ULONG LinkLocalAddressTimeout;
+    ULONG ZoneIndices[ScopeLevelCount];
+    ULONG SitePrefixLength;
+    ULONG Metric;
+    ULONG NlMtu;
+    BOOLEAN Connected;
+    BOOLEAN SupportsWakeUpPatterns;
+    BOOLEAN SupportsNeighborDiscovery;
+    BOOLEAN SupportsRouterDiscovery;
+    ULONG ReachableTime;
+    NL_INTERFACE_OFFLOAD_ROD TransmitOffload;
+    NL_INTERFACE_OFFLOAD_ROD ReceiveOffload;
+    BOOLEAN DisableDefaultRoutes;
+} MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW;
+
 typedef struct _MIB_UNICASTIPADDRESS_ROW
 {
     SOCKADDR_INET       Address;
@@ -106,6 +145,8 @@ typedef struct _MIB_UNICASTIPADDRESS_ROW
     LARGE_INTEGER       CreationTimeStamp;
 } MIB_UNICASTIPADDRESS_ROW, *PMIB_UNICASTIPADDRESS_ROW;
 
+typedef VOID (WINAPI *PIPINTERFACE_CHANGE_CALLBACK)(PVOID, PMIB_IPINTERFACE_ROW,
+                                                    MIB_NOTIFICATION_TYPE);
 typedef VOID (WINAPI *PUNICAST_IPADDRESS_CHANGE_CALLBACK)(PVOID, PMIB_UNICASTIPADDRESS_ROW,
                                                           MIB_NOTIFICATION_TYPE);
 
diff --git a/include/nldef.h b/include/nldef.h
index 550d323..1f96773 100644
--- a/include/nldef.h
+++ b/include/nldef.h
@@ -48,6 +48,21 @@ typedef enum
     IpDadStatePreferred,
 } NL_DAD_STATE;
 
+typedef enum _NL_LINK_LOCAL_ADDRESS_BEHAVIOR
+{
+    LinkLocalAlwaysOff = 0,
+    LinkLocalDelayed,
+    LinkLocalAlwaysOn,
+    LinkLocalUnchanged = -1,
+} NL_LINK_LOCAL_ADDRESS_BEHAVIOR;
+
+typedef enum _NL_ROUTER_DISCOVERY_BEHAVIOR
+{
+    RouterDiscoveryDisabled = 0,
+    RouterDiscoveryEnabled,
+    RouterDiscoveryDhcp,
+    RouterDiscoveryUnchanged = -1,
+} NL_ROUTER_DISCOVERY_BEHAVIOR;
 
 typedef enum
 {
@@ -75,5 +90,16 @@ typedef enum
     MAKE_ROUTE_PROTOCOL(NT_STATIC_NON_DOD, 10007),
 } NL_ROUTE_PROTOCOL, *PNL_ROUTE_PROTOCOL;
 
+typedef struct _NL_INTERFACE_OFFLOAD_ROD
+{
+    BOOLEAN NlChecksumSupported : 1;
+    BOOLEAN NlOptionsSupported : 1;
+    BOOLEAN TlDatagramChecksumSupported : 1;
+    BOOLEAN TlStreamChecksumSupported : 1;
+    BOOLEAN TlStreamOptionsSupported : 1;
+    BOOLEAN FastPathCompatible : 1;
+    BOOLEAN TlLargeSendOffloadSupported : 1;
+    BOOLEAN TlGiantSendOffloadSupported : 1;
+} NL_INTERFACE_OFFLOAD_ROD, *PNL_INTERFACE_OFFLOAD_ROD;
 
 #endif /* __WINE_NLDEF_H */
diff --git a/include/ws2def.h b/include/ws2def.h
index fa21c06..b92bf68 100644
--- a/include/ws2def.h
+++ b/include/ws2def.h
@@ -77,7 +77,8 @@ typedef enum {
     ScopeLevelAdmin        = 4,
     ScopeLevelSite         = 5,
     ScopeLevelOrganization = 8,
-    ScopeLevelGlobal       = 14
+    ScopeLevelGlobal       = 14,
+    ScopeLevelCount        = 16,
 } SCOPE_LEVEL;
 
 typedef struct
-- 
2.7.4




More information about the wine-patches mailing list