mirror of
https://github.com/amnezia-vpn/amneziawg-tools.git
synced 2025-04-16 21:56:55 +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)
|
||||
{
|
||||
printf("dafasdf\n");
|
||||
char fname[MAX_PATH];
|
||||
WIN32_FIND_DATA find_data;
|
||||
HANDLE find_handle;
|
||||
|
|
|
@ -263,6 +263,43 @@ static int kernel_get_device(struct wgdevice **device, const char *iface)
|
|||
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);
|
||||
for (ULONG i = 0; i < wg_iface->PeersCount; ++i) {
|
||||
peer = calloc(1, sizeof(*peer));
|
||||
|
@ -385,6 +422,51 @@ static int kernel_set_device(struct wgdevice *dev)
|
|||
if (dev->flags & WGDEVICE_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;
|
||||
wg_peer = (void *)wg_iface + sizeof(WG_IOCTL_INTERFACE);
|
||||
for_each_wgpeer(dev, peer) {
|
||||
|
|
|
@ -56,7 +56,17 @@ typedef enum
|
|||
WG_IOCTL_INTERFACE_HAS_PUBLIC_KEY = 1 << 0,
|
||||
WG_IOCTL_INTERFACE_HAS_PRIVATE_KEY = 1 << 1,
|
||||
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;
|
||||
|
||||
typedef struct _WG_IOCTL_INTERFACE
|
||||
|
@ -66,6 +76,15 @@ typedef struct _WG_IOCTL_INTERFACE
|
|||
UCHAR PrivateKey[WG_KEY_LEN];
|
||||
UCHAR PublicKey[WG_KEY_LEN];
|
||||
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;
|
||||
|
||||
#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