diff --git a/contrib/platform/src/com/sun/jna/platform/win32/IPHlpAPI.java b/contrib/platform/src/com/sun/jna/platform/win32/IPHlpAPI.java
index 4e4e4e7cff..1009533dee 100644
--- a/contrib/platform/src/com/sun/jna/platform/win32/IPHlpAPI.java
+++ b/contrib/platform/src/com/sun/jna/platform/win32/IPHlpAPI.java
@@ -1,278 +1,278 @@
-/* Copyright (c) 2018 Daniel Widdis, All Rights Reserved
- *
- * The contents of this file is dual-licensed under 2
- * alternative Open Source/Free licenses: LGPL 2.1 or later and
- * Apache License 2.0. (starting with JNA version 4.0.0).
- *
- * You can freely decide which license you want to apply to
- * the project.
- *
- * You may obtain a copy of the LGPL License at:
- *
- * http://www.gnu.org/licenses/licenses.html
- *
- * A copy is also included in the downloadable source code package
- * containing JNA, in file "LGPL2.1".
- *
- * You may obtain a copy of the Apache License at:
- *
- * http://www.apache.org/licenses/
- *
- * A copy is also included in the downloadable source code package
- * containing JNA, in file "AL2.0".
- */
-package com.sun.jna.platform.win32;
-
-import com.sun.jna.Library;
-import com.sun.jna.Native;
-import com.sun.jna.Pointer;
-import com.sun.jna.Structure;
-import com.sun.jna.Structure.FieldOrder;
-import com.sun.jna.platform.win32.Guid.GUID;
-import com.sun.jna.ptr.IntByReference;
-import com.sun.jna.win32.W32APIOptions;
-
-/**
- * Windows IP Helper API
- *
- * @see IP
- * Helper Reference
- */
-public interface IPHlpAPI extends Library {
- IPHlpAPI INSTANCE = Native.load("IPHlpAPI", IPHlpAPI.class, W32APIOptions.DEFAULT_OPTIONS);
-
- int IF_MAX_STRING_SIZE = 256;
- int IF_MAX_PHYS_ADDRESS_LENGTH = 32;
- int MAX_INTERFACE_NAME_LEN = 256;
- int MAXLEN_IFDESCR = 256;
- int MAXLEN_PHYSADDR = 8;
- int MAX_HOSTNAME_LEN = 128;
- int MAX_DOMAIN_NAME_LEN = 128;
- int MAX_SCOPE_ID_LEN = 256;
-
- /**
- * The MIB_IFROW structure stores information about a particular interface.
- *
- * @see MIB_IFROW
- */
- @FieldOrder({ "wszName", "dwIndex", "dwType", "dwMtu", "dwSpeed", "dwPhysAddrLen", "bPhysAddr", "dwAdminStatus",
- "dwOperStatus", "dwLastChange", "dwInOctets", "dwInUcastPkts", "dwInNUcastPkts", "dwInDiscards",
- "dwInErrors", "dwInUnknownProtos", "dwOutOctets", "dwOutUcastPkts", "dwOutNUcastPkts", "dwOutDiscards",
- "dwOutErrors", "dwOutQLen", "dwDescrLen", "bDescr" })
- class MIB_IFROW extends Structure {
- public char[] wszName = new char[MAX_INTERFACE_NAME_LEN];
- public int dwIndex;
- public int dwType;
- public int dwMtu;
- public int dwSpeed;
- public int dwPhysAddrLen;
- public byte[] bPhysAddr = new byte[MAXLEN_PHYSADDR];
- public int dwAdminStatus;
- public int dwOperStatus;
- public int dwLastChange;
- public int dwInOctets;
- public int dwInUcastPkts;
- public int dwInNUcastPkts;
- public int dwInDiscards;
- public int dwInErrors;
- public int dwInUnknownProtos;
- public int dwOutOctets;
- public int dwOutUcastPkts;
- public int dwOutNUcastPkts;
- public int dwOutDiscards;
- public int dwOutErrors;
- public int dwOutQLen;
- public int dwDescrLen;
- public byte[] bDescr = new byte[MAXLEN_IFDESCR];
- }
-
- /**
- * The MIB_IF_ROW2 structure stores information about a particular
- * interface.
- *
- * @see MIB_IF_ROW2
- */
- @FieldOrder({ "InterfaceLuid", "InterfaceIndex", "InterfaceGuid", "Alias", "Description", "PhysicalAddressLength",
- "PhysicalAddress", "PermanentPhysicalAddress", "Mtu", "Type", "TunnelType", "MediaType",
- "PhysicalMediumType", "AccessType", "DirectionType", "InterfaceAndOperStatusFlags", "OperStatus",
- "AdminStatus", "MediaConnectState", "NetworkGuid", "ConnectionType", "TransmitLinkSpeed",
- "ReceiveLinkSpeed", "InOctets", "InUcastPkts", "InNUcastPkts", "InDiscards", "InErrors", "InUnknownProtos",
- "InUcastOctets", "InMulticastOctets", "InBroadcastOctets", "OutOctets", "OutUcastPkts", "OutNUcastPkts",
- "OutDiscards", "OutErrors", "OutUcastOctets", "OutMulticastOctets", "OutBroadcastOctets", "OutQLen" })
- class MIB_IF_ROW2 extends Structure {
- public long InterfaceLuid; // 64-bit union NET_LUID
- public int InterfaceIndex;
- public GUID InterfaceGuid;
- public char[] Alias = new char[IF_MAX_STRING_SIZE + 1];
- public char[] Description = new char[IF_MAX_STRING_SIZE + 1];
- public int PhysicalAddressLength;
- public byte[] PhysicalAddress = new byte[IF_MAX_PHYS_ADDRESS_LENGTH];
- public byte[] PermanentPhysicalAddress = new byte[IF_MAX_PHYS_ADDRESS_LENGTH];
- public int Mtu;
- public int Type;
- // enums
- public int TunnelType;
- public int MediaType;
- public int PhysicalMediumType;
- public int AccessType;
- public int DirectionType;
- // 8-bit structure
- public byte InterfaceAndOperStatusFlags;
- // enums
- public int OperStatus;
- public int AdminStatus;
- public int MediaConnectState;
- public GUID NetworkGuid;
- public int ConnectionType;
- public long TransmitLinkSpeed;
- public long ReceiveLinkSpeed;
- public long InOctets;
- public long InUcastPkts;
- public long InNUcastPkts;
- public long InDiscards;
- public long InErrors;
- public long InUnknownProtos;
- public long InUcastOctets;
- public long InMulticastOctets;
- public long InBroadcastOctets;
- public long OutOctets;
- public long OutUcastPkts;
- public long OutNUcastPkts;
- public long OutDiscards;
- public long OutErrors;
- public long OutUcastOctets;
- public long OutMulticastOctets;
- public long OutBroadcastOctets;
- public long OutQLen;
- }
-
- /**
- * The IP_ADDRESS_STRING structure stores an IPv4 address in dotted decimal
- * notation. The IP_ADDRESS_STRING structure definition is also the type
- * definition for the IP_MASK_STRING structure.
- *
- * @see IP_ADDRESS_STRING
- */
- @FieldOrder({ "String" })
- class IP_ADDRESS_STRING extends Structure {
- // Null terminated string
- // up to 3 chars (decimal 0-255) and dot
- // ending with null
- public byte[] String = new byte[16];
- }
-
- /**
- * The IP_ADDR_STRING structure represents a node in a linked-list of IPv4
- * addresses.
- *
- * @see IP_ADDR_STRING
- */
- @FieldOrder({ "Next", "IpAddress", "IpMask", "Context" })
- class IP_ADDR_STRING extends Structure {
- public IP_ADDR_STRING.ByReference Next;
- public IP_ADDRESS_STRING IpAddress;
- public IP_ADDRESS_STRING IpMask;
- public int Context;
-
- public static class ByReference extends IP_ADDR_STRING implements Structure.ByReference {
- }
- }
-
- /**
- * The FIXED_INFO structure contains information that is the same across all
- * the interfaces on a computer.
- *
- * @see FIXED_INFO
- */
- @FieldOrder({ "HostName", "DomainName", "CurrentDnsServer", "DnsServerList", "NodeType", "ScopeId", "EnableRouting",
- "EnableProxy", "EnableDns" })
- class FIXED_INFO extends Structure {
- public byte[] HostName = new byte[MAX_HOSTNAME_LEN + 4];
- public byte[] DomainName = new byte[MAX_DOMAIN_NAME_LEN + 4];
- public IP_ADDR_STRING.ByReference CurrentDnsServer; // IP_ADDR_STRING
- public IP_ADDR_STRING DnsServerList;
- public int NodeType;
- public byte[] ScopeId = new byte[MAX_SCOPE_ID_LEN + 4];
- public int EnableRouting;
- public int EnableProxy;
- public int EnableDns;
-
- public FIXED_INFO(Pointer p) {
- super(p);
- read();
- }
-
- public FIXED_INFO() {
- super();
- }
- }
-
- /**
- * The GetIfEntry function retrieves information for the specified interface
- * on the local computer.
- *
- * The dwIndex member in the MIB_IFROW structure pointed to by the pIfRow
- * parameter must be initialized to a valid network interface index
- * retrieved by a previous call to the GetIfTable, GetIfTable2, or
- * GetIfTable2Ex function. The GetIfEntry function will fail if the dwIndex
- * member of the MIB_IFROW pointed to by the pIfRow parameter does not match
- * an existing interface index on the local computer.
- *
- * @param pIfRow
- * A pointer to a MIB_IFROW structure that, on successful return,
- * receives information for an interface on the local computer.
- * On input, set the dwIndex member of MIB_IFROW to the index of
- * the interface for which to retrieve information.
- * @return If the function succeeds, the return value is NO_ERROR.
- */
- int GetIfEntry(MIB_IFROW pIfRow);
-
- /**
- * The GetIfEntry2 function retrieves information for the specified
- * interface on the local computer.
- *
- * On input, at least one of the following members in the MIB_IF_ROW2
- * structure passed in the Row parameter must be initialized: InterfaceLuid
- * or InterfaceIndex. The fields are used in the order listed above. So if
- * the InterfaceLuid is specified, then this member is used to determine the
- * interface. If no value was set for the InterfaceLuid member (the value of
- * this member was set to zero), then the InterfaceIndex member is next used
- * to determine the interface. On output, the remaining fields of the
- * MIB_IF_ROW2 structure pointed to by the Row parameter are filled in.
- *
- * @param pIfRow2
- * A pointer to a MIB_IF_ROW2 structure that, on successful
- * return, receives information for an interface on the local
- * computer. On input, the InterfaceLuid or the InterfaceIndex
- * member of the MIB_IF_ROW2 must be set to the interface for
- * which to retrieve information.
- * @return If the function succeeds, the return value is NO_ERROR.
- */
- int GetIfEntry2(MIB_IF_ROW2 pIfRow2);
-
- /**
- * The GetNetworkParams function retrieves network parameters for the local
- * computer.
- *
- * @param pFixedInfo
- * A pointer to a buffer that contains a FIXED_INFO structure
- * that receives the network parameters for the local computer,
- * if the function was successful. This buffer must be allocated
- * by the caller prior to calling the GetNetworkParams function.
- * @param pOutBufLen
- * A pointer to a ULONG variable that specifies the size of the
- * FIXED_INFO structure. If this size is insufficient to hold the
- * information, GetNetworkParams fills in this variable with the
- * required size, and returns an error code of
- * ERROR_BUFFER_OVERFLOW.
- * @return If the function succeeds, the return value is ERROR_SUCCESS.
- */
- int GetNetworkParams(FIXED_INFO pFixedInfo, IntByReference pOutBufLen);
-}
-
+/* Copyright (c) 2018 Daniel Widdis, All Rights Reserved
+ *
+ * The contents of this file is dual-licensed under 2
+ * alternative Open Source/Free licenses: LGPL 2.1 or later and
+ * Apache License 2.0. (starting with JNA version 4.0.0).
+ *
+ * You can freely decide which license you want to apply to
+ * the project.
+ *
+ * You may obtain a copy of the LGPL License at:
+ *
+ * http://www.gnu.org/licenses/licenses.html
+ *
+ * A copy is also included in the downloadable source code package
+ * containing JNA, in file "LGPL2.1".
+ *
+ * You may obtain a copy of the Apache License at:
+ *
+ * http://www.apache.org/licenses/
+ *
+ * A copy is also included in the downloadable source code package
+ * containing JNA, in file "AL2.0".
+ */
+package com.sun.jna.platform.win32;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+import com.sun.jna.Structure.FieldOrder;
+import com.sun.jna.platform.win32.Guid.GUID;
+import com.sun.jna.ptr.IntByReference;
+import com.sun.jna.win32.W32APIOptions;
+
+/**
+ * Windows IP Helper API
+ *
+ * @see IP
+ * Helper Reference
+ */
+public interface IPHlpAPI extends Library {
+ IPHlpAPI INSTANCE = Native.load("IPHlpAPI", IPHlpAPI.class, W32APIOptions.DEFAULT_OPTIONS);
+
+ int IF_MAX_STRING_SIZE = 256;
+ int IF_MAX_PHYS_ADDRESS_LENGTH = 32;
+ int MAX_INTERFACE_NAME_LEN = 256;
+ int MAXLEN_IFDESCR = 256;
+ int MAXLEN_PHYSADDR = 8;
+ int MAX_HOSTNAME_LEN = 128;
+ int MAX_DOMAIN_NAME_LEN = 128;
+ int MAX_SCOPE_ID_LEN = 256;
+
+ /**
+ * The MIB_IFROW structure stores information about a particular interface.
+ *
+ * @see MIB_IFROW
+ */
+ @FieldOrder({ "wszName", "dwIndex", "dwType", "dwMtu", "dwSpeed", "dwPhysAddrLen", "bPhysAddr", "dwAdminStatus",
+ "dwOperStatus", "dwLastChange", "dwInOctets", "dwInUcastPkts", "dwInNUcastPkts", "dwInDiscards",
+ "dwInErrors", "dwInUnknownProtos", "dwOutOctets", "dwOutUcastPkts", "dwOutNUcastPkts", "dwOutDiscards",
+ "dwOutErrors", "dwOutQLen", "dwDescrLen", "bDescr" })
+ class MIB_IFROW extends Structure {
+ public char[] wszName = new char[MAX_INTERFACE_NAME_LEN];
+ public int dwIndex;
+ public int dwType;
+ public int dwMtu;
+ public int dwSpeed;
+ public int dwPhysAddrLen;
+ public byte[] bPhysAddr = new byte[MAXLEN_PHYSADDR];
+ public int dwAdminStatus;
+ public int dwOperStatus;
+ public int dwLastChange;
+ public int dwInOctets;
+ public int dwInUcastPkts;
+ public int dwInNUcastPkts;
+ public int dwInDiscards;
+ public int dwInErrors;
+ public int dwInUnknownProtos;
+ public int dwOutOctets;
+ public int dwOutUcastPkts;
+ public int dwOutNUcastPkts;
+ public int dwOutDiscards;
+ public int dwOutErrors;
+ public int dwOutQLen;
+ public int dwDescrLen;
+ public byte[] bDescr = new byte[MAXLEN_IFDESCR];
+ }
+
+ /**
+ * The MIB_IF_ROW2 structure stores information about a particular
+ * interface.
+ *
+ * @see MIB_IF_ROW2
+ */
+ @FieldOrder({ "InterfaceLuid", "InterfaceIndex", "InterfaceGuid", "Alias", "Description", "PhysicalAddressLength",
+ "PhysicalAddress", "PermanentPhysicalAddress", "Mtu", "Type", "TunnelType", "MediaType",
+ "PhysicalMediumType", "AccessType", "DirectionType", "InterfaceAndOperStatusFlags", "OperStatus",
+ "AdminStatus", "MediaConnectState", "NetworkGuid", "ConnectionType", "TransmitLinkSpeed",
+ "ReceiveLinkSpeed", "InOctets", "InUcastPkts", "InNUcastPkts", "InDiscards", "InErrors", "InUnknownProtos",
+ "InUcastOctets", "InMulticastOctets", "InBroadcastOctets", "OutOctets", "OutUcastPkts", "OutNUcastPkts",
+ "OutDiscards", "OutErrors", "OutUcastOctets", "OutMulticastOctets", "OutBroadcastOctets", "OutQLen" })
+ class MIB_IF_ROW2 extends Structure {
+ public long InterfaceLuid; // 64-bit union NET_LUID
+ public int InterfaceIndex;
+ public GUID InterfaceGuid;
+ public char[] Alias = new char[IF_MAX_STRING_SIZE + 1];
+ public char[] Description = new char[IF_MAX_STRING_SIZE + 1];
+ public int PhysicalAddressLength;
+ public byte[] PhysicalAddress = new byte[IF_MAX_PHYS_ADDRESS_LENGTH];
+ public byte[] PermanentPhysicalAddress = new byte[IF_MAX_PHYS_ADDRESS_LENGTH];
+ public int Mtu;
+ public int Type;
+ // enums
+ public int TunnelType;
+ public int MediaType;
+ public int PhysicalMediumType;
+ public int AccessType;
+ public int DirectionType;
+ // 8-bit structure
+ public byte InterfaceAndOperStatusFlags;
+ // enums
+ public int OperStatus;
+ public int AdminStatus;
+ public int MediaConnectState;
+ public GUID NetworkGuid;
+ public int ConnectionType;
+ public long TransmitLinkSpeed;
+ public long ReceiveLinkSpeed;
+ public long InOctets;
+ public long InUcastPkts;
+ public long InNUcastPkts;
+ public long InDiscards;
+ public long InErrors;
+ public long InUnknownProtos;
+ public long InUcastOctets;
+ public long InMulticastOctets;
+ public long InBroadcastOctets;
+ public long OutOctets;
+ public long OutUcastPkts;
+ public long OutNUcastPkts;
+ public long OutDiscards;
+ public long OutErrors;
+ public long OutUcastOctets;
+ public long OutMulticastOctets;
+ public long OutBroadcastOctets;
+ public long OutQLen;
+ }
+
+ /**
+ * The IP_ADDRESS_STRING structure stores an IPv4 address in dotted decimal
+ * notation. The IP_ADDRESS_STRING structure definition is also the type
+ * definition for the IP_MASK_STRING structure.
+ *
+ * @see IP_ADDRESS_STRING
+ */
+ @FieldOrder({ "String" })
+ class IP_ADDRESS_STRING extends Structure {
+ // Null terminated string
+ // up to 3 chars (decimal 0-255) and dot
+ // ending with null
+ public byte[] String = new byte[16];
+ }
+
+ /**
+ * The IP_ADDR_STRING structure represents a node in a linked-list of IPv4
+ * addresses.
+ *
+ * @see IP_ADDR_STRING
+ */
+ @FieldOrder({ "Next", "IpAddress", "IpMask", "Context" })
+ class IP_ADDR_STRING extends Structure {
+ public IP_ADDR_STRING.ByReference Next;
+ public IP_ADDRESS_STRING IpAddress;
+ public IP_ADDRESS_STRING IpMask;
+ public int Context;
+
+ public static class ByReference extends IP_ADDR_STRING implements Structure.ByReference {
+ }
+ }
+
+ /**
+ * The FIXED_INFO structure contains information that is the same across all
+ * the interfaces on a computer.
+ *
+ * @see FIXED_INFO
+ */
+ @FieldOrder({ "HostName", "DomainName", "CurrentDnsServer", "DnsServerList", "NodeType", "ScopeId", "EnableRouting",
+ "EnableProxy", "EnableDns" })
+ class FIXED_INFO extends Structure {
+ public byte[] HostName = new byte[MAX_HOSTNAME_LEN + 4];
+ public byte[] DomainName = new byte[MAX_DOMAIN_NAME_LEN + 4];
+ public IP_ADDR_STRING.ByReference CurrentDnsServer;
+ public IP_ADDR_STRING DnsServerList;
+ public int NodeType;
+ public byte[] ScopeId = new byte[MAX_SCOPE_ID_LEN + 4];
+ public int EnableRouting;
+ public int EnableProxy;
+ public int EnableDns;
+
+ public FIXED_INFO(Pointer p) {
+ super(p);
+ read();
+ }
+
+ public FIXED_INFO() {
+ super();
+ }
+ }
+
+ /**
+ * The GetIfEntry function retrieves information for the specified interface
+ * on the local computer.
+ *
+ * The dwIndex member in the MIB_IFROW structure pointed to by the pIfRow
+ * parameter must be initialized to a valid network interface index
+ * retrieved by a previous call to the GetIfTable, GetIfTable2, or
+ * GetIfTable2Ex function. The GetIfEntry function will fail if the dwIndex
+ * member of the MIB_IFROW pointed to by the pIfRow parameter does not match
+ * an existing interface index on the local computer.
+ *
+ * @param pIfRow
+ * A pointer to a MIB_IFROW structure that, on successful return,
+ * receives information for an interface on the local computer.
+ * On input, set the dwIndex member of MIB_IFROW to the index of
+ * the interface for which to retrieve information.
+ * @return If the function succeeds, the return value is NO_ERROR.
+ */
+ int GetIfEntry(MIB_IFROW pIfRow);
+
+ /**
+ * The GetIfEntry2 function retrieves information for the specified
+ * interface on the local computer.
+ *
+ * On input, at least one of the following members in the MIB_IF_ROW2
+ * structure passed in the Row parameter must be initialized: InterfaceLuid
+ * or InterfaceIndex. The fields are used in the order listed above. So if
+ * the InterfaceLuid is specified, then this member is used to determine the
+ * interface. If no value was set for the InterfaceLuid member (the value of
+ * this member was set to zero), then the InterfaceIndex member is next used
+ * to determine the interface. On output, the remaining fields of the
+ * MIB_IF_ROW2 structure pointed to by the Row parameter are filled in.
+ *
+ * @param pIfRow2
+ * A pointer to a MIB_IF_ROW2 structure that, on successful
+ * return, receives information for an interface on the local
+ * computer. On input, the InterfaceLuid or the InterfaceIndex
+ * member of the MIB_IF_ROW2 must be set to the interface for
+ * which to retrieve information.
+ * @return If the function succeeds, the return value is NO_ERROR.
+ */
+ int GetIfEntry2(MIB_IF_ROW2 pIfRow2);
+
+ /**
+ * The GetNetworkParams function retrieves network parameters for the local
+ * computer.
+ *
+ * @param pFixedInfo
+ * A pointer to a buffer that contains a FIXED_INFO structure
+ * that receives the network parameters for the local computer,
+ * if the function was successful. This buffer must be allocated
+ * by the caller prior to calling the GetNetworkParams function.
+ * @param pOutBufLen
+ * A pointer to a ULONG variable that specifies the size of the
+ * FIXED_INFO structure. If this size is insufficient to hold the
+ * information, GetNetworkParams fills in this variable with the
+ * required size, and returns an error code of
+ * ERROR_BUFFER_OVERFLOW.
+ * @return If the function succeeds, the return value is ERROR_SUCCESS.
+ */
+ int GetNetworkParams(Pointer pFixedInfo, IntByReference pOutBufLen);
+}
+
diff --git a/contrib/platform/test/com/sun/jna/platform/win32/IPHlpAPITest.java b/contrib/platform/test/com/sun/jna/platform/win32/IPHlpAPITest.java
index e59ec5c104..731fbaf7eb 100644
--- a/contrib/platform/test/com/sun/jna/platform/win32/IPHlpAPITest.java
+++ b/contrib/platform/test/com/sun/jna/platform/win32/IPHlpAPITest.java
@@ -116,11 +116,12 @@ public void testGetNetworkParams() {
IntByReference bufferSize = new IntByReference();
assertEquals(WinError.ERROR_BUFFER_OVERFLOW, IPHlpAPI.INSTANCE.GetNetworkParams(null, bufferSize));
- FIXED_INFO buffer = new FIXED_INFO(new Memory(bufferSize.getValue()));
+ Memory buffer = new Memory(bufferSize.getValue());
assertEquals(WinError.ERROR_SUCCESS, IPHlpAPI.INSTANCE.GetNetworkParams(buffer, bufferSize));
+ FIXED_INFO fixedInfo = new FIXED_INFO(buffer);
// Check all DNS servers are valid IPs
- IPHlpAPI.IP_ADDR_STRING dns = buffer.DnsServerList;
+ IPHlpAPI.IP_ADDR_STRING dns = fixedInfo.DnsServerList;
while (dns != null) {
// Start with 16-char byte array
String addr = new String(dns.IpAddress.String);