converting JNA to kotlin
parent
ea5085ac25
commit
ece38d9421
|
@ -70,7 +70,7 @@ object ResolveConf {
|
|||
|
||||
// modified from: https://github.com/dnsjava/dnsjava/blob/master/src/main/java/org/xbill/DNS/config/WindowsResolverConfigProvider.java
|
||||
// The recommended method of calling the GetAdaptersAddresses function is to pre-allocate a 15KB working buffer
|
||||
var buffer: Memory? = Memory(15 * 1024)
|
||||
var buffer = Memory(15 * 1024)
|
||||
val size: com.sun.jna.ptr.IntByReference = com.sun.jna.ptr.IntByReference(0)
|
||||
|
||||
val flags: Int = IPHlpAPI.GAA_FLAG_SKIP_UNICAST or
|
||||
|
@ -106,10 +106,11 @@ object ResolveConf {
|
|||
var dns: IP_ADAPTER_DNS_SERVER_ADDRESS_XP? = result.FirstDnsServerAddress
|
||||
while (dns != null) {
|
||||
|
||||
var address: InetAddress
|
||||
var address: InetAddress?
|
||||
try {
|
||||
address = dns.Address.toAddress()
|
||||
if (address is Inet4Address || !address.isSiteLocalAddress) {
|
||||
address = dns.Address?.toAddress()
|
||||
|
||||
if (address is Inet4Address || !address!!.isSiteLocalAddress) {
|
||||
putIfAbsent(nameServerDomains, Dns.DEFAULT_SEARCH_DOMAIN, Common.socketAddress(address, 53))
|
||||
} else {
|
||||
Common.logger.trace(
|
||||
|
|
|
@ -1,119 +0,0 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.Structure;
|
||||
import com.sun.jna.WString;
|
||||
import com.sun.jna.platform.win32.Guid;
|
||||
|
||||
public
|
||||
class IP_ADAPTER_ADDRESSES_LH extends Structure {
|
||||
public static
|
||||
class ByReference extends IP_ADAPTER_ADDRESSES_LH implements Structure.ByReference {}
|
||||
|
||||
|
||||
public int Length;
|
||||
public int IfIndex;
|
||||
|
||||
public IP_ADAPTER_ADDRESSES_LH.ByReference Next;
|
||||
public String AdapterName;
|
||||
|
||||
public IP_ADAPTER_UNICAST_ADDRESS_LH.ByReference FirstUnicastAddress;
|
||||
public IP_ADAPTER_ANYCAST_ADDRESS_XP.ByReference FirstAnycastAddress;
|
||||
public IP_ADAPTER_MULTICAST_ADDRESS_XP.ByReference FirstMulticastAddress;
|
||||
public IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference FirstDnsServerAddress;
|
||||
|
||||
public WString DnsSuffix;
|
||||
public WString Description;
|
||||
public WString FriendlyName;
|
||||
|
||||
public byte[] PhysicalAddress = new byte[8];
|
||||
public int PhysicalAddressLength;
|
||||
public int Flags;
|
||||
public int Mtu;
|
||||
public int IfType;
|
||||
public int OperStatus;
|
||||
public int Ipv6IfIndex;
|
||||
|
||||
public int[] ZoneIndices = new int[16];
|
||||
public Pointer FirstPrefix;
|
||||
|
||||
public long TransmitLinkSpeed;
|
||||
public long ReceiveLinkSpeed;
|
||||
|
||||
public Pointer FirstWinsServerAddress;
|
||||
public Pointer FirstGatewayAddress;
|
||||
|
||||
public int Ipv4Metric;
|
||||
public int Ipv6Metric;
|
||||
|
||||
public LUID Luid;
|
||||
public SOCKET_ADDRESS Dhcpv4Server;
|
||||
public int CompartmentId;
|
||||
public Guid.GUID NetworkGuid;
|
||||
|
||||
public int ConnectionType;
|
||||
public int TunnelType;
|
||||
public SOCKET_ADDRESS Dhcpv6Server;
|
||||
|
||||
public byte[] Dhcpv6ClientDuid = new byte[130];
|
||||
public int Dhcpv6ClientDuidLength;
|
||||
public int Dhcpv6Iaid;
|
||||
|
||||
public IP_ADAPTER_DNS_SUFFIX.ByReference FirstDnsSuffix;
|
||||
|
||||
public
|
||||
IP_ADAPTER_ADDRESSES_LH(Pointer p) {
|
||||
super(p);
|
||||
read();
|
||||
}
|
||||
|
||||
public
|
||||
IP_ADAPTER_ADDRESSES_LH() {}
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("Length",
|
||||
"IfIndex",
|
||||
"Next",
|
||||
"AdapterName",
|
||||
"FirstUnicastAddress",
|
||||
"FirstAnycastAddress",
|
||||
"FirstMulticastAddress",
|
||||
"FirstDnsServerAddress",
|
||||
"DnsSuffix",
|
||||
"Description",
|
||||
"FriendlyName",
|
||||
"PhysicalAddress",
|
||||
"PhysicalAddressLength",
|
||||
"Flags",
|
||||
"Mtu",
|
||||
"IfType",
|
||||
"OperStatus",
|
||||
"Ipv6IfIndex",
|
||||
"ZoneIndices",
|
||||
"FirstPrefix",
|
||||
"TransmitLinkSpeed",
|
||||
"ReceiveLinkSpeed",
|
||||
"FirstWinsServerAddress",
|
||||
"FirstGatewayAddress",
|
||||
"Ipv4Metric",
|
||||
"Ipv6Metric",
|
||||
"Luid",
|
||||
"Dhcpv4Server",
|
||||
"CompartmentId",
|
||||
"NetworkGuid",
|
||||
"ConnectionType",
|
||||
"TunnelType",
|
||||
"Dhcpv6Server",
|
||||
"Dhcpv6ClientDuid",
|
||||
"Dhcpv6ClientDuidLength",
|
||||
"Dhcpv6Iaid",
|
||||
"FirstDnsSuffix");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import com.sun.jna.Pointer
|
||||
import com.sun.jna.Structure
|
||||
import com.sun.jna.WString
|
||||
import com.sun.jna.platform.win32.Guid
|
||||
|
||||
open class IP_ADAPTER_ADDRESSES_LH : Structure {
|
||||
constructor(p: Pointer) : super(p) {
|
||||
read()
|
||||
}
|
||||
|
||||
constructor() {}
|
||||
|
||||
class ByReference : IP_ADAPTER_ADDRESSES_LH(), Structure.ByReference
|
||||
|
||||
@JvmField var Length = 0
|
||||
@JvmField var IfIndex = 0
|
||||
@JvmField var Next: ByReference? = null
|
||||
@JvmField var AdapterName: String? = null
|
||||
|
||||
@JvmField var FirstUnicastAddress: IP_ADAPTER_UNICAST_ADDRESS_LH.ByReference? = null
|
||||
@JvmField var FirstAnycastAddress: IP_ADAPTER_ANYCAST_ADDRESS_XP.ByReference? = null
|
||||
|
||||
@JvmField var FirstMulticastAddress: IP_ADAPTER_MULTICAST_ADDRESS_XP.ByReference? = null
|
||||
@JvmField var FirstDnsServerAddress: IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference? = null
|
||||
|
||||
@JvmField var DnsSuffix: WString? = null
|
||||
@JvmField var Description: WString? = null
|
||||
@JvmField var FriendlyName: WString? = null
|
||||
@JvmField var PhysicalAddress = ByteArray(8)
|
||||
@JvmField var PhysicalAddressLength = 0
|
||||
|
||||
@JvmField var Flags = 0
|
||||
@JvmField var Mtu = 0
|
||||
@JvmField var IfType = 0
|
||||
@JvmField var OperStatus = 0
|
||||
@JvmField var Ipv6IfIndex = 0
|
||||
|
||||
@JvmField var ZoneIndices = IntArray(16)
|
||||
|
||||
@JvmField var FirstPrefix: Pointer? = null
|
||||
@JvmField var TransmitLinkSpeed: Long = 0
|
||||
@JvmField var ReceiveLinkSpeed: Long = 0
|
||||
|
||||
@JvmField var FirstWinsServerAddress: Pointer? = null
|
||||
@JvmField var FirstGatewayAddress: Pointer? = null
|
||||
|
||||
@JvmField var Ipv4Metric = 0
|
||||
@JvmField var Ipv6Metric = 0
|
||||
|
||||
@JvmField var Luid: LUID? = null
|
||||
@JvmField var Dhcpv4Server: SOCKET_ADDRESS? = null
|
||||
@JvmField var CompartmentId = 0
|
||||
@JvmField var NetworkGuid: Guid.GUID? = null
|
||||
@JvmField var ConnectionType = 0
|
||||
@JvmField var TunnelType = 0
|
||||
|
||||
@JvmField var Dhcpv6Server: SOCKET_ADDRESS? = null
|
||||
@JvmField var Dhcpv6ClientDuid = ByteArray(130)
|
||||
@JvmField var Dhcpv6ClientDuidLength = 0
|
||||
@JvmField var Dhcpv6Iaid = 0
|
||||
|
||||
@JvmField var FirstDnsSuffix: IP_ADAPTER_DNS_SUFFIX.ByReference? = null
|
||||
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf(
|
||||
"Length",
|
||||
"IfIndex",
|
||||
"Next",
|
||||
"AdapterName",
|
||||
"FirstUnicastAddress",
|
||||
"FirstAnycastAddress",
|
||||
"FirstMulticastAddress",
|
||||
"FirstDnsServerAddress",
|
||||
"DnsSuffix",
|
||||
"Description",
|
||||
"FriendlyName",
|
||||
"PhysicalAddress",
|
||||
"PhysicalAddressLength",
|
||||
"Flags",
|
||||
"Mtu",
|
||||
"IfType",
|
||||
"OperStatus",
|
||||
"Ipv6IfIndex",
|
||||
"ZoneIndices",
|
||||
"FirstPrefix",
|
||||
"TransmitLinkSpeed",
|
||||
"ReceiveLinkSpeed",
|
||||
"FirstWinsServerAddress",
|
||||
"FirstGatewayAddress",
|
||||
"Ipv4Metric",
|
||||
"Ipv6Metric",
|
||||
"Luid",
|
||||
"Dhcpv4Server",
|
||||
"CompartmentId",
|
||||
"NetworkGuid",
|
||||
"ConnectionType",
|
||||
"TunnelType",
|
||||
"Dhcpv6Server",
|
||||
"Dhcpv6ClientDuid",
|
||||
"Dhcpv6ClientDuidLength",
|
||||
"Dhcpv6Iaid",
|
||||
"FirstDnsSuffix"
|
||||
)
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
public
|
||||
class IP_ADAPTER_ANYCAST_ADDRESS_XP extends Structure {
|
||||
public static
|
||||
class ByReference extends IP_ADAPTER_ANYCAST_ADDRESS_XP implements Structure.ByReference {}
|
||||
|
||||
|
||||
public int Length;
|
||||
public int Reserved;
|
||||
|
||||
public IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference Next;
|
||||
public SOCKET_ADDRESS Address;
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("Length", "Reserved", "Next", "Address");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import com.sun.jna.Structure
|
||||
|
||||
open class IP_ADAPTER_ANYCAST_ADDRESS_XP : Structure() {
|
||||
class ByReference : IP_ADAPTER_ANYCAST_ADDRESS_XP(), Structure.ByReference
|
||||
|
||||
@JvmField var Length = 0
|
||||
@JvmField var Reserved = 0
|
||||
@JvmField var Next: IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference? = null
|
||||
@JvmField var Address: SOCKET_ADDRESS? = null
|
||||
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("Length", "Reserved", "Next", "Address")
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
public
|
||||
class IP_ADAPTER_DNS_SERVER_ADDRESS_XP extends Structure {
|
||||
public static
|
||||
class ByReference extends IP_ADAPTER_DNS_SERVER_ADDRESS_XP implements Structure.ByReference {}
|
||||
|
||||
|
||||
public int Length;
|
||||
public int Reserved;
|
||||
|
||||
public IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference Next;
|
||||
public SOCKET_ADDRESS Address;
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("Length", "Reserved", "Next", "Address");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import com.sun.jna.Structure
|
||||
|
||||
open class IP_ADAPTER_DNS_SERVER_ADDRESS_XP : Structure() {
|
||||
class ByReference : IP_ADAPTER_DNS_SERVER_ADDRESS_XP(), Structure.ByReference
|
||||
|
||||
@JvmField var Length = 0
|
||||
@JvmField var Reserved = 0
|
||||
@JvmField var Next: ByReference? = null
|
||||
@JvmField var Address: SOCKET_ADDRESS? = null
|
||||
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("Length", "Reserved", "Next", "Address")
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
public
|
||||
class IP_ADAPTER_DNS_SUFFIX extends Structure {
|
||||
public static
|
||||
class ByReference extends IP_ADAPTER_DNS_SUFFIX implements Structure.ByReference {}
|
||||
|
||||
|
||||
public IP_ADAPTER_DNS_SUFFIX.ByReference Next;
|
||||
public char[] _String = new char[256];
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("Next", "_String");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import com.sun.jna.Structure
|
||||
|
||||
open class IP_ADAPTER_DNS_SUFFIX : Structure() {
|
||||
class ByReference : IP_ADAPTER_DNS_SUFFIX(), Structure.ByReference
|
||||
|
||||
@JvmField var Next: ByReference? = null
|
||||
@JvmField var _String = CharArray(256)
|
||||
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("Next", "_String")
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
public
|
||||
class IP_ADAPTER_MULTICAST_ADDRESS_XP extends Structure {
|
||||
public static
|
||||
class ByReference extends IP_ADAPTER_MULTICAST_ADDRESS_XP implements Structure.ByReference {}
|
||||
|
||||
|
||||
public int Length;
|
||||
public int Reserved;
|
||||
|
||||
public IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference Next;
|
||||
public SOCKET_ADDRESS Address;
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("Length", "Reserved", "Next", "Address");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import com.sun.jna.Structure
|
||||
|
||||
open class IP_ADAPTER_MULTICAST_ADDRESS_XP : Structure() {
|
||||
class ByReference : IP_ADAPTER_MULTICAST_ADDRESS_XP(), Structure.ByReference
|
||||
|
||||
@JvmField var Length = 0
|
||||
@JvmField var Reserved = 0
|
||||
@JvmField var Next: IP_ADAPTER_DNS_SERVER_ADDRESS_XP.ByReference? = null
|
||||
@JvmField var Address: SOCKET_ADDRESS? = null
|
||||
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("Length", "Reserved", "Next", "Address")
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
public
|
||||
class IP_ADAPTER_UNICAST_ADDRESS_LH extends Structure {
|
||||
public static
|
||||
class ByReference extends IP_ADAPTER_UNICAST_ADDRESS_LH implements Structure.ByReference {}
|
||||
|
||||
|
||||
public int Length;
|
||||
public int IfIndex;
|
||||
|
||||
public IP_ADAPTER_UNICAST_ADDRESS_LH.ByReference Next;
|
||||
public SOCKET_ADDRESS Address;
|
||||
|
||||
public int PrefixOrigin;
|
||||
public int SuffixOrigin;
|
||||
public int DadState;
|
||||
|
||||
public int ValidLifetime;
|
||||
public int PreferredLifetime;
|
||||
public int LeaseLifetime;
|
||||
public byte OnLinkPrefixLength;
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("Length",
|
||||
"IfIndex",
|
||||
"Next",
|
||||
"Address",
|
||||
"PrefixOrigin",
|
||||
"SuffixOrigin",
|
||||
"DadState",
|
||||
"ValidLifetime",
|
||||
"PreferredLifetime",
|
||||
"LeaseLifetime",
|
||||
"OnLinkPrefixLength");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import com.sun.jna.Structure
|
||||
|
||||
open class IP_ADAPTER_UNICAST_ADDRESS_LH : Structure() {
|
||||
class ByReference : IP_ADAPTER_UNICAST_ADDRESS_LH(), Structure.ByReference
|
||||
|
||||
@JvmField var Length = 0
|
||||
@JvmField var IfIndex = 0
|
||||
@JvmField var Next: ByReference? = null
|
||||
@JvmField var Address: SOCKET_ADDRESS? = null
|
||||
@JvmField var PrefixOrigin = 0
|
||||
@JvmField var SuffixOrigin = 0
|
||||
@JvmField var DadState = 0
|
||||
@JvmField var ValidLifetime = 0
|
||||
@JvmField var PreferredLifetime = 0
|
||||
@JvmField var LeaseLifetime = 0
|
||||
@JvmField var OnLinkPrefixLength: Byte = 0
|
||||
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf(
|
||||
"Length",
|
||||
"IfIndex",
|
||||
"Next",
|
||||
"Address",
|
||||
"PrefixOrigin",
|
||||
"SuffixOrigin",
|
||||
"DadState",
|
||||
"ValidLifetime",
|
||||
"PreferredLifetime",
|
||||
"LeaseLifetime",
|
||||
"OnLinkPrefixLength"
|
||||
)
|
||||
}
|
||||
}
|
|
@ -1,18 +1,12 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import com.sun.jna.Structure
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
class LUID : Structure() {
|
||||
@JvmField var LowPart = 0
|
||||
@JvmField var HighPart = 0
|
||||
|
||||
public
|
||||
class LUID extends Structure {
|
||||
public int LowPart;
|
||||
public int HighPart;
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("LowPart", "HighPart");
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("LowPart", "HighPart")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +1,20 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import com.sun.jna.Pointer
|
||||
import com.sun.jna.Structure
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.Structure;
|
||||
class SOCKADDR_IN(p: Pointer) : Structure(p) {
|
||||
@JvmField var sin_family: Short = 0
|
||||
@JvmField var sin_port: Short = 0
|
||||
|
||||
public
|
||||
class SOCKADDR_IN extends Structure {
|
||||
public short sin_family;
|
||||
public short sin_port;
|
||||
public byte[] sin_addr = new byte[4];
|
||||
public byte[] sin_zero = new byte[8];
|
||||
@JvmField var sin_addr = ByteArray(4)
|
||||
@JvmField var sin_zero = ByteArray(8)
|
||||
|
||||
public
|
||||
SOCKADDR_IN(Pointer p) {
|
||||
super(p);
|
||||
read();
|
||||
init {
|
||||
read()
|
||||
}
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("sin_family", "sin_port", "sin_addr", "sin_zero");
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("sin_family", "sin_port", "sin_addr", "sin_zero")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,29 +1,20 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import com.sun.jna.Pointer
|
||||
import com.sun.jna.Structure
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.Structure;
|
||||
class SOCKADDR_IN6(p: Pointer) : Structure(p) {
|
||||
@JvmField var sin6_family: Short = 0
|
||||
@JvmField var sin6_port: Short = 0
|
||||
@JvmField var sin6_flowinfo = 0
|
||||
@JvmField var sin6_addr = ByteArray(16)
|
||||
@JvmField var sin6_scope_id = 0
|
||||
|
||||
public
|
||||
class SOCKADDR_IN6 extends Structure {
|
||||
public short sin6_family;
|
||||
public short sin6_port;
|
||||
public int sin6_flowinfo;
|
||||
|
||||
public byte[] sin6_addr = new byte[16];
|
||||
public int sin6_scope_id;
|
||||
|
||||
public
|
||||
SOCKADDR_IN6(Pointer p) {
|
||||
super(p);
|
||||
read();
|
||||
init {
|
||||
read()
|
||||
}
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("sin6_family", "sin6_port", "sin6_flowinfo", "sin6_addr", "sin6_scope_id");
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("sin6_family", "sin6_port", "sin6_flowinfo", "sin6_addr", "sin6_scope_id")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,39 +1,38 @@
|
|||
package dorkbox.netUtil.jna.windows.structs;
|
||||
package dorkbox.netUtil.jna.windows.structs
|
||||
|
||||
import java.net.Inet6Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import com.sun.jna.Pointer
|
||||
import com.sun.jna.Structure
|
||||
import java.net.Inet6Address
|
||||
import java.net.InetAddress
|
||||
import java.net.UnknownHostException
|
||||
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.Structure;
|
||||
class SOCKET_ADDRESS : Structure() {
|
||||
companion object {
|
||||
const val AF_INET = 2
|
||||
const val AF_INET6 = 23
|
||||
}
|
||||
|
||||
public
|
||||
class SOCKET_ADDRESS extends Structure {
|
||||
public static final int AF_INET = 2;
|
||||
public static final int AF_INET6 = 23;
|
||||
@JvmField var lpSockaddr: Pointer? = null
|
||||
@JvmField var iSockaddrLength = 0
|
||||
|
||||
public Pointer lpSockaddr;
|
||||
public int iSockaddrLength;
|
||||
|
||||
public
|
||||
InetAddress toAddress() throws UnknownHostException {
|
||||
switch (((int) lpSockaddr.getShort(0))) {
|
||||
case AF_INET:
|
||||
SOCKADDR_IN in4 = new SOCKADDR_IN(lpSockaddr);
|
||||
return InetAddress.getByAddress(in4.sin_addr);
|
||||
case AF_INET6:
|
||||
SOCKADDR_IN6 in6 = new SOCKADDR_IN6(lpSockaddr);
|
||||
return Inet6Address.getByAddress("", in6.sin6_addr, in6.sin6_scope_id);
|
||||
@Throws(UnknownHostException::class)
|
||||
fun toAddress(): InetAddress? {
|
||||
when (lpSockaddr!!.getShort(0).toInt()) {
|
||||
AF_INET -> {
|
||||
val in4 = SOCKADDR_IN(lpSockaddr!!)
|
||||
return InetAddress.getByAddress(in4.sin_addr)
|
||||
}
|
||||
AF_INET6 -> {
|
||||
val in6 = SOCKADDR_IN6(lpSockaddr!!)
|
||||
return Inet6Address.getByAddress("", in6.sin6_addr, in6.sin6_scope_id)
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
protected
|
||||
List<String> getFieldOrder() {
|
||||
return Arrays.asList("lpSockaddr", "iSockaddrLength");
|
||||
override fun getFieldOrder(): List<String> {
|
||||
return listOf("lpSockaddr", "iSockaddrLength")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue