Browse code

OpenVPN Release 2.7_alpha1

version.m4, ChangeLog, Changes.rst

(ChangeLog in "master" will revert to its normal state of "empty"
after release/2.7 is forked off into its own branch)

Additionally, add test_common.h to tests/unit_tests/openvpn/Makefile.am
(..._SOURCES) so it's packed into the "make dist" tarball

Change-Id: I80a14b77fcc2fabf51af9f2d5ea0c36362cccb91
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>

Frank Lichtenheld authored on 2025/05/26 23:09:00
Showing 4 changed files
... ...
@@ -1,7 +1,759 @@
1 1
 OpenVPN ChangeLog
2
-Copyright (C) 2002-2024 OpenVPN Inc <sales@openvpn.net>
2
+Copyright (C) 2002-2025 OpenVPN Inc <sales@openvpn.net>
3
+
4
+2025.05.28 -- Version 2.7_alpha1
5
+
6
+5andr0 (1):
7
+      Implement server_poll_timeout for socks
8
+
9
+Alexander von Gluck (4):
10
+      Haiku: Introduce basic platform / tun support
11
+      Haiku: Add calls to manage routing table
12
+      Haiku: change del to delete in route command. del is undocumented
13
+      Haiku: Fix short interface path length
14
+
15
+Antonio Quartulli (32):
16
+      disable DCO if --secret is specified
17
+      dco: properly re-initialize dco_del_peer_reason
18
+      dco: bail out when no peer-specific message is delivered
19
+      dco: improve comment about hidden debug message
20
+      dco: print proper message in case of transport disconnection
21
+      dco_linux: update license for ovpn_dco_linux.h
22
+      Update issue templates
23
+      Avoid warning about missing braces when initialising key struct
24
+      dco: don't use NetLink to exchange control packets
25
+      dco: print version to log if available
26
+      dco-linux: remove M_ERRNO flag when printing netlink error message
27
+      multi: don't call DCO APIs if DCO is disabled
28
+      dco-freebsd: use m->instances[] instead of m->hash
29
+      dco-linux: implement dco_get_peer_stats{, multi} API
30
+      configure.ac: fix typ0 in LIBCAPNG_CFALGS
31
+      dco: fix crash when --multihome is used with --proto tcp
32
+      dco: mark peer as deleted from kernel after receiving CMD_DEL_PEER notification
33
+      event/multi: add event_arg object to make event handling more generic
34
+      pass link_socket object to i/o functions
35
+      io_work: convert shift argument to uintptr_t
36
+      io_work: pass event_arg object to event handler in case of socket event
37
+      sitnl: replace NLMSG_TAIL macro with noinline function
38
+      override ai_family if 'local' numeric address was specified
39
+      Adapt socket handling to support listening on multiple sockets
40
+      allow user to specify 'local' multiple times in config files
41
+      dco_linux: extend netlink error cb with extra info
42
+      man: extend --persist-tun section
43
+      dco: pass remoteaddr only for UDP peers
44
+      socket: use remote proto when creating client sockets
45
+      dco_linux: fix peer stats parsing with new ovpn kernel module
46
+      socket: don't transfer bind family to socket in case of ANY address
47
+      dco_linux: avoid bogus text when netlink message is not parsed
48
+
49
+Aquila Macedo (1):
50
+      doc: Correct typos in multiple documentation files
51
+
52
+Arne Schwabe (190):
53
+      Fix connection cookie not including address and fix endianness in test
54
+      Fix unit test of test_pkt on little endian Linux
55
+      Disable DCO when TLS mode is not used
56
+      Ignore connection attempts while server is shutting down
57
+      Improve debug logging of DCO swap key message and Linux dco_new_peer
58
+      Trigger a USR1 if dco_update_keys fails
59
+      Set DCO_NOT_INSTALLED also for keys not in the get_key_scan range
60
+      Ensure that argument to parse_line has always space for final sentinel
61
+      Improve documentation on user/password requirement and unicodize function
62
+      Eliminate or comment empty blocks and switch fallthrough
63
+      Remove unused gc_arena
64
+      Fix corner case that might lead to leaked file descriptor
65
+      Deprecate NTLMv1 proxy auth method.
66
+      Use include "buffer.h" instead of include <buffer.h>
67
+      Ensure that dco keepalive and mssfix options are also set in pure p2p mode
68
+      Make management password check constant time
69
+      Rename TM_UNTRUSTED to TM_INITIAL, always start session in TM_INITIAL rather than TM_ACTIVE or TM_INITIAL
70
+      Move dco_installed back to link_socket from link_socket.info.actual
71
+      Do not set nl socket buffer size
72
+      Also drop incoming dco packet content when dropping the packet
73
+      Improve logging when seeing a message for an unkown peer
74
+      Ignore OVPN_DEL_PEER_REASON_USERSPACE to avoid race conditions
75
+      Replace custom min macro and use more C99 style in man_remote_entry_get
76
+      Replace realloc with new gc_realloc function
77
+      Add connect-freq-initial option to limit initial connection responses
78
+      Log peer-id if loglevel is D_DCO_DEBUG and dco is enabled
79
+      Deprecate OCC checking
80
+      Workaround: make ovpn-dco more reliable
81
+      Fix unaligned access in auth-token
82
+      Update LibreSSL to 3.7.0 in Github actions
83
+      Add printing USAN stack trace on github actions
84
+      Fix LibreSSL not building in Github Actions
85
+      Add missing stdint.h includes in unit tests files
86
+      Combine extra_tun/frame parameter of frame_calculate_payload_overhead
87
+      Update the last sections in the man page to a be a bit less outdated
88
+      Add building unit tests with mingw to github actions
89
+      Revise the cipher negotiation info about OpenVPN3 in the man page
90
+      Exit if a proper message instead of segfault on Android without management
91
+      Use proper print format/casting when converting msg_channel handle
92
+      Reduce initialisation spam from verb <= 3 and print summary instead
93
+      Dynamic tls-crypt for secure soft_reset/session renegotiation
94
+      Set netlink socket to be non-blocking
95
+      Ensure n = 2 is set in key2 struct in tls_crypt_v2_unwrap_client_key
96
+      Fix memory leaks in open_tun_dco()
97
+      Fix memory leaks in HMAC initial packet generation
98
+      Use key_state instead of multi for tls_send_payload parameter
99
+      Make sending plain text control message session aware
100
+      Only update frame calculation if we have a valid link sockets
101
+      Improve description of compat-mode
102
+      Simplify --compress parsing in options.c
103
+      Refuse connection if server pushes an option contradicting allow-compress
104
+      Add 'allow-compression stub-only' internally for DCO
105
+      Parse compression options and bail out when compression is disabled
106
+      Remove unused variable line
107
+      Add Apache2 linking with for new commits
108
+      Fix compile error on TARGET_ANDROID
109
+      Fix use-after-free with EVP_CIPHER_free
110
+      Remove key_type argument from generate_key_random
111
+      add basic CMake based build
112
+      Avoid unused function warning/error on FreeBSD (and potientially others)
113
+      Do not blindly assume python3 is also the interpreter that runs rst2html
114
+      Only add -Wno-stringop-truncation on supported compilers
115
+      fix warning with gcc 12.2.0 (compiler bug?)
116
+      Fix CR_RESPONSE mangaement message using wrong key_id
117
+      Print a more user-friendly error when tls-crypt-v2 client auth fails
118
+      Ignore Ipv6 route delete request on Android and set ipv4 verbosity to 7
119
+      Mock openvpn_exece on win32 also for test_tls_crypt
120
+      Check if the -wrap argument is actually supported by the platform's ld
121
+      Revert commit 423ced962d
122
+      Implement using --peer-fingerprint without CA certificates
123
+      show extra info for OpenSSL errors
124
+      Remove ability to use configurations without TLS by default
125
+      Add warning for the --show-groups command that some groups are missing
126
+      Print peer temporary key details
127
+      Add warning if a p2p NCP client connects to a p2mp server
128
+      Remove openssl engine method for loading the key
129
+      Add undefined and abort on error to clang sanitize builds
130
+      Add --enable-werror to all platforms in Github Actions
131
+      Remove saving initial frame code
132
+      Double check that we do not use a freed buffer when freeing a session
133
+      Fix using to_link buffer after freed
134
+      Remove CMake custom compiler flags for RELEASE and DEBUG build
135
+      Do not check key_state buffers that are in S_UNDEF state
136
+      Remove unused function prototype crypto_adjust_frame_parameters
137
+      Introduce report_command_status helper function
138
+      Log SSL alerts more prominently
139
+      Remove unused/unneeded/add missing defines from configure/cmake
140
+      Document tls-exit option mainly as test option
141
+      Remove dead remains of extract_x509_field_test
142
+      Replace character_class_debug with proper unit test
143
+      Remove TEST_GET_DEFAULT_GATEWAY as it duplicates --show-gateway
144
+      Fix check_session_buf_not_used using wrong index
145
+      Add missing check for nl_socket_alloc failure
146
+      Add check for nice in cmake config
147
+      Minimal Solaris/OpenIndiana support to Cmake and clean up -Werror
148
+      Remove compat versionhelpers.h and remove cmake/configure check for it
149
+      Rename state_change to continue_tls_process
150
+      Move tls_get_cipher_name_pair and get_num_elements to ssl_utils.c
151
+      Fix building mbed TLS with CMake and allow specifying custom directories
152
+      Extend the error message when TLS 1.0 PRF fails
153
+      Fix unaligned access in macOS, FreeBSD, Solaris hwaddr
154
+      Check PRF availability on initialisation and add --force-tls-key-material-export
155
+      Make it more explicit and visible when pkg-config is not found
156
+      Clarify that the tls-crypt-v2-verify has a very limited env set
157
+      Move get_tmp_dir to win32-util.c and error out on failure
158
+      Implement the --tls-export-cert feature
159
+      Use mingw compile definition also to unit tests
160
+      Add test_ssl unit test and test export of PEM to file
161
+      Remove conditional text for Apache2 linking exception
162
+      Fix ssl unit tests on OpenSSL 1.0.2
163
+      Ensure that all unit tests use unbuffered stdout and stderr
164
+      Allow unit tests to fall back to hard coded location
165
+      Add unit test for encrypting/decrypting data channel
166
+      Print SSL peer signature information in handshake debug details
167
+      Implement generating TLS 1.0 PRF using new OpenSSL 3.0 APIs
168
+      Turn dead list test code into unit test
169
+      Use snprintf instead of sprintf for get_ssl_library_version
170
+      Fix snprintf/swnprintf related compiler warnings
171
+      Add bracket in fingerprint message and do not warn about missing verification
172
+      Match ifdef for get_sigtype function with if ifdef of caller
173
+      Remove/combine redundant call of EVP_CipherInit before EVP_CipherInit_Ex
174
+      Add missing EVP_KDF_CTX_free in ssl_tls1_PRF
175
+      Replace macos11 with macos14 in github runners
176
+      Remove openvpn_snprintf and similar functions
177
+      Repeat the unknown command in errors from management interface
178
+      Only run coverity scan in OpenVPN/OpenVPN repository
179
+      Support OpenBSD with cmake
180
+      Workaround issue in LibreSSL crashing when enumerating digests/ciphers
181
+      Remove OpenSSL 1.0.2 support
182
+      Remove custom TLS 1.0 PRF implementation only used by LibreSSL/wolfSSL
183
+      Allow the TLS session to send out TLS alerts
184
+      Properly handle null bytes and invalid characters in control messages
185
+      Allow trailing \r and \n in control channel message
186
+      Add Ubuntu 24.04 runner to Github Actions
187
+      Implement support for AEAD tag at the end
188
+      Remove check for anonymous unions from configure and cmake config
189
+      Make read/write_tun_header static
190
+      Avoid SIGUSR1 to SIGHUP remapping when the configuration is read from stdin
191
+      Move to common backend_driver type in struct tuntap
192
+      Introduce DRIVER_AFUNIX backend for use with lwipovpn
193
+      Change dev null to be a driver type instead of a special mode of tun/tap
194
+      Use print_tun_backend_driver instead of custom code to print type
195
+      Automatically enable ifconfig-exec/route-exec behaviour for afunix tun/tap
196
+      Ensure that the AF_UNIX socket pair has at least 65k of buffer space
197
+      Fix check for CMake not detecting struct cmsg
198
+      Remove null check after checking for checking for did_open_tun
199
+      Remove a large number of unused structs and functions
200
+      Remove unused methods write_key/read_key
201
+      Refuse clients if username or password is longer than USER_PASS_LEN
202
+      Move should_trigger_renegotiation into its own function
203
+      Change --reneg-bytes and --reneg-packets to 64 bit counters
204
+      Use XOR instead of concatenation for calculation of IV from implicit IV
205
+      Trigger renegotiation of data key if getting close to the AEAD usage limit
206
+      Implement HKDF expand function based on RFC 8446
207
+      Split init_key_ctx_bi into send/recv init
208
+      Move initialisation of implicit IVs to init_key_ctx_bi methods
209
+      Change internal id of packet id to uint64
210
+      Add small unit test for buf_chomp
211
+      Add building/testing with msbuild and the clang compiler
212
+      Ensure that Python3 is available
213
+      Change API of init_key_ctx to use struct key_parameters
214
+      Allow DEFAULT in data-ciphers and report both expanded and user set option
215
+      Do not attempt to decrypt packets anymore after 2**36 failed decryptions
216
+      Add methods to read/write packet ids for epoch data
217
+      Implement methods to generate and manage OpenVPN Epoch keys
218
+      Rename aead-tag-at-end to aead-epoch
219
+      Improve peer fingerprint documentation
220
+      Remove comparing username to NULL in tls_lock_username
221
+      Print warnings/errors when numerical parameters cannot be parsed
222
+      Add unit tests for atoi parsing options helper
223
+      Improve error reporting from AF_UNIX tun/tap support
224
+      Fix typo in positive_atoi
225
+      Fix oversight of link socket code change in Android code path
226
+      Implement epoch key data format
227
+      Extend the unit test for data channel packets with aead limit tests
228
+      Add (fake) Android cmake building
229
+      Add android build to Github Actions
230
+      Reconnect when TCP is on use on network-change management command
231
+      Implement override-username
232
+      Fix incorrect condition for checking password related check
233
+      Directly use _countof in array initialisation
234
+      Improve documentation for override-username
235
+      Mention address if not unspecific on DNS failure
236
+      Do not leave half-initialised key wrap struct when dynamic tls-crypt fails
237
+      Allow tls-crypt-v2 to be setup only on initial packet of a session
238
+      Use SSL_get0_peer_signature_name instead of SSL_get_peer_signature_nid
239
+      Use USER_PASS_LEN instead of TLS_USERNAME_LEN for override-username
240
+      Also print key agreement when printing negotiated details
241
+      Fix mbed TLS key exporter functionality in 3.6.x and cmake
242
+      Make --dh none behaviour default if not specified
243
+
244
+Ben Boeckel (1):
245
+      console_systemd: remove the timeout when using 'systemd-ask-password'
246
+
247
+Christoph Schug (1):
248
+      Update documentation references in systemd unit files
249
+
250
+Corubba Smith (3):
251
+      Support IPv6 towards port-share proxy receiver
252
+      Document x509-username-fields oid usage
253
+      Remove x509-username-fields uppercasing
254
+
255
+David Sommerseth (4):
256
+      ssl_verify: Fix memleak if creating deferred auth control files fails
257
+      ntlm: Clarify details on NTLM phase 3 decoding
258
+      Remove --tls-export-cert
259
+      Remove superfluous x509_write_pem()
260
+
261
+Franco Fichtner (1):
262
+      Allow to set ifmode for existing DCO interfaces in FreeBSD
263
+
264
+Frank Lichtenheld (174):
265
+      options.c: fix format security error when compiling without optimization
266
+      options.c: update usage description of --cipher
267
+      Update copyright year to 2023
268
+      xkey_pkcs11h_sign: fix dangling pointer
269
+      options: Always define options->management_flags
270
+      check_engine_keys: make pass with OpenSSL 3
271
+      documentation: update 'unsupported options' section
272
+      Changes.rst: document removal of --keysize
273
+      Windows: fix unused function setenv_foreign_option
274
+      Windows: fix unused variables in delete_route_ipv6
275
+      Windows: fix wrong printf format in x_check_status
276
+      Windows: fix unused variable in win32_get_arch
277
+      configure: enable DCO by default on FreeBSD/Linux
278
+      Windows: fix signedness errors with recv/send
279
+      configure: fix formatting of --disable-lz4 and --enable-comp-stub
280
+      tests/unit_tests: Fix 'make distcheck' with subdir-objects enabled
281
+      GHA: remove Ubuntu 18.04 builds
282
+      vcpkg: request "tools" feature of openssl for MSVC build
283
+      Do not include net/in_systm.h
284
+      version.sh: remove
285
+      doc: run rst2* with --strict to catch warnings
286
+      man page: Remove cruft from --topology documentation
287
+      tests: do not include t_client.sh in dist
288
+      vcpkg-ports/pkcs11-helper: Make compatible with mingw build
289
+      vcpkg-ports/pkcs11-helper: Convert CONTROL to vcpkg.json
290
+      vcpkg-ports/pkcs11-helper: reference upstream PRs in patches
291
+      dco_linux: properly close dco version file
292
+      DCO: fix memory leak in dco_get_peer_stats_multi for Linux
293
+      Fix two unused assignments
294
+      sample-plugins: Fix memleak in client-connect example plugin
295
+      tests: Allow to override openvpn binary used
296
+      test_buffer: add tests for buf_catrunc and its caller format_hex_ex
297
+      buffer: use memcpy in buf_catrunc
298
+      options: remove --key-method from usage message
299
+      msvc-generate: include version.m4.in in tarball
300
+      dist: add more missing files only used in the MSVC build
301
+      vcpkg-ports/pkcs11-helper: rename patches to make file names shorter
302
+      unit_tests: Add missing cert_data.h to source list for unit tests
303
+      dist: Include all documentation in distribution
304
+      CMake: Add complete MinGW and MSVC build
305
+      Remove all traces of the previous MSVC build system
306
+      CMake: Add /Brepro to MSVC link options
307
+      GHA: update to run-vcpkg@v11
308
+      test_tls_crypt: Improve mock() usage to be more portable
309
+      CMake: Throw a clear error when config.h in top-level source directory
310
+      CMake: Support doc builds on Windows machines that do not have .py file association
311
+      Remove old Travis CI related files
312
+      README.cmake.md: Add new documentation for CMake buildsystem
313
+      GHA: refactor mingw UTs and add missing tls_crypt
314
+      GHA: Add macos-13
315
+      options: Do not hide variables from parent scope
316
+      pkcs11_openssl: Disable unused code
317
+      route: Fix overriding return value of add_route3
318
+      CMake: various small non-functional improvements
319
+      GHA: do not trigger builds in openvpn-build anymore
320
+      Remove --no-replay option
321
+      GHA: new workflow to submit scan to Coverity Scan service
322
+      doc: fix argument name in --route-delay documentation
323
+      Change type of frame.mss_fix to uint16_t
324
+      Remove last uses of inet_ntoa
325
+      mss/mtu: make all size calculations use size_t
326
+      dev-tools/gerrit-send-mail.py: tool to send Gerrit patchsets to Patchwork
327
+      gerrit-send-mail.py: Add patch version to subject
328
+      Add mbedtls3 GHA build
329
+      platform.c: Do not depend Windows build on HAVE_CHDIR
330
+      sample-keys: renew for the next 10 years
331
+      GHA: clean up libressl builds with newer libressl
332
+      configure.ac: Remove unused AC_TYPE_SIGNAL macro
333
+      documentation: remove reference to removed option --show-proxy-settings
334
+      unit_tests: remove includes for mock_msg.h
335
+      buffer: add documentation for string_mod and extend related UT
336
+      tests: disable automake serial_tests
337
+      documentation: improve documentation of --x509-track
338
+      configure: allow to disable NTLM
339
+      configure: enable silent rules by default
340
+      misc: make get_auth_challenge static
341
+      Remove support for NTLM v1 proxy authentication
342
+      GHA: increase verbosity for make check
343
+      NTLM: add length check to add_security_buffer
344
+      NTLM: increase size of phase 2 response we can handle
345
+      Fix various 'Uninitialized scalar variable' warnings from Coverity
346
+      proxy-options.rst: Add proper documentation for --http-proxy-user-pass
347
+      NTLM: when NTLMv1 is requested, try NTLMv2 instead
348
+      buf_string_match_head_str: Fix Coverity issue 'Unsigned compared against 0'
349
+      --http-proxy-user-pass: allow to specify in either order with --http-proxy
350
+      test_user_pass: new UT for get_user_pass
351
+      test_user_pass: Add UTs for character filtering
352
+      gerrit-send-mail: Make output consistent across systems
353
+      README.cmake.md: Document minimum required CMake version for --preset
354
+      documentation: Update and fix documentation for --push-peer-info
355
+      documentation: Fixes for previous fixes to --push-peer-info
356
+      test_user_pass: add basic tests for static/dynamic challenges
357
+      Fix typo --data-cipher-fallback
358
+      samples: Remove tls-*.conf
359
+      check_compression_settings_valid: Do not test for LZ4 in LZO check
360
+      t_client.sh: Allow to skip tests
361
+      gerrit-send-mail: add missing Signed-off-by
362
+      Update Copyright statements to 2024
363
+      GHA: general update March 2024
364
+      samples: Update sample configurations
365
+      documentation: make section levels consistent
366
+      phase2_tcp_server: fix Coverity issue 'Dereference after null check'
367
+      script-options.rst: Update ifconfig_* variables
368
+      crypto_backend: fix type of enc parameter
369
+      tests: fork default automake test-driver
370
+      forked-test-driver: Show test output always
371
+      Change default of "topology" to "subnet"
372
+      Use topology default of "subnet" only for server mode
373
+      Fix 'binary or' vs 'boolean or' related to server_bridge_proxy_dhcp
374
+      configure: update old copy of pkg.m4
375
+      LZO: do not use lzoutils.h macros
376
+      test_user_pass: Fix building with --enable-systemd
377
+      Remove "experimental" denotation for --fast-io
378
+      t_server_null.sh: Fix failure case
379
+      configure: Add -Wstrict-prototypes and -Wold-style-definition
380
+      configure: Try to detect LZO with pkg-config
381
+      configure: Switch to C11 by default
382
+      Fix missing spaces in various messages
383
+      console_systemd: rename query_user_exec to query_user_systemd
384
+      configure: Allow to detect git checkout if .git is not a directory
385
+      GHA: Configure Renovate
386
+      configure: Try to use pkg-config to detect mbedTLS
387
+      tun: use is_tun_p2p more consistently
388
+      Various fixes for -Wconversion errors
389
+      generate_auth_token: simplify code
390
+      GHA: Update dependency Mbed-TLS/mbedtls to v3.6.1
391
+      GHA: Enable t_server_null tests
392
+      configure: Handle libnl-genl and libcap-ng consistent with other libs
393
+      configure: Review use of standard AC macros
394
+      socket: Change return types of link_socket_write* to ssize_t
395
+      GHA: Pin dependencies
396
+      GHA: Update macOS runners
397
+      GHA: Simplify macOS builds
398
+      Remove support for compression on send
399
+      Fix wrong doxygen comments
400
+      Various typo fixes
401
+      macOS: Assume that net/if_utun.h is always present
402
+      Fix some formatting related to if/else and macros
403
+      Fix memory leak in ntlm_support
404
+      forward: Fix potential unaligned access in drop_if_recursive_routing
405
+      GHA: General update December 2024
406
+      Review doxygen warnings
407
+      Regenerate doxygen config file with doxygen -u
408
+      Fix 'uninitialized pointer read' in openvpn_decrypt_aead
409
+      ssl_openssl: Clean up unused functions and add missing "static"
410
+      Fix some trivial sign-compare compiler warnings
411
+      tls_crypt_v2_write_client_key_file: Fix missing-field-initializers compiler warning
412
+      openvpnserv: Fix some inconsistent usages of TEXT()
413
+      Fix doxygen warnings in crypto_epoch.h
414
+      GHA: Drop Ubuntu 20.04 and other maintenance
415
+      GHA: Publish Doxygen documentation to Github Pages
416
+      Add more 'intentional fallthrough' comments
417
+      Remove various unused function parameters
418
+      Remove unused function check_subnet_conflict
419
+      options: Cleanup and simplify options_postprocess_verify_ce
420
+      Apply text-removal.sh script to Windows codebase
421
+      openvpnserv: Clean up use of TEXT() from DNS patches
422
+      Post tchar.h removal cleanup
423
+      Fix compatibility with mbedTLS 2.28.10+ and 3.6.3+
424
+      t_server_null_default.rc: Add some tests with --data-ciphers
425
+      GHA: Pin version of CMake for all builds
426
+      GHA: Dependency and Actions update April 2025
427
+      GHA: Make sure renovate notifies us about AWS LC releases
428
+      Doxygen: Fix obsolete links to OpenSSL documentation
429
+      GHA: Use CMake 4.0 and apply required fixes
430
+      Doxygen: Clean up tls-crypt documentation
431
+      Doxygen: Remove useless Python information
432
+      Manually reformat some long trailing comments
433
+      CMake: Make sure to treat UNIT_TEST_SOURCEDIR as path
434
+      CMake: Sync list of compiler flags with configure.ac
435
+      CMake: Reorganize header and symbol tests
436
+      GHA: Dependency and Actions update May 2025
437
+      Doxygen: Fix missing parameter warnings
438
+      Changes.rst: Collect, fix, and improve entries for 2.7 release
439
+
440
+George Pchelkin (1):
441
+      fix typo: dhcp-options to dhcp-option in vpn-network-options.rst
442
+
443
+Gert Doering (21):
444
+      Change version.m4 to 2.7_git
445
+      bandaid fix for TCP multipoint server crash with Linux-DCO
446
+      Undo FreeBSD 12.x workaround on IPv6 ifconfig for 12.4 and up
447
+      Reduce logspam about 'dco_update_keys: peer_id=-1' in p2p server mode
448
+      Fix OVPN_DEL_PEER_REASON_TRANSPORT_DISCONNECT breakage on FreeBSD+DCO
449
+      Repair special-casing of EEXIST for Linux/SITNL route install
450
+      Get rid of unused 'bool tuntap_buffer' arguments.
451
+      FreeBSD 12.x workaround for IPv6 ifconfig is needed on 12.4 as well
452
+      Make received OCC exit messages more visible in log.
453
+      OpenBSD: repair --show-gateway
454
+      get_default_gateway() HWADDR overhaul
455
+      make t_server_null 'server alive?' check more robust
456
+      t_client.sh: conditionally skip ifconfig+route check
457
+      send uname() release as IV_PLAT_VER= on non-windows versions
458
+      options: add IPv4 support to '--show-gateway <arg>'
459
+      get_default_gateway(): implement platform support for Linux/SITNL
460
+      get_default_gateway(): implement platform support for Linux/IPROUTE2
461
+      add missing (void) to win32 function declarations
462
+      add more (void) to windows specific function prototypes and declarations
463
+      Make 'lport 0' no longer sufficient to do '--bind'.
464
+      Add information-gathering about DNS resolvers configured to t_client.sh(.in)
465
+
466
+Gianmarco De Gregori (17):
467
+      Persist-key: enable persist-key option by default
468
+      Minor fix to process_ip_header
469
+      Http-proxy: fix bug preventing proxy credentials caching
470
+      Ensures all params are ready before invoking dco_set_peer()
471
+      Route: remove incorrect routes on exit
472
+      Fix for msbuild/mingw GHA failures
473
+      multiproto: move generic event handling code in dedicated files
474
+      Fix PASS_BY_VALUE issue in options_postprocess_mutate_le()
475
+      mroute: adapt to new protocol handling and hashing improvements
476
+      mroute/management: repair mgmt client-kill for mroute with proto
477
+      Add support for simultaneous use of UDP and TCP sockets
478
+      Rename occurences of 'struct link_socket' from 'ls' to 'sock'
479
+      Fix FreeBSD-DCO and Multisocket interaction
480
+      manpage: fix HTML format for --local
481
+      Fix dco_win and multisocket interaction
482
+      dco_linux: Introduce new uAPIs
483
+      Explicit-exit-notify and multisocket interaction
484
+
485
+Heiko Hund (21):
486
+      dns option: allow up to eight addresses per server
487
+      work around false positive warning with mingw 12
488
+      dns option: remove support for exclude-domains
489
+      cmake: create and link compile_commands.json file
490
+      cmake: symlink whole build dir not just .json file
491
+      Windows: enforce 'block-local' with WFP filters
492
+      add and send IV_PROTO_DNS_OPTION_V2 flag
493
+      dns: store IPv4 addresses in network byte order
494
+      dns: clone options via pointer instead of copy
495
+      service: add utf8to16 function that takes a size
496
+      dns: support multiple domains without DHCP
497
+      dns: do not use netsh to set name server addresses
498
+      win: calculate address string buffer size
499
+      win: implement --dns option support with NRPT
500
+      dns: apply settings via script on unixoid systems
501
+      fix typo in haikuos dns-updown script
502
+      dns: support running up/down command with privsep
503
+      dns: don't publish env vars to non-dns scripts
504
+      dns: fix potential NULL pointer dereference
505
+      win: match search domains when creating exclude rules
506
+      win: fix collecting DNS exclude data
507
+
508
+Heiko Wundram (1):
509
+      Implement Windows CA template match for Crypto-API selector
510
+
511
+Ilia Shipitsin (3):
512
+      src/openvpn/init.c: handle strdup failures
513
+      sample/sample-plugins/defer/multi-auth.c: handle strdup errors
514
+      tests/unit_tests/openvpn/test_auth_token.c: handle strdup errors
515
+
516
+Ilya Shipitsin (1):
517
+      src/openvpn/dco_freebsd.c: handle malloc failure
518
+
519
+Juliusz Sosinowicz (1):
520
+      Change include order for tests
521
+
522
+Klemens Nanni (1):
523
+      Fix tmp-dir documentation
524
+
525
+Kristof Provost (10):
526
+      Read DCO traffic stats from the kernel
527
+      dco: Update counters when a client disconnects
528
+      Read the peer deletion reason from the kernel
529
+      dco: cleanup FreeBSD dco_do_read()
530
+      options.c: enforce a minimal fragment size
531
+      configure: improve FreeBSD DCO check
532
+      dco: define OVPN_DEL_PEER_REASON_TRANSPORT_DISCONNECT on FreeBSD
533
+      dco: print FreeBSD version
534
+      DCO: support key rotation notifications
535
+      dco-freebsd: dynamically re-allocate buffer if it's too small
536
+
537
+Lev Stipakov (63):
538
+      Rename dco_get_peer_stats to dco_get_peer_stats_multi
539
+      management: add timer to output BYTECOUNT
540
+      Introduce dco_get_peer_stats API and Windows implementation
541
+      git-version.py: proper support for tags
542
+      msvc: upgrade to Visual Studio 2022
543
+      tun: move print_windows_driver() out of tun.h
544
+      openvpnmsica: remove dco installer custom actions
545
+      openvpnmsica: remove unused declarations
546
+      openvpnmsica: fix adapters discovery logic for DCO
547
+      Allow certain DHCP options to be used without DHCP server
548
+      dco-win: use proper calling convention on x86
549
+      Improve format specifier for socket handle in Windows
550
+      Disable DCO if proxy is set via management
551
+      Add logging for windows driver selection process
552
+      Avoid management log loop with verb >= 6
553
+      Support --inactive option for DCO
554
+      Fix '--inactive <time> 0' behavior for DCO
555
+      Print DCO client stats on SIGUSR2
556
+      Don't overwrite socket flags when using DCO on Windows
557
+      Support of DNS domain for DHCP-less drivers
558
+      dco-win: support for --dev-node
559
+      tapctl: generate driver-specific adapter names
560
+      openvpnmsica: link C runtime statically
561
+      tun.c: enclose DNS domain in single quotes in WMIC call
562
+      manage.c: document missing KID parameter
563
+      Set WINS servers via interactice service
564
+      CMake: fix broken daemonization and syslog functionality
565
+      Warn user if INFO control command is too long
566
+      CMake: fix HAVE_DAEMON detection on Linux
567
+      dco-win: get driver version
568
+      dco: warn if DATA_V1 packets are sent to userspace
569
+      config.h: fix incorrect defines for _wopen()
570
+      Make --dns options apply for tap-windows6 driver
571
+      Warn if pushed options require DHCP
572
+      tun.c: don't attempt to delete DNS and WINS servers if they're not set
573
+      win32: Enforce loading of plugins from a trusted directory
574
+      interactive.c: disable remote access to the service pipe
575
+      interactive.c: Fix potential stack overflow issue
576
+      Disable DCO if proxy is set via management
577
+      misc.c: remove unused code
578
+      interactive.c: Improve access control for gui<->service pipe
579
+      Use a more robust way to get dco-win version
580
+      dco: better naming for function parameters
581
+      repair DNS address option
582
+      dco-win: factor out getting dco version
583
+      dco-win: enable mode server on supported configuration
584
+      dco-win: simplify do_close_link_socket()
585
+      route.c: change the signature of get_default_gateway()
586
+      route.c: improve get_default_gateway() logic on Windows
587
+      mudp.c: keep offset value when resetting buffer
588
+      multi.c: add iroutes after dco peer is added
589
+      dco-win: disable dco in server mode if multiple --local options defined
590
+      dco-win: multipeer support
591
+      dco-win: simplify control packets prepend code
592
+      dco-win: kernel notifications
593
+      dco-win: support for iroutes
594
+      dco-win: Fix crash when cancelling pending operation
595
+      Remove UINT8_MAX definition
596
+      win: allow OpenVPN service account to use any command-line options
597
+      ssl_openssl.c: Prevent potential double-free
598
+      win: refactor get_windows_version()
599
+      win: create adapter on demand
600
+      win: remove Wintun support
601
+
602
+Marc Becker (5):
603
+      unify code path for adding PKCS#11 providers
604
+      use new pkcs11-helper interface to add providers
605
+      special handling for PKCS11 providers on win32
606
+      vcpkg-ports/pkcs11-helper: support loader flags
607
+      vcpkg-ports/pkcs11-helper: bump to version 1.30
608
+
609
+Marco Baffo (3):
610
+      tun: removed unnecessary route installations
611
+      IPv6 MADDR LOG: Wrap IPv6 addresses in square brackets and print port when the port is specified
612
+      get_default_gateway(): Prevent passing IPV4_INVALID_ADDR as a destination
613
+
614
+Martin Rys (1):
615
+      openvpn-[client|server].service: Remove syslog.target
616
+
617
+Matthias Andree (1):
618
+      make dist: Ship ovpn_dco_freebsd.h, too
619
+
620
+Max Fillinger (10):
621
+      Correct tls-crypt-v2 metadata length in man page
622
+      Fix message for too long tls-crypt-v2 metadata
623
+      Add support for mbedtls 3.X.Y
624
+      Update README.mbedtls
625
+      Disable TLS 1.3 support with mbed TLS
626
+      Enable key export with mbed TLS 3.x.y
627
+      Remove license warning from README.mbedtls
628
+      mbedtls: Remove support for old TLS versions
629
+      mbedtls: Warn if --tls-version-min is too low
630
+      Remove HAVE_EXPORT_KEYING_MATERIAL macro
631
+
632
+Michael Baentsch (1):
633
+      using OpenSSL3 API for EVP PKEY type name reporting
634
+
635
+Michael Nix (1):
636
+      fix typo in help text: --ignore-unknown-option
637
+
638
+Qingfang Deng (1):
639
+      dco: fix source IP selection when multihome
640
+
641
+Ralf Lici (3):
642
+      Fix check_addr_clash argument order
643
+      Handle missing DCO peer by restarting the session
644
+      Implement ovpn version detection
645
+
646
+Reynir Björnsson (2):
647
+      protocol_dump: tls-crypt support
648
+      Only schedule_exit() once
649
+
650
+Rémi Farault (1):
651
+      Add calls to nvlist_destroy to avoid leaks
652
+
653
+Samuli Seppänen (6):
654
+      Add t_server_null test suite
655
+      t_server_null: multiple improvements and fixes
656
+      t_server_null: persist test log files
657
+      t_server_null: forcibly kill misbehaving servers
658
+      t_server_null: use wait instead of marker files
659
+      Add lwip support to t_server_null
660
+
661
+Selva Nair (63):
662
+      Reduce default restart pause to 1 second
663
+      Do not include auth-token in pulled option digest
664
+      Persist DCO client data channel traffic stats on restart
665
+      Add remote-count and remote-entry query via management
666
+      Permit unlimited connection entries and remotes
667
+      Use a template for 'unsupported management commands' error
668
+      Allow skipping multple remotes via management interface
669
+      Properly unmap ring buffer file-map in interactive service
670
+      Use undo_lists for saving ring-buffer handles in interactive service
671
+      Cleanup: Close duplicated handles in interactive service
672
+      Preparing for better signal handling: some code refactoring
673
+      Refactor signal handling in openvpn_getaddrinfo
674
+      Use IPAPI for setting ipv6 routes when iservice not available
675
+      Fix signal handling on Windows
676
+      Assign and honour signal priority order
677
+      Distinguish route addition errors from route already exists
678
+      Propagate route error to initialization_completed()
679
+      Include CE_DISABLED status of remote in "remote-entry-get" response
680
+      Define and use macros for route addition status code
681
+      Warn when pkcs11-id or pkcs11-id-management options are ignored
682
+      Cleanup route error and debug logging on Windows
683
+      Fix one more 'existing route may get deleted' case
684
+      block-dns using iservice: fix a potential double free
685
+      Conditionally add subdir-objects option to automake
686
+      Build unit tests in mingw Windows build
687
+      cyryptapi.c: log the selected certificate's name
688
+      cryptoapi.c: remove pre OpenSSL-3.01 support
689
+      cryptoapi.c: simplify parsing of thumbprint hex string
690
+      Option --cryptoapicert: support issuer name as a selector
691
+      Add a unit test for functions in cryptoapi.c
692
+      Do not save pointer to 'struct passwd' returned by getpwnam etc.
693
+      Bugfix: Convert ECDSA signature form pkcs11-helper to DER encoded form
694
+      Import some sample certificates into Windows store for testing
695
+      Add tests for finding certificates in Windows cert store
696
+      Refactor SSL_CTX_use_CryptoAPI_certificate()
697
+      Add a test for signing with certificates in Windows store
698
+      Unit tests: add test for SSL_CTX_use_Cryptoapi_certificate()
699
+      Improve error message on short read from socks proxy
700
+      Make error in setting metric for IPv6 interface non-fatal
701
+      Bug-fix: segfault in dco_get_peer_stats()
702
+      Move digest_sign_verify out of test_cryptoapi.c
703
+      Unit tests: Test for PKCS#11 using a softhsm2 token
704
+      Enable pkcs11 an dtest_pkcs11 in github actions
705
+      Make cert_data.h and test_cryptoapi/pkcs11.c MSVC compliant
706
+      Format Windows error message in Unicode
707
+      Bugfix: dangling pointer passed to pkcs11-helper
708
+      Correctly handle Unicode names for exit event
709
+      Interactive service: do not force a target desktop for openvpn.exe
710
+      Improve signal handling using POSIX sigaction
711
+      signal_reset(): combine check and reset operations
712
+      Log OpenSSL errors on failure to set certificate
713
+      Document that auth-user-pass may be inlined
714
+      test_pkcs11.c: set file offset to 0 after ftruncate
715
+      proxy.c: Clear sensitive data after use
716
+      Protect cached username, password and token on client
717
+      Interpret --key and --cert option argument as URI
718
+      Add a test for loading certificate and key to ssl context
719
+      Add a test for loading certificate and key using file: URI
720
+      Initialize before use struct user_pass in ui_reader()
721
+      Static-challenge concatenation option
722
+      Add test for static-challenge concatenation option
723
+      Fix more of uninitialized struct user_pass local vars
724
+      Do not stop reading from file/uri when OPENSSL_STORE_load() returns error
725
+
726
+Sergey Korolev (1):
727
+      dco-linux: fix counter print format
728
+
729
+Shubham Mittal (2):
730
+      Add compatibility to build OpenVPN with AWS-LC.
731
+      Adding AWS-LC to the OpenVPN CI
732
+
733
+Shuji Furukawa (1):
734
+      Improve shuffling algorithm of connection list
735
+
736
+Steffan Karger (2):
737
+      Fix IPv6 route add/delete message log level
738
+      Improve data channel crypto error messages
739
+
740
+Timo Rothenpieler (1):
741
+      Don't clear capability bounding set on capng_change_id
742
+
743
+corubba (2):
744
+      Fix IPv6 in port-share journal
745
+      Fix port-share journal doc
746
+
747
+orbea (1):
748
+      configure: disable engines if OPENSSL_NO_ENGINE is defined
749
+
750
+rein.vanbaaren (1):
751
+      Fix MBEDTLS_DEPRECATED_REMOVED build errors
752
+
753
+wellweek (1):
754
+      remove repetitive words in documentation and comments
755
+
756
+yatta (1):
757
+      fix(ssl): init peer_id when init tls_multi
3 758
 
