char adaptername[1024];
char tapname[1024];
DWORD len;
- unsigned long status;
bool found = false;
return false;
}
- /* Set media status for newer TAP-Win32 devices */
-
- status = true;
- DeviceIoControl(device_handle, TAP_IOCTL_SET_MEDIA_STATUS, &status, sizeof status, &status, sizeof status, &len, NULL);
-
device_info = "Windows tap device";
logger(DEBUG_ALWAYS, LOG_INFO, "%s (%s) is a %s", device, iface, device_info);
return true;
}
+static void enable_device(void) {
+ logger(DEBUG_ALWAYS, LOG_INFO, "Enabling %s", device_info);
+ ULONG status = 1;
+ DWORD len;
+ DeviceIoControl(device_handle, TAP_IOCTL_SET_MEDIA_STATUS, &status, sizeof status, &status, sizeof status, &len, NULL);
+}
+
+static void disable_device(void) {
+ logger(DEBUG_ALWAYS, LOG_INFO, "Disabling %s", device_info);
+ ULONG status = 0;
+ DWORD len;
+ DeviceIoControl(device_handle, TAP_IOCTL_SET_MEDIA_STATUS, &status, sizeof status, &status, sizeof status, &len, NULL);
+}
+
static void close_device(void) {
CloseHandle(device_handle); device_handle = INVALID_HANDLE_VALUE;
.close = close_device,
.read = read_packet,
.write = write_packet,
+ .enable = enable_device,
+ .disable = disable_device,
};