Message ID | 20191220161117.1434-2-simon@rozman.si |
---|---|
State | Accepted |
Headers | show |
Series | [Openvpn-devel,v2,1/7] tun.c: make Windows device lookup functions more general | expand |
Compared with v1, difference is updated function comment. Compiled with MSVC. Acked-by: Lev Stipakov <lstipakov@gmail.com> pe 20. jouluk. 2019 klo 18.14 Simon Rozman (simon@rozman.si) kirjoitti: > Signed-off-by: Simon Rozman <simon@rozman.si> > --- > src/openvpn/tun.c | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-) > > diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c > index 0d6f40fe..f90f201d 100644 > --- a/src/openvpn/tun.c > +++ b/src/openvpn/tun.c > @@ -4104,12 +4104,13 @@ get_unspecified_device_guid(const int > device_number, > > /* > * Lookup a --dev-node adapter name in the registry > - * returning the GUID and optional actual_name. > + * returning the GUID and optional actual_name and device type > */ > static const char * > get_device_guid(const char *name, > char *actual_name, > int actual_name_size, > + bool *wintun, > const struct tap_reg *tap_reg, > const struct panel_reg *panel_reg, > struct gc_arena *gc) > @@ -4145,6 +4146,10 @@ get_device_guid(const char *name, > { > buf_printf(&actual, "%s", name); > } > + if (wintun) > + { > + *wintun = tr->wintun; > + } > return BSTR(&ret); > } > > @@ -4154,6 +4159,10 @@ get_device_guid(const char *name, > if (tr) > { > buf_printf(&actual, "%s", name); > + if (wintun) > + { > + *wintun = tr->wintun; > + } > buf_printf(&ret, "%s", tr->guid); > return BSTR(&ret); > } > @@ -4838,7 +4847,7 @@ tap_allow_nonadmin_access(const char *dev_node) > if (dev_node) > { > /* Get the device GUID for the device specified with --dev-node. > */ > - device_guid = get_device_guid(dev_node, actual_buffer, > sizeof(actual_buffer), tap_reg, panel_reg, &gc); > + device_guid = get_device_guid(dev_node, actual_buffer, > sizeof(actual_buffer), NULL, tap_reg, panel_reg, &gc); > > if (!device_guid) > { > @@ -5412,7 +5421,7 @@ netsh_get_id(const char *dev_node, struct gc_arena > *gc) > > if (dev_node) > { > - guid = get_device_guid(dev_node, BPTR(&actual), BCAP(&actual), > tap_reg, panel_reg, gc); > + guid = get_device_guid(dev_node, BPTR(&actual), BCAP(&actual), > NULL, tap_reg, panel_reg, gc); > } > else > { > @@ -6132,7 +6141,7 @@ tun_open_device(struct tuntap *tt, const char > *dev_node, const char **device_gui > if (dev_node) > { > /* Get the device GUID for the device specified with --dev-node. > */ > - *device_guid = get_device_guid(dev_node, actual_buffer, > sizeof(actual_buffer), tap_reg, panel_reg, &gc); > + *device_guid = get_device_guid(dev_node, actual_buffer, > sizeof(actual_buffer), NULL, tap_reg, panel_reg, &gc); > > if (!*device_guid) > { > -- > 2.24.1.windows.2 > > > > _______________________________________________ > Openvpn-devel mailing list > Openvpn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openvpn-devel >
Your patch has been applied to the master branch. Compile tested on Ubuntu 1604 and stared at code. As a side note: the granularity of this one is a bit too fine-grained for my taste - it changes the function, but none of the callers make use of it, so it's somewhat of a no-op and hard to test. commit 9db385f2d179bbc578112e7526b51d424a62aac5 Author: Simon Rozman Date: Fri Dec 20 17:11:12 2019 +0100 tun.c: upgrade get_device_guid() to return the Windows driver type Signed-off-by: Simon Rozman <simon@rozman.si> Acked-by: Lev Stipakov <lstipakov@gmail.com> Message-Id: <20191220161117.1434-2-simon@rozman.si> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19277.html Signed-off-by: Gert Doering <gert@greenie.muc.de> -- kind regards, Gert Doering
diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index 0d6f40fe..f90f201d 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -4104,12 +4104,13 @@ get_unspecified_device_guid(const int device_number, /* * Lookup a --dev-node adapter name in the registry - * returning the GUID and optional actual_name. + * returning the GUID and optional actual_name and device type */ static const char * get_device_guid(const char *name, char *actual_name, int actual_name_size, + bool *wintun, const struct tap_reg *tap_reg, const struct panel_reg *panel_reg, struct gc_arena *gc) @@ -4145,6 +4146,10 @@ get_device_guid(const char *name, { buf_printf(&actual, "%s", name); } + if (wintun) + { + *wintun = tr->wintun; + } return BSTR(&ret); } @@ -4154,6 +4159,10 @@ get_device_guid(const char *name, if (tr) { buf_printf(&actual, "%s", name); + if (wintun) + { + *wintun = tr->wintun; + } buf_printf(&ret, "%s", tr->guid); return BSTR(&ret); } @@ -4838,7 +4847,7 @@ tap_allow_nonadmin_access(const char *dev_node) if (dev_node) { /* Get the device GUID for the device specified with --dev-node. */ - device_guid = get_device_guid(dev_node, actual_buffer, sizeof(actual_buffer), tap_reg, panel_reg, &gc); + device_guid = get_device_guid(dev_node, actual_buffer, sizeof(actual_buffer), NULL, tap_reg, panel_reg, &gc); if (!device_guid) { @@ -5412,7 +5421,7 @@ netsh_get_id(const char *dev_node, struct gc_arena *gc) if (dev_node) { - guid = get_device_guid(dev_node, BPTR(&actual), BCAP(&actual), tap_reg, panel_reg, gc); + guid = get_device_guid(dev_node, BPTR(&actual), BCAP(&actual), NULL, tap_reg, panel_reg, gc); } else { @@ -6132,7 +6141,7 @@ tun_open_device(struct tuntap *tt, const char *dev_node, const char **device_gui if (dev_node) { /* Get the device GUID for the device specified with --dev-node. */ - *device_guid = get_device_guid(dev_node, actual_buffer, sizeof(actual_buffer), tap_reg, panel_reg, &gc); + *device_guid = get_device_guid(dev_node, actual_buffer, sizeof(actual_buffer), NULL, tap_reg, panel_reg, &gc); if (!*device_guid) {
Signed-off-by: Simon Rozman <simon@rozman.si> --- src/openvpn/tun.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)