4
-This file is not maintained in this branch of the OpenVPN git repository.
5 759
 
6
-Release branches (release/2.5, release/2.4, etc) have individual ChangeLog
7
-files with all changes relevant for these releases.
... ...
@@ -2,25 +2,58 @@ Overview of changes in 2.7
2 2
 ==========================
3 3
 New features
4 4
 ------------
5
-TLS alerts
6
-    OpenVPN 2.7 will send out TLS alerts to peers informing them if the TLS
7
-    session shuts down or when the TLS implementation informs the peer about
8
-    an error in the TLS session (e.g. mismatching TLS versions). This improves
9
-    the user experience as the client shows an error instead of running into
10
-    a timeout when the server just stops responding completely.
5
+Multi-socket support for servers
6
+    OpenVPN servers now can listen on multiple sockets at the same time.
7
+    Multiple ``--local`` statements in the configuration can be used to
8
+    configure this. This way the same server can e.g. listen for UDP
9
+    and TCP connections at the same time, or listen on multiple addresses
10
+    and/or ports.
11
+
12
+Client implementations for DNS options sent by server for Linux/BSD
13
+    Linux and BSD versions of OpenVPN now ship with a default ``dns-updown``
14
+    script that implements proper handling of DNS configuration sent
15
+    by the server. The scripts should work on systems that use
16
+    ``systemd`` or ``resolveconf`` to manage the DNS setup, as well as
17
+    raw ``/etc/resolv.conf`` files. However, the exact features supported
18
+    will depend on the configuration method. On Linux this should usually
19
+    mean that split-DNS configurations are supported out-of-the-box now.
20
+
21
+    Note that this new script will not be used by default if a ``--up``
22
+    script is already in use to reduce problems with
23
+    backwards compatibility.
24
+
25
+    See documentation for ``--dns-updown`` and ``--dns`` for more details.
26
+
27
+New client implementation for DNS options sent by server for Windows
28
+    The Windows client now uses NRPT (Name Resolution Policy Table) to
29
+    handle DNS configurations. This adds support for split-DNS and DNSSEC
30
+    and improves the compatbility with local DNS resolvers. Requires the
31
+    interactive service.
11 32
 
12
-Support for tun/tap via unix domain socket and lwipovpn support
13
-    To allow better testing and emulating a full client with a full
14
-    network stack OpenVPN now allows a program executed to provide
15
-    a tun/tap device instead of opening a device.
33
+On Windows the ``block-local`` flag is now enforced with WFP filters.
34
+    The ``block-local`` flag to ``--redirect-gateway`` and
35
+    ``--redirect-private`` is now also enforced via the Windows Firewall,
36
+    making sure packets can't be sent to the local network.
37
+    This provides stronger protection against TunnelCrack-style attacks.
16 38
 
17
-    The co-developed lwipovpn program based on lwIP stack allows to
18
-    simulate full IP stack and an OpenVPN client using
19
-    ``--dev-node unix:/path/to/lwipovpn`` can emulate a full client that
20
-    can be pinged, can serve a website and more without requiring any
21
-    elevated permission. This can make testing OpenVPN much easier.
39
+Windows network adapters are now generated on demand
40
+    This means that on systems that run multiple OpenVPN connections at
41
+    the same time the users don't need to manually create enough network
42
+    adapters anymore (in addition to the ones created by the installer).
22 43
 
23
-    For more details see [lwipovpn on Gihtub](https://github.com/OpenVPN/lwipovpn).
44
+Windows automatic service now runs as an unpriviledged user
45
+    All tasks that need privileges are now delegated to the interactive
46
+    service.
47
+
48
+Support for new version of Linux DCO module
49
+    OpenVPN DCO module is moving upstream and being merged into the
50
+    main Linux kernel. For this process some API changes were required.
51
+    OpenVPN 2.7 will only support the new API. The new module is called
52
+    ``ovpn``. Out-of-tree builds for older kernels are available. Please
53
+    see the release announcements for futher information.
54
+
55
+Support for server mode in win-dco driver
56
+    On Windows the win-dco driver can now be used in server setups.
24 57
 
25 58
 Enforcement of AES-GCM usage limit
26 59
     OpenVPN will now enforce the usage limits on AES-GCM with the same
... ...
@@ -30,11 +63,6 @@ Enforcement of AES-GCM usage limit
30 30
 
31 31
     https://datatracker.ietf.org/doc/draft-irtf-cfrg-aead-limits/
32 32
 
33
-Default ciphers in ``--data-ciphers``
34
-    Ciphers in ``--data-ciphers`` can contain the string DEFAULT that is
35
-    replaced by the default ciphers used by OpenVPN, making it easier to
36
-    add an allowed cipher without having to spell out the default ciphers.
37
-
38 33
 Epoch data keys and packet format
39 34
     This introduces the epoch data format for AEAD data channel
40 35
     ciphers in TLS mode ciphers. This new data format has a number of
... ...
@@ -49,15 +77,46 @@ Epoch data keys and packet format
49 49
     - IV constructed with XOR instead of concatenation to not have (parts) of
50 50
       the real IV on the wire
51 51
 
52
+Default ciphers in ``--data-ciphers``
53
+    Ciphers in ``--data-ciphers`` can contain the string DEFAULT that is
54
+    replaced by the default ciphers used by OpenVPN, making it easier to
55
+    add an allowed cipher without having to spell out the default ciphers.
56
+
57
+TLS alerts
58
+    OpenVPN 2.7 will send out TLS alerts to peers informing them if the TLS
59
+    session shuts down or when the TLS implementation informs the peer about
60
+    an error in the TLS session (e.g. mismatching TLS versions). This improves
61
+    the user experience as the client shows an error instead of running into
62
+    a timeout when the server just stops responding completely.
63
+
64
+Support for tun/tap via unix domain socket and lwipovpn support
65
+    To allow better testing and emulating a full client with a full
66
+    network stack OpenVPN now allows a program executed to provide
67
+    a tun/tap device instead of opening a device.
68
+
69
+    The co-developed lwipovpn program based on lwIP stack allows to
70
+    simulate full IP stack. An OpenVPN client using
71
+    ``--dev-node unix:/path/to/lwipovpn`` can emulate a full client that
72
+    can be pinged, can serve a website and more without requiring any
73
+    elevated permission. This can make testing OpenVPN much easier.
74
+
75
+    For more details see [lwipovpn on Gihtub](https://github.com/OpenVPN/lwipovpn).
76
+
52 77
 Allow overriding username with ``--override-username``
53 78
     This is intended to allow using auth-gen-token in scenarios where the
54 79
     clients use certificates and multi-factor authentication.  This will
55 80
     also generate a 'push "auth-token-user newusername"' directives in
56 81
     push replies.
57 82
 
83
+``--port-share`` now properly supports IPv6
84
+    Issues with logging of IPv6 addresses were fixed. The feature now allows
85
+    IPv6 connections towards the proxy receiver.
86
+
87
+Support for Haiku OS
88
+
58 89
 Deprecated features
59 90
 -------------------
60
-``secret`` support has been removed by default.
91
+``secret`` support has been removed (by default).
61 92
     static key mode (non-TLS) is no longer considered "good and secure enough"
62 93
     for today's requirements.  Use TLS mode instead.  If deploying a PKI CA
63 94
     is considered "too complicated", using ``--peer-fingerprint`` makes
... ...
@@ -67,6 +126,14 @@ Deprecated features
67 67
     ``--allow-deprecated-insecure-static-crypto`` but will be removed in
68 68
     OpenVPN 2.8.
69 69
 
70
+Support for wintun Windows driver has been removed.
71
+    OpenVPN 2.6 added support for the new dco-win driver, so it supported
72
+    three different device drivers: dco-win, wintun, and tap-windows6.
73
+    OpenVPN 2.7 now drops the support for wintun driver. By default
74
+    all modern configs should be supported by dco-win driver. In all
75
+    other cases OpenVPN will fall back automatically to tap-windows6
76
+    driver.
77
+
70 78
 NTLMv1 authentication support for HTTP proxies has been removed.
71 79
     This is considered an insecure method of authentication that uses
72 80
     obsolete crypto algorithms.
... ...
@@ -78,28 +145,34 @@ NTLMv1 authentication support for HTTP proxies has been removed.
78 78
 ``persist-key`` option has been enabled by default.
79 79
     All the keys will be kept in memory across restart.
80 80
 
81
-Default for ``--topology`` changed to ``subnet`` for ``--mode server``
82
-    Previous releases always used ``net30`` as default. This only affects
83
-    configs with ``--mode server`` or ``--server`` (the latter implies the
84
-    former), and ``--dev tun``, and only if IPv4 is enabled.
85
-    Note that this changes the semantics of ``--ifconfig``, so if you have
86
-    manual settings for that in your config but not set ``--topology``
87
-    your config might fail to parse with the new version. Just adding
88
-    ``--topology net30`` to the config should fix the problem.
89
-    By default ``--topology`` is pushed from server to client.
90
-
91
-OpenSSL 1.0.2 support
81
+OpenSSL 1.0.2 support has been removed.
92 82
     Support for building with OpenSSL 1.0.2 has been removed. The minimum
93 83
     supported OpenSSL version is now 1.1.0.
94 84
 
95
-Compression on send
85
+Support for mbedTLS older than 2.18.0 has been removed.
86
+    We now require all SSL libraries to have support for exporting
87
+    keying material. The only previously supported library versions
88
+    this affects are older mbedTLS releases.
89
+
90
+Compression on send has been removed.
96 91
     OpenVPN 2.7 will never compress data before sending. Decompression of
97 92
     received data is still supported.
98 93
     ``--allow-compression yes`` is now an alias for
99 94
     ``--allow-compression asym``.
100 95
 
96
+
101 97
 User-visible Changes
102 98
 --------------------
99
+- Default for ``--topology`` changed to ``subnet`` for ``--mode server``.
100
+  Previous releases always used ``net30`` as default. This only affects
101
+  configs with ``--mode server`` or ``--server`` (the latter implies the
102
+  former), and ``--dev tun``, and only if IPv4 is enabled.
103
+  Note that this changes the semantics of ``--ifconfig``, so if you have
104
+  manual settings for that in your config but not set ``--topology``
105
+  your config might fail to parse with the new version. Just adding
106
+  ``--topology net30`` to the config should fix the problem.
107
+  By default ``--topology`` is pushed from server to client.
108
+
103 109
 - ``--x509-username-field`` will no longer automatically convert fieldnames to
104 110
   uppercase. This is deprecated since OpenVPN 2.4, and has now been removed.
105 111
 
... ...
@@ -108,6 +181,38 @@ User-visible Changes
108 108
   And finite field Diffie Hellman is in the proces of being deprecated
109 109
   (see draft-ietf-tls-deprecate-obsolete-kex)
110 110
 
111
+- ``--lport 0`` does not imply ``--bind`` anymore.
112
+
113
+- ``--redirect--gateway`` now works correctly if the VPN remote is not
114
+  reachable by the default gateway.
115
+
116
+- ``--show-gateway`` now supports querying the gateway for IPv4 addresses.
117
+
118
+- ``--static-challenge`` option now has a third parameter ``format`` that
119
+  can change how password and challenge response should be combined.
120
+
121
+- ``--key`` and ``--cert`` now accept URIs implemented in OpenSSL 3 as well as
122
+  optional OpenSSL 3 providers loaded using ``--providers`` option.
123
+
124
+- ``--cryptoapicert`` now supports issuer name as well as Windows CA template
125
+  name or OID as selector string.
126
+
127
+- TLS handshake debugging information contains much more details  now when
128
+  using recent versions of OpenSSL.
129
+
130
+- The ``IV_PLAT_VER`` variable sent by Windows clients now contains the
131
+  full Windows build version to make it possible to determine the
132
+  Windows 10 or Windows 11 version used.
133
+
134
+- The ``--windows-driver`` option to select between various windows
135
+  drivers will no longer do anything - it's kept so existing configs
136
+  will not become invalid, but it is ignored with a warning.  The default
137
+  is now ``ovpn-dco`` if all options used are compatible with DCO, with
138
+  a fallback to ``tap-windows6``.  To force TAP (for example because a
139
+  server pushes DCO incompatible options), use the ``--disable-dco``
140
+  option.
141
+
142
+
111 143
 Overview of changes in 2.6
112 144
 ==========================
113 145
 
... ...
@@ -43,7 +43,7 @@ endif
43 43
 
44 44
 argv_testdriver_CFLAGS  = -I$(top_srcdir)/src/openvpn -I$(top_srcdir)/src/compat @TEST_CFLAGS@
45 45
 argv_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn -Wl,--wrap=parse_line
46
-argv_testdriver_SOURCES = test_argv.c mock_msg.c mock_msg.h \
46
+argv_testdriver_SOURCES = test_argv.c mock_msg.c mock_msg.h test_common.h \
47 47
 	mock_get_random.c \
48 48
 	$(top_srcdir)/src/openvpn/platform.c \
49 49
 	$(top_srcdir)/src/openvpn/buffer.c \
... ...
@@ -52,7 +52,7 @@ argv_testdriver_SOURCES = test_argv.c mock_msg.c mock_msg.h \
52 52
 
53 53
 buffer_testdriver_CFLAGS  = -I$(top_srcdir)/src/openvpn -I$(top_srcdir)/src/compat @TEST_CFLAGS@
54 54
 buffer_testdriver_LDFLAGS = @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn -Wl,--wrap=parse_line
55
-buffer_testdriver_SOURCES = test_buffer.c mock_msg.c mock_msg.h \
55
+buffer_testdriver_SOURCES = test_buffer.c mock_msg.c mock_msg.h test_common.h \
56 56
 	mock_get_random.c \
57 57
 	$(top_srcdir)/src/openvpn/win32-util.c \
58 58
 	$(top_srcdir)/src/openvpn/platform.c
... ...
@@ -61,7 +61,7 @@ crypto_testdriver_CFLAGS  = \
61 61
 	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
62 62
 	@TEST_CFLAGS@
63 63
 crypto_testdriver_LDFLAGS = @TEST_LDFLAGS@
64
-crypto_testdriver_SOURCES = test_crypto.c mock_msg.c mock_msg.h \
64
+crypto_testdriver_SOURCES = test_crypto.c mock_msg.c mock_msg.h test_common.h \
65 65
 	$(top_srcdir)/src/openvpn/buffer.c \
66 66
 	$(top_srcdir)/src/openvpn/crypto.c \
67 67
 	$(top_srcdir)/src/openvpn/crypto_mbedtls.c \
... ...
@@ -78,7 +78,7 @@ ssl_testdriver_CFLAGS  = \
78 78
 	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
79 79
 	@TEST_CFLAGS@
80 80
 ssl_testdriver_LDFLAGS = @TEST_LDFLAGS@  $(OPTIONAL_CRYPTO_LIBS)
81
-ssl_testdriver_SOURCES = test_ssl.c mock_msg.c mock_msg.h \
81
+ssl_testdriver_SOURCES = test_ssl.c mock_msg.c mock_msg.h test_common.h \
82 82
 	mock_management.c mock_ssl_dependencies.c mock_win32_execve.c \
83 83
 	$(top_srcdir)/src/openvpn/argv.c \
84 84
 	$(top_srcdir)/src/openvpn/base64.c \
... ...
@@ -114,7 +114,7 @@ packet_id_testdriver_CFLAGS  = \
114 114
 	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
115 115
 	@TEST_CFLAGS@
116 116
 packet_id_testdriver_LDFLAGS = @TEST_LDFLAGS@
117
-packet_id_testdriver_SOURCES = test_packet_id.c mock_msg.c mock_msg.h \
117
+packet_id_testdriver_SOURCES = test_packet_id.c mock_msg.c mock_msg.h test_common.h \
118 118
 	mock_get_random.c \
119 119
 	$(top_srcdir)/src/openvpn/buffer.c \
120 120
 	$(top_srcdir)/src/openvpn/otime.c \
... ...
@@ -128,7 +128,7 @@ pkt_testdriver_CFLAGS  = \
128 128
 	-I$(top_srcdir)/include -I$(top_srcdir)/src/compat -I$(top_srcdir)/src/openvpn \
129 129
 	@TEST_CFLAGS@
130 130
 pkt_testdriver_LDFLAGS = @TEST_LDFLAGS@
131
-pkt_testdriver_SOURCES = test_pkt.c mock_msg.c mock_msg.h mock_win32_execve.c \
131
+pkt_testdriver_SOURCES = test_pkt.c mock_msg.c mock_msg.h mock_win32_execve.c test_common.h \
132 132
 	$(top_srcdir)/src/openvpn/argv.c \
133 133
 	$(top_srcdir)/src/openvpn/base64.c \
134 134
 	$(top_srcdir)/src/openvpn/buffer.c \
... ...
@@ -156,7 +156,7 @@ tls_crypt_testdriver_LDFLAGS = @TEST_LDFLAGS@ \
156 156
 	-Wl,--wrap=buffer_write_file \
157 157
 	-Wl,--wrap=parse_line \
158 158
 	-Wl,--wrap=rand_bytes
159
-tls_crypt_testdriver_SOURCES = test_tls_crypt.c mock_msg.c mock_msg.h \
159
+tls_crypt_testdriver_SOURCES = test_tls_crypt.c mock_msg.c mock_msg.h test_common.h \
160 160
 	mock_win32_execve.c \
161 161
 	$(top_srcdir)/src/openvpn/argv.c \
162 162
 	$(top_srcdir)/src/openvpn/base64.c \
... ...
@@ -3,7 +3,7 @@ define([PRODUCT_NAME], [OpenVPN])
3 3
 define([PRODUCT_TARNAME], [openvpn])
4 4
 define([PRODUCT_VERSION_MAJOR], [2])
5 5
 define([PRODUCT_VERSION_MINOR], [7])
6
-define([PRODUCT_VERSION_PATCH], [_git])
6
+define([PRODUCT_VERSION_PATCH], [_alpha1])
7 7
 m4_append([PRODUCT_VERSION], [PRODUCT_VERSION_MAJOR])
8 8
 m4_append([PRODUCT_VERSION], [PRODUCT_VERSION_MINOR], [[.]])
9 9
 m4_append([PRODUCT_VERSION], [PRODUCT_VERSION_PATCH], [[]])