From 4c71a647c460e276b81476a409143b97f01a03cc Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 5 Feb 2020 18:55:56 +0100 Subject: [PATCH] tun.c: refactor driver detection and make it case-insensitive Hardware IDs are case insensitive on Windows. Furthermore the driver detection logic has been made more explicit and easier to read. Signed-off-by: Simon Rozman Acked-by: Lev Stipakov Message-Id: <20200205175556.1877-1-simon@rozman.si> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19365.html Signed-off-by: Gert Doering --- src/openvpn/tun.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index aa131b258..06cdb75f4 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -3692,11 +3692,19 @@ get_tap_reg(struct gc_arena *gc) if (status == ERROR_SUCCESS && data_type == REG_SZ) { + /* Is this adapter supported? */ enum windows_driver_type windows_driver = WINDOWS_DRIVER_UNSPECIFIED; + if (strcasecmp(component_id, TAP_WIN_COMPONENT_ID) == 0 || + strcasecmp(component_id, "root\\" TAP_WIN_COMPONENT_ID) == 0) + { + windows_driver = WINDOWS_DRIVER_TAP_WINDOWS6; + } + else if (strcasecmp(component_id, WINTUN_COMPONENT_ID) == 0) + { + windows_driver = WINDOWS_DRIVER_WINTUN; + } - if ((windows_driver = WINDOWS_DRIVER_TAP_WINDOWS6, !strcmp(component_id, TAP_WIN_COMPONENT_ID)) - || (windows_driver = WINDOWS_DRIVER_TAP_WINDOWS6, !strcmp(component_id, "root\\" TAP_WIN_COMPONENT_ID)) - || (windows_driver = WINDOWS_DRIVER_WINTUN, !strcmp(component_id, WINTUN_COMPONENT_ID))) + if (windows_driver != WINDOWS_DRIVER_UNSPECIFIED) { struct tap_reg *reg; ALLOC_OBJ_CLEAR_GC(reg, struct tap_reg, gc); -- 2.47.2