mirror of
https://github.com/amnezia-vpn/amneziawg-tools.git
synced 2025-06-06 21:13:44 +02:00
add windows new fields
This commit is contained in:
parent
8e18546c25
commit
f80e2c90e9
3 changed files with 103 additions and 1 deletions
|
@ -54,6 +54,7 @@ static struct hashtable cached_interfaces;
|
||||||
|
|
||||||
static bool userspace_has_wireguard_interface(const char *iface)
|
static bool userspace_has_wireguard_interface(const char *iface)
|
||||||
{
|
{
|
||||||
|
printf("dafasdf\n");
|
||||||
char fname[MAX_PATH];
|
char fname[MAX_PATH];
|
||||||
WIN32_FIND_DATA find_data;
|
WIN32_FIND_DATA find_data;
|
||||||
HANDLE find_handle;
|
HANDLE find_handle;
|
||||||
|
|
|
@ -263,6 +263,43 @@ static int kernel_get_device(struct wgdevice **device, const char *iface)
|
||||||
dev->flags |= WGDEVICE_HAS_PRIVATE_KEY;
|
dev->flags |= WGDEVICE_HAS_PRIVATE_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_JC) {
|
||||||
|
dev->junk_packet_count = wg_iface->JunkPacketCount;
|
||||||
|
dev->flags |= WGDEVICE_HAS_JC;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_JMIN) {
|
||||||
|
dev->junk_packet_min_size = wg_iface->JunkPacketMinSize;
|
||||||
|
dev->flags |= WGDEVICE_HAS_JMIN;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_JMAX) {
|
||||||
|
dev->junk_packet_max_size = wg_iface->JunkPacketMaxSize;
|
||||||
|
dev->flags |= WGDEVICE_HAS_JMAX;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_S1) {
|
||||||
|
dev->init_packet_junk_size = wg_iface->InitPacketJunkSize;
|
||||||
|
dev->flags |= WGDEVICE_HAS_S1;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_S2) {
|
||||||
|
dev->response_packet_junk_size = wg_iface->ResponsePacketJunkSize;
|
||||||
|
dev->flags |= WGDEVICE_HAS_S2;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_H1) {
|
||||||
|
dev->init_packet_magic_header = wg_iface->InitPacketMagicHeader;
|
||||||
|
dev->flags |= WGDEVICE_HAS_H1;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_H2) {
|
||||||
|
dev->response_packet_magic_header = wg_iface->ResponsePacketMagicHeader;
|
||||||
|
dev->flags |= WGDEVICE_HAS_H2;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_H3) {
|
||||||
|
dev->underload_packet_magic_header = wg_iface->UnderloadPacketMagicHeader;
|
||||||
|
dev->flags |= WGDEVICE_HAS_H3;
|
||||||
|
}
|
||||||
|
if (wg_iface->Flags & WG_IOCTL_INTERFACE_H4) {
|
||||||
|
dev->transport_packet_magic_header = wg_iface->TransportPacketMagicHeader;
|
||||||
|
dev->flags |= WGDEVICE_HAS_H4;
|
||||||
|
}
|
||||||
|
|
||||||
wg_peer = buf + sizeof(WG_IOCTL_INTERFACE);
|
wg_peer = buf + sizeof(WG_IOCTL_INTERFACE);
|
||||||
for (ULONG i = 0; i < wg_iface->PeersCount; ++i) {
|
for (ULONG i = 0; i < wg_iface->PeersCount; ++i) {
|
||||||
peer = calloc(1, sizeof(*peer));
|
peer = calloc(1, sizeof(*peer));
|
||||||
|
@ -385,6 +422,51 @@ static int kernel_set_device(struct wgdevice *dev)
|
||||||
if (dev->flags & WGDEVICE_REPLACE_PEERS)
|
if (dev->flags & WGDEVICE_REPLACE_PEERS)
|
||||||
wg_iface->Flags |= WG_IOCTL_INTERFACE_REPLACE_PEERS;
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_REPLACE_PEERS;
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_JC) {
|
||||||
|
wg_iface->JunkPacketCount = dev->junk_packet_count;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_JC;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_JMIN) {
|
||||||
|
wg_iface->JunkPacketMinSize = dev->junk_packet_min_size;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_JMIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_JMAX) {
|
||||||
|
wg_iface->JunkPacketMaxSize = dev->junk_packet_max_size;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_JMAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_S1) {
|
||||||
|
wg_iface->InitPacketJunkSize = dev->init_packet_junk_size;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_S1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_S2) {
|
||||||
|
wg_iface->ResponsePacketJunkSize = dev->response_packet_junk_size;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_S2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_H1) {
|
||||||
|
wg_iface->InitPacketMagicHeader = dev->init_packet_magic_header;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_H1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_H2) {
|
||||||
|
wg_iface->ResponsePacketMagicHeader = dev->response_packet_magic_header;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_H2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_H3) {
|
||||||
|
wg_iface->UnderloadPacketMagicHeader = dev->underload_packet_magic_header;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_H3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev->flags & WGDEVICE_HAS_H4) {
|
||||||
|
wg_iface->TransportPacketMagicHeader = dev->transport_packet_magic_header;
|
||||||
|
wg_iface->Flags |= WG_IOCTL_INTERFACE_H4;
|
||||||
|
}
|
||||||
|
|
||||||
peer_count = 0;
|
peer_count = 0;
|
||||||
wg_peer = (void *)wg_iface + sizeof(WG_IOCTL_INTERFACE);
|
wg_peer = (void *)wg_iface + sizeof(WG_IOCTL_INTERFACE);
|
||||||
for_each_wgpeer(dev, peer) {
|
for_each_wgpeer(dev, peer) {
|
||||||
|
|
|
@ -56,7 +56,17 @@ typedef enum
|
||||||
WG_IOCTL_INTERFACE_HAS_PUBLIC_KEY = 1 << 0,
|
WG_IOCTL_INTERFACE_HAS_PUBLIC_KEY = 1 << 0,
|
||||||
WG_IOCTL_INTERFACE_HAS_PRIVATE_KEY = 1 << 1,
|
WG_IOCTL_INTERFACE_HAS_PRIVATE_KEY = 1 << 1,
|
||||||
WG_IOCTL_INTERFACE_HAS_LISTEN_PORT = 1 << 2,
|
WG_IOCTL_INTERFACE_HAS_LISTEN_PORT = 1 << 2,
|
||||||
WG_IOCTL_INTERFACE_REPLACE_PEERS = 1 << 3
|
WG_IOCTL_INTERFACE_REPLACE_PEERS = 1 << 3,
|
||||||
|
WG_IOCTL_INTERFACE_PEERS = 1 << 4,
|
||||||
|
WG_IOCTL_INTERFACE_JC = 1 << 5,
|
||||||
|
WG_IOCTL_INTERFACE_JMIN = 1 << 6,
|
||||||
|
WG_IOCTL_INTERFACE_JMAX = 1 << 7,
|
||||||
|
WG_IOCTL_INTERFACE_S1 = 1 << 8,
|
||||||
|
WG_IOCTL_INTERFACE_S2 = 1 << 9,
|
||||||
|
WG_IOCTL_INTERFACE_H1 = 1 << 10,
|
||||||
|
WG_IOCTL_INTERFACE_H2 = 1 << 11,
|
||||||
|
WG_IOCTL_INTERFACE_H3 = 1 << 12,
|
||||||
|
WG_IOCTL_INTERFACE_H4 = 1 << 13
|
||||||
} WG_IOCTL_INTERFACE_FLAG;
|
} WG_IOCTL_INTERFACE_FLAG;
|
||||||
|
|
||||||
typedef struct _WG_IOCTL_INTERFACE
|
typedef struct _WG_IOCTL_INTERFACE
|
||||||
|
@ -66,6 +76,15 @@ typedef struct _WG_IOCTL_INTERFACE
|
||||||
UCHAR PrivateKey[WG_KEY_LEN];
|
UCHAR PrivateKey[WG_KEY_LEN];
|
||||||
UCHAR PublicKey[WG_KEY_LEN];
|
UCHAR PublicKey[WG_KEY_LEN];
|
||||||
ULONG PeersCount;
|
ULONG PeersCount;
|
||||||
|
USHORT JunkPacketCount;
|
||||||
|
USHORT JunkPacketMinSize;
|
||||||
|
USHORT JunkPacketMaxSize;
|
||||||
|
USHORT InitPacketJunkSize;
|
||||||
|
USHORT ResponsePacketJunkSize;
|
||||||
|
ULONG InitPacketMagicHeader;
|
||||||
|
ULONG ResponsePacketMagicHeader;
|
||||||
|
ULONG UnderloadPacketMagicHeader;
|
||||||
|
ULONG TransportPacketMagicHeader;
|
||||||
} __attribute__((aligned(8))) WG_IOCTL_INTERFACE;
|
} __attribute__((aligned(8))) WG_IOCTL_INTERFACE;
|
||||||
|
|
||||||
#define WG_IOCTL_GET CTL_CODE(45208U, 321, METHOD_OUT_DIRECT, FILE_READ_DATA | FILE_WRITE_DATA)
|
#define WG_IOCTL_GET CTL_CODE(45208U, 321, METHOD_OUT_DIRECT, FILE_READ_DATA | FILE_WRITE_DATA)
|
||||||
|
|
Loading…
Add table
Reference in a new issue