Attention is currently required from: cron2, flichtenheld, plaisthos, stipa.
Hello cron2, flichtenheld, plaisthos,
I'd like you to reexamine a change. Please visit
http://gerrit.openvpn.net/c/openvpn/+/733?usp=email
to look at the new patch set (#3).
The following approvals got outdated and were removed:
Code-Review+2 by cron2
The change is no longer submittable: Code-Review and checks~ChecksSubmitRule
are unsatisfied now.
Change subject: dco-win: factor out getting dco version
......................................................................
dco-win: factor out getting dco version
As a preparation for multipeer and data_v3,
add function which returns dco version in
machine-readable format.
Change-Id: I8e8ddd35bd3cc3334faf7f57118d1892512ae9f7
Signed-off-by: Lev Stipakov <[email protected]>
---
M src/openvpn/dco_win.c
1 file changed, 57 insertions(+), 28 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/33/733/3
diff --git a/src/openvpn/dco_win.c b/src/openvpn/dco_win.c
index 9224bca..27182b5 100644
--- a/src/openvpn/dco_win.c
+++ b/src/openvpn/dco_win.c
@@ -52,6 +52,57 @@
return tt;
}
+/**
+ * Gets version of dco-win driver
+ *
+ * Fills Major/Minor/Patch fields in a passes OVPN_VERSION
+ * struct. If version cannot be obtained, fields are set to 0.
+ *
+ * @param version pointer to OVPN_VERSION struct
+ * @returns true if version has been obtained, false otherwise
+ */
+static bool
+dco_get_version(OVPN_VERSION *version)
+{
+ CLEAR(*version);
+
+ bool res = false;
+
+ HANDLE h = CreateFile("\\\\.\\ovpn-dco-ver", GENERIC_READ,
+ 0, NULL, OPEN_EXISTING, 0, NULL);
+
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ /* fallback to a "normal" device, this will fail if device is already
in use */
+ h = CreateFile("\\\\.\\ovpn-dco", GENERIC_READ,
+ 0, NULL, OPEN_EXISTING, 0, NULL);
+ }
+
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ goto done;
+ }
+
+ DWORD bytes_returned = 0;
+ if (!DeviceIoControl(h, OVPN_IOCTL_GET_VERSION, NULL, 0,
+ version, sizeof(*version), &bytes_returned, NULL))
+ {
+ goto done;
+ }
+
+ res = true;
+
+done:
+ if (h != INVALID_HANDLE_VALUE)
+ {
+ CloseHandle(h);
+ }
+
+ msg(D_DCO_DEBUG, "dco version: %ld.%ld.%ld", version->Major,
version->Minor, version->Patch);
+
+ return res;
+}
+
bool
ovpn_dco_init(int mode, dco_context_t *dco)
{
@@ -386,39 +437,17 @@
const char *
dco_version_string(struct gc_arena *gc)
{
- OVPN_VERSION version;
- ZeroMemory(&version, sizeof(OVPN_VERSION));
-
- /* first, try a non-exclusive control device, available from 1.3.0 */
- HANDLE h = CreateFile("\\\\.\\ovpn-dco-ver", GENERIC_READ,
- 0, NULL, OPEN_EXISTING, 0, NULL);
-
- if (h == INVALID_HANDLE_VALUE)
+ OVPN_VERSION version = {0};
+ if (dco_get_version(&version))
{
- /* fallback to a "normal" device, this will fail if device is already
in use */
- h = CreateFile("\\\\.\\ovpn-dco", GENERIC_READ,
- 0, NULL, OPEN_EXISTING, 0, NULL);
+ struct buffer out = alloc_buf_gc(256, gc);
+ buf_printf(&out, "%ld.%ld.%ld", version.Major, version.Minor,
version.Patch);
+ return BSTR(&out);
}
-
- if (h == INVALID_HANDLE_VALUE)
+ else
{
return "N/A";
}
-
- DWORD bytes_returned = 0;
- if (!DeviceIoControl(h, OVPN_IOCTL_GET_VERSION, NULL, 0,
- &version, sizeof(version), &bytes_returned, NULL))
- {
- CloseHandle(h);
- return "N/A";
- }
-
- CloseHandle(h);
-
- struct buffer out = alloc_buf_gc(256, gc);
- buf_printf(&out, "%ld.%ld.%ld", version.Major, version.Minor,
version.Patch);
-
- return BSTR(&out);
}
int
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/733?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I8e8ddd35bd3cc3334faf7f57118d1892512ae9f7
Gerrit-Change-Number: 733
Gerrit-PatchSet: 3
Gerrit-Owner: stipa <[email protected]>
Gerrit-Reviewer: cron2 <[email protected]>
Gerrit-Reviewer: flichtenheld <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: cron2 <[email protected]>
Gerrit-Attention: flichtenheld <[email protected]>
Gerrit-Attention: stipa <[email protected]>
Gerrit-MessageType: newpatchset
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel