OpenVPN Change Log
Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net>

2020.04.16 -- Version 2.4.9
Antonio Quartulli (1):
      socks: use the right function when printing struct openvpn_sockaddr

Arne Schwabe (3):
      Fetch OpenSSL versions via source/old links
      Fix OpenSSL error stack handling of tls_ctx_add_extra_certs
      Fix OpenSSL 1.1.1 not using auto elliptic curve selection

Lev Stipakov (4):
      Fix broken fragmentation logic when using NCP
      Fix building with --enable-async-push in FreeBSD
      Fix broken async push with NCP is used
      Fix illegal client float (CVE-2020-11810)

Maxim Plotnikov (1):
      OpenSSL: Fix --crl-verify not loading multiple CRLs in one file

Santtu Lakkala (1):
      Fix OpenSSL private key passphrase notices

Selva Nair (7):
      Swap the order of checks for validating interactive service user
      Move querying username/password from management interface to a function
      When auth-user-pass file has no password query the management interface (if available).
      Fix possibly uninitialized return value in GetOpenvpnSettings()
      Fix possible access of uninitialized pipe handles
      Skip expired certificates in Windows certificate store
      Allow unicode search string in --cryptoapicert option

Tom van Leeuwen (1):
      mbedTLS: Make sure TLS session survives move

WGH (1):
      docs: Add reference to X509_LOOKUP_hash_dir(3)


2019.10.30 -- Version 2.4.8
Antonio Quartulli (1):
      mbedtls: fix segfault by calling mbedtls_cipher_free() in cipher_ctx_free()

Arne Schwabe (1):
      Remove -no-cpp-precomp flag from Darwin builds

David Sommerseth (3):
      cleanup: Remove RPM openvpn.spec build approach
      docs: Update INSTALL
      build: Package missing mock_msg.h

Gert Doering (4):
      repair windows builds (2.4)
      Increase listen() backlog queue to 32
      Force combinationation of --socks-proxy and --proto UDP to use IPv4.
      Fix IPv6 routes on tap interfaces on OpenSolaris/OpenIndiana

Gisle Vanem (1):
      Wrong FILETYPE in .rc files

Hilko Bengen (1):
      Do not set pkcs11-helper 'safe fork mode'

Ilya Shipitsin (2):
      travis-ci: add "linux-ppc64le" to build matrix, change trusty image to xenial, update osx to xcode9.4 and modernize brew management
      travis-ci: fix osx builds

Kyle Evans (1):
      tests/t_lpback.sh: Switch sed(1) to POSIX-compatible regex.

Lev Stipakov (1):
      Fix various compiler warnings

Matthias Andree (1):
      Fix regression, reinstate LibreSSL support.

Michal Soltys (1):
      man: correct the description of --capath and --crl-verify regarding CRLs

Mykola Baibuz (1):
      Fix typo in NTLM proxy debug message

Richard Bonhomme (1):
      Ignore --pull-filter for --mode server

Rosen Penev (1):
      openssl: Fix compilation without deprecated OpenSSL 1.1 APIs

Selva Nair (3):
      Better error message when script fails due to script-security setting
      Correct the return value of cryptoapi RSA signature callbacks
      Handle PSS padding in cryptoapicert

Steffan Karger (1):
      cmocka: use relative paths

Thomas Quinot (1):
      Fix documentation of tls-verify script argument


2019.02.18 -- Version 2.4.7
Adam Ciarcin?ski (1):
      Fix subnet topology on NetBSD (2.4).

Antonio Quartulli (3):
      add support for %lu in argv_printf and prevent ASSERT
      buffer_list: add functions documentation
      ifconfig-ipv6(-push): allow using hostnames

Arne Schwabe (7):
      Properly free tuntap struct on android when emulating persist-tun
      Add OpenSSL compat definition for RSA_meth_set_sign
      Add support for tls-ciphersuites for TLS 1.3
      Add better support for showing TLS 1.3 ciphersuites in --show-tls
      Use right function to set TLS1.3 restrictions in show-tls
      Add message explaining early TLS client hello failure
      Fallback to password authentication when auth-token fails

Christian Ehrhardt (1):
      systemd: extend CapabilityBoundingSet for auth_pam

David Sommerseth (1):
      plugin: Export base64 encode and decode functions

Gert Doering (3):
      Add %d, %u and %lu tests to test_argv unit tests.
      Fix combination of --dev tap and --topology subnet across multiple platforms.
      Add 'printing of port number' to mroute_addr_print_ex() for v4-mapped v6.

Gert van Dijk (1):
      Minor reliability layer documentation fixes

James Bekkema (1):
      Resolves small IV_GUI_VER typo in the documentation.

Jonathan K. Bullard (1):
      Clarify and expand management interface documentation

Lev Stipakov (5):
      Refactor NCP-negotiable options handling
      init.c: refine functions names and description
      interactive.c: fix usage of potentially uninitialized variable
      options.c: fix broken unary minus usage
      Remove extra token after #endif

Richard van den Berg via Openvpn-devel (1):
      Fix error message when using RHEL init script

Samy Mahmoudi (1):
      man: correct a --redirection-gateway option flag

Selva Nair (7):
      Replace M_DEBUG with D_LOW as the former is too verbose
      Correct the declaration of handle in 'struct openvpn_plugin_args_open_return'
      Bump version of openvpn plugin argument structs to 5
      Move get system directory to a separate function
      Enable dhcp on tap adapter using interactive service
      Pass the hash without the DigestInfo header to NCryptSignHash()
      White-list pull-filter and script-security in interactive service

Simon Rozman (2):
      Add Interactive Service developer documentation
      Detect TAP interfaces with root-enumerated hardware ID

Steffan Karger (7):
      man: add security considerations to --compress section
      mbedtls: print warning if random personalisation fails
      Fix memory leak after sighup
      travis: add OpenSSL 1.1 Windows build
      Fix --disable-crypto build
      Don't print OCC warnings about 'key-method', 'keydir' and 'tls-auth'
      buffer_list_aggregate_separator(): simplify code


2018.04.19 -- Version 2.4.6
David Sommerseth (1):
      management: Warn if TCP port is used without password

Gert Doering (2):
      Correct version in ChangeLog - should be 2.4.5, was mistyped as 2.4.4
      Fix potential double-free() in Interactive Service (CVE-2018-9336)

Gert van Dijk (1):
      manpage: improve description of --status and --status-version

Joost Rijneveld (1):
      Make return code external tls key match docs

Selva Nair (3):
      Delete the IPv6 route to the "connected" network on tun close
      Management: warn about password only when the option is in use
      Avoid overflow in wakeup time computation

Simon Matter (1):
      Add missing #ifdef SSL_OP_NO_TLSv1_1/2

Steffan Karger (1):
      Check for more data in control channel


2018.02.28 -- Version 2.4.5
Antonio Quartulli (4):
      reload HTTP proxy credentials when moving to the next connection profile
      Allow learning iroutes with network made up of all 0s (only if netbits < 8)
      mbedtls: fix typ0 in comment
      manpage: fix simple typ0

Arne Schwabe (2):
      Treat dhcp-option DNS6 and DNS identical
      show the right string for key-direction

Bertrand Bonnefoy-Claudet (1):
      Fix typo in error message: "optione" -> "option"

David Sommerseth (8):
      lz4: Fix confused version check
      lz4: Fix broken builds when pkg-config is not present but system library is
      Remove references to keychain-mcd in Changes.rst
      lz4: Rebase compat-lz4 against upstream v1.7.5
      systemd: Add and ship README.systemd
      Update copyright to include 2018 plus company name change
      man: Add .TQ groff support macro
      man: Reword --management to prefer unix sockets over TCP

Emmanuel Deloget (1):
      OpenSSL: check EVP_PKEY key types before returning the pkey

Gert Doering (2):
      Remove warning on pushed tun-ipv6 option.
      Fix removal of on-link prefix on windows with netsh

Ilya Shipitsin (2):
      travis-ci: add brew cache, remove ccache
      travis-ci: modify openssl build script to support openssl-1.1.0

James Bottomley (1):
      autoconf: Fix engine checks for openssl 1.1

Jeremie Courreges-Anglas (2):
      Cast time_t to long long in order to print it.
      Fix build with LibreSSL

Selva Nair (14):
      Check whether in pull_mode before warning about previous connection blocks
      Avoid illegal memory access when malformed data is read from the pipe
      Fix missing check for return value of malloc'd buffer
      Return NULL if GetAdaptersInfo fails
      Use RSA_meth_free instead of free
      Bring cryptoapi.c upto speed with openssl 1.1
      Add SSL_CTX_get_max_proto_version() not in openssl 1.0
      TLS v1.2 support for cryptoapicert -- RSA only
      Refactor get_interface_metric to return metric and auto flag separately
      Ensure strings read from registry are null-terminated
      Make most registry values optional
      Use lowest metric interface when multiple interfaces match a route
      Adapt to RegGetValue brokenness in Windows 7
      Fix format spec errors in Windows builds

Simon Rozman (11):
      Local functions are not supported in MSVC. Bummer.
      Mixing wide and regular strings in concatenations is not allowed in MSVC.
      RtlIpv6AddressToStringW() and RtlIpv4AddressToStringW() require mstcpip.h
      Simplify iphlpapi.dll API calls
      Fix local #include to use quoted form
      Document ">PASSWORD:Auth-Token" real-time message
      Fix typo in "verb" command examples
      Uniform swprintf() across MinGW and MSVC compilers
      MSVC meta files added to .gitignore list
      openvpnserv: Add support for multi-instances
      Document missing OpenVPN states

Steffan Karger (21):
      make struct key * argument of init_key_ctx const
      buffer_list_aggregate_separator(): add unit tests
      Add --tls-cert-profile option.
      Use P_DATA_V2 for server->client packets too
      Fix memory leak in buffer unit tests
      buffer_list_aggregate_separator(): update list size after aggregating
      buffer_list_aggregate_separator(): don't exceed max_len
      buffer_list_aggregate_separator(): prevent 0-byte malloc
      Fix types around buffer_list_push(_data)
      ssl_openssl: fix compiler warning by removing getbio() wrapper
      travis: use clang's -fsanitize=address to catch more bugs
      Fix --tls-version-min and --tls-version-max for OpenSSL 1.1+
      Add support for TLS 1.3 in --tls-version-{min, max}
      Plug memory leak if push is interrupted
      Fix format errors when cross-compiling for Windows
      Log pre-handshake packet drops using D_MULTI_DROPPED
      Enable stricter compiler warnings by default
      Get rid of ax_check_compile_flag.m4
      mbedtls: don't use API deprecated in mbed 2.7
      Warn if tls-version-max < tls-version-min
      Don't throw fatal errors from create_temp_file()

hashiz (1):
      Fix '--bind ipv6only'


2017.09.25 -- Version 2.4.4
Antonio Quartulli (23):
      crypto: correct typ0 in error message
      use M_ERRNO instead of explicitly printing errno
      don't print errno twice
      ntlm: avoid useless cast
      ntlm: unwrap multiple function calls
      route: improve error message
      management: preserve wait_for_push field when asking for user/pass
      tls-crypt: avoid warnings when --disable-crypto is used
      ntlm: convert binary buffers to uint8_t *
      ntlm: restyle compressed multiple function calls
      ntlm: improve code style and readability
      OpenSSL: remove unreachable call to SSL_CTX_get0_privatekey()
      make function declarations C99 compliant
      remove unused functions
      use NULL instead of 0 when assigning pointers
      add missing static attribute to functions
      ntlm: avoid breaking anti-aliasing rules
      remove the --disable-multi config switch
      rename mroute_extract_addr_ipv4 to mroute_extract_addr_ip
      route: avoid definition of unused variables in certain configurations
      fix a couple of typ0s in comments and strings
      fragment.c: simplify boolean expression
      tcp-server: ensure AF family is propagated to child context

Arne Schwabe (2):
      Set tls-cipher restriction before loading certificates
      Print ec bit details, refuse management-external-key if key is not RSA

Conrad Hoffmann (2):
      Use provided env vars in up/down script.
      Document down-root plugin usage in client.down

David Sommerseth (11):
      doc: The CRL processing is not a deprecated feature
      cleanup: Move write_pid() to where it is being used
      contrib: Remove keychain-mcd code
      cleanup: Move init_random_seed() to where it is being used
      sample-plugins: fix ASN1_STRING_to_UTF8 return value checks
      Highlight deprecated features
      Use consistent version references
      docs: Replace all PolarSSL references to mbed TLS
      systemd: Ensure systemd shuts down OpenVPN in a proper way
      systemd: Enable systemd's auto-restart feature for server profiles
      lz4: Move towards a newer LZ4 API

Emmanuel Deloget (3):
      OpenSSL: remove pre-1.1 function from the OpenSSL compat interface
      OpenSSL: remove EVP_CIPHER_CTX_new() from the compat layer
      OpenSSL: remove EVP_CIPHER_CTX_free() from the compat layer

Gert van Dijk (1):
      Warn that DH config option is only meaningful in a tls-server context

Ilya Shipitsin (3):
      travis-ci: add 3 missing patches from master to release/2.4
      travis-ci: update openssl to 1.0.2l, update mbedtls to 2.5.1
      travis-ci: update pkcs11-helper to 1.22

Richard Bonhomme (1):
      man: Corrections to doc/openvpn.8

Steffan Karger (17):
      Fix typo in extract_x509_extension() debug message
      Move adjust_power_of_2() to integer.h
      Undo cipher push in client options state if cipher is rejected
      Remove strerror_ts()
      Move openvpn_sleep() to manage.c
      fixup: also change missed openvpn_sleep() occurrences
      Always use default keysize for NCP'd ciphers
      Move create_temp_file() out of #ifdef ENABLE_CRYPTO
      Deprecate --keysize
      Deprecate --no-replay
      Move run_up_down() to init.c
      tls-crypt: introduce tls_crypt_kt()
      crypto: create function to initialize encrypt and decrypt key
      Add coverity static analysis to Travis CI config
      tls-crypt: don't leak memory for incorrect tls-crypt messages
      travis: reorder matrix to speed up build
      Fix bounds check in read_key()

Szilárd Pfeiffer (1):
      OpenSSL: Always set SSL_OP_CIPHER_SERVER_PREFERENCE flag

Thomas Veerman via Openvpn-devel (1):
      Fix socks_proxy_port pointing to invalid data


2017.06.21 -- Version 2.4.3
Antonio Quartulli (1):
      Ignore auth-nocache for auth-user-pass if auth-token is pushed

David Sommerseth (3):
      crypto: Enable SHA256 fingerprint checking in --verify-hash
      copyright: Update GPLv2 license texts
      auth-token with auth-nocache fix broke --disable-crypto builds

Emmanuel Deloget (8):
      OpenSSL: don't use direct access to the internal of X509
      OpenSSL: don't use direct access to the internal of EVP_PKEY
      OpenSSL: don't use direct access to the internal of RSA
      OpenSSL: don't use direct access to the internal of DSA
      OpenSSL: force meth->name as non-const when we free() it
      OpenSSL: don't use direct access to the internal of EVP_MD_CTX
      OpenSSL: don't use direct access to the internal of EVP_CIPHER_CTX
      OpenSSL: don't use direct access to the internal of HMAC_CTX

Gert Doering (6):
      Fix NCP behaviour on TLS reconnect.
      Remove erroneous limitation on max number of args for --plugin
      Fix edge case with clients failing to set up cipher on empty PUSH_REPLY.
      Fix potential 1-byte overread in TCP option parsing.
      Fix remotely-triggerable ASSERT() on malformed IPv6 packet.
      Update Changes.rst with relevant info for 2.4.3 release.

Guido Vranken (6):
      refactor my_strupr
      Fix 2 memory leaks in proxy authentication routine
      Fix memory leak in add_option() for option 'connection'
      Ensure option array p[] is always NULL-terminated
      Fix a null-pointer dereference in establish_http_proxy_passthru()
      Prevent two kinds of stack buffer OOB reads and a crash for invalid input data

Jérémie Courrèges-Anglas (2):
      Fix an unaligned access on OpenBSD/sparc64
      Missing include for socket-flags TCP_NODELAY on OpenBSD

Matthias Andree (1):
      Make openvpn-plugin.h self-contained again.

Selva Nair (1):
      Pass correct buffer size to GetModuleFileNameW()

Steffan Karger (11):
      Log the negotiated (NCP) cipher
      Avoid a 1 byte overcopy in x509_get_subject (ssl_verify_openssl.c)
      Skip tls-crypt unit tests if required crypto mode not supported
      openssl: fix overflow check for long --tls-cipher option
      Add a DSA test key/cert pair to sample-keys
      Fix mbedtls fingerprint calculation
      mbedtls: fix --x509-track post-authentication remote DoS (CVE-2017-7522)
      mbedtls: require C-string compatible types for --x509-username-field
      Fix remote-triggerable memory leaks (CVE-2017-7521)
      Restrict --x509-alt-username extension types
      Fix potential double-free in --x509-alt-username (CVE-2017-7521)

Steven McDonald (1):
      Fix gateway detection with OpenBSD routing domains


2017.05.11 -- Version 2.4.2
David Sommerseth (5):
      auth-token: Ensure tokens are always wiped on de-auth
      docs: Fixed man-page warnings discoverd by rpmlint
      Make --cipher/--auth none more explicit on the risks
      plugin: Fix documentation typo for type_mask
      plugin: Export secure_memzero() to plug-ins

Hristo Venev (1):
      Fix extract_x509_field_ssl for external objects, v2

Selva Nair (1):
      In auth-pam plugin clear the password after use

Steffan Karger (10):
      cleanup: merge packet_id_alloc_outgoing() into packet_id_write()
      Don't run packet_id unit tests for --disable-crypto builds
      Fix Changes.rst layout
      Fix memory leak in x509_verify_cert_ku()
      mbedtls: correctly check return value in pkcs11_certificate_dn()
      Restore pre-NCP frame parameters for new sessions
      Always clear username/password from memory on error
      Document tls-crypt security considerations in man page
      Don't assert out on receiving too-large control packets (CVE-2017-7478)
      Drop packets instead of assert out if packet id rolls over (CVE-2017-7479)

ValdikSS (1):
      Set a low interface metric for tap adapter when block-outside-dns is in use

2017.03.21 -- Version 2.4.1
Antonio Quartulli (4):
      attempt to add IPv6 route even when no IPv6 address was configured
      fix redirect-gateway behaviour when an IPv4 default route does not exist
      CRL: use time_t instead of struct timespec to store last mtime
      ignore remote-random-hostname if a numeric host is provided

Christian Hesse (7):
      man: fix formatting for alternative option
      systemd: Use automake tools to install unit files
      systemd: Do not race on RuntimeDirectory
      systemd: Add more security feature for systemd units
      Clean up plugin path handling
      plugin: Remove GNUism in openvpn-plugin.h generation
      fix typo in notification message

David Sommerseth (6):
      management: >REMOTE operation would overwrite ce change indicator
      management: Remove a redundant #ifdef block
      git: Merge .gitignore files into a single file
      systemd: Move the READY=1 signalling to an earlier point
      plugin: Improve the handling of default plug-in directory
      cleanup: Remove faulty env processing functions

Emmanuel Deloget (8):
      OpenSSL: check for the SSL reason, not the full error
      OpenSSL: don't use direct access to the internal of X509_STORE_CTX
      OpenSSL: don't use direct access to the internal of SSL_CTX
      OpenSSL: don't use direct access to the internal of X509_STORE
      OpenSSL: don't use direct access to the internal of X509_OBJECT
      OpenSSL: don't use direct access to the internal of RSA_METHOD
      OpenSSL: SSLeay symbols are no longer available in OpenSSL 1.1
      OpenSSL: use EVP_CipherInit_ex() instead of EVP_CipherInit()

Eric Thorpe (1):
      Fix Building Using MSVC

Gert Doering (4):
      Add openssl_compat.h to openvpn_SOURCES
      Fix '--dev null'
      Fix installation of IPv6 host route to VPN server when using iservice.
      Make ENABLE_OCC no longer depend on !ENABLE_SMALL

Gisle Vanem (1):
      Crash in options.c

Ilya Shipitsin (2):
      Resolve several travis-ci issues
      travis-ci: remove unused files

Olivier Wahrenberger (1):
      Fix building with LibreSSL 2.5.1 by cleaning a hack.

Selva Nair (4):
      Fix push options digest update
      Always release dhcp address in close_tun() on Windows.
      Add a check for -Wl, --wrap support in linker
      Fix user's group membership check in interactive service to work with domains

Simon Matter (1):
      Fix segfault when using crypto lib without AES-256-CTR or SHA256

Steffan Karger (8):
      More broadly enforce Allman style and braces-around-conditionals
      Use SHA256 for the internal digest, instead of MD5
      OpenSSL: 1.1 fallout - fix configure on old autoconf
      Fix types in WIN32 socket_listen_accept()
      Remove duplicate X509 env variables
      Fix non-C99-compliant builds: don't use const size_t as array length
      Deprecate --ns-cert-type
      Be less picky about keyUsage extensions


2016.12.26 -- Version 2.4.0
David Sommerseth (5):
      dev-tools: Added script for updating copyright years in files
      Update copyrights
      docs: Further enhance the documentation related to SWEET32
      man: Remove references to no longer present IV_RGI6 peer-info
      build: Ensure Changes.rst is shipped and installed as a doc file

Gert Doering (1):
      Remove IV_RGI6=1 peer-info signalling.

Steffan Karger (3):
      Document that RSA_SIGN can also request TLS 1.2 signatures
      man: encourage user to read on about --tls-crypt
      Textual fixes for Changes.rst


2016.12.16 -- Version 2.4_rc2
David Sommerseth (9):
      Fix wrong configure.ac parsing of --enable-async-push
      Changes: Further improve systemd unit file updates
      systemd: Intermediate --chroot fix with the new sd_notify() implementation
      Further enhance async-push feature description
      Changes.rst: Mainatiner update on C99
      dev-tools: Add reformat-all.sh for code style unification
      The Great Reformatting - first phase
      Merge 'reformatting' branch into master
      auth-gen-token: Hardening memory cleanup on auth-token failuers

Gert Doering (1):
      Refactor setting close-on-exec for socket FDs

Lev Stipakov (2):
      Arm inotify only in server mode
      Add "async push" feature to Changes.rst

Magnus Kroken (1):
      mbedtls: include correct net/net_sockets header according to version

Selva Nair (2):
      Correctly state the default dhcp server address in man page
      Unhide a line in man page by fixing a typo

Steffan Karger (4):
      Fix (and cleanup) crypto flags in combination with NCP
      Deprecate --no-iv
      man: mention that --ecdh-curve does not work on mbed TLS builds
      Don't reopen tun if cipher changes


2016.12.01 -- Version 2.4_rc1
Antonio Quartulli (1):
      reload CRL only if file was modified

Christian Hesse (3):
      update year in copyright message
      Use systemd service manager notification
      Refuse to daemonize when running from systemd

Gert Doering (1):
      Fix windows path in Changes.rst

Samuli Seppänen (1):
      Mention that OpenVPN 2.4 requires Windows Vista or higher

Selva Nair (4):
      Map restart signals from event loop to SIGTERM during exit-notification wait
      When parsing '--setenv opt xx ..' make sure a third parameter is present
      Force 'def1' method when --redirect-gateway is done through service
      Do not restart dns client service as a part of --register-dns processing

Steffan Karger (4):
      tls_process: don't set variable that's never read
      Unconditionally enable TLS_AGGREGATE_ACK
      Clean up format_hex_ex()
      Introduce and use secure_memzero() to erase secrets


2016.11.24 -- Version 2.4_beta2
Arne Schwabe (5):
      Document that tls-crypt also supports inline
      Fix warning that RAND_bytes is undeclared
      Remove compat-stdbool.h.
      Fix various compiler warnings
      Handle DNS6 option on Android

David Sommerseth (2):
      Changes.rst: Fixing wrong formatting
      Document the --auth-token option

Gert Doering (2):
      Remove remaining traces of compat-stdbool.h
      Stub implementation of "--dhcp-option DNS6 <v6addr>"

Selva Nair (3):
      Do not set ipv6 address if '--ip-win32 manual' is used
      Handle --dhcp-option DNS6 on Windows using netsh
      Set IPv6 DNS servers using interactive service

Steffan Karger (6):
      multi_process_float: revert part of c14c4a9e
      --tls-crypt fixes
      Change cmocka remote to use https in stead of git protocol
      generate_key_expansion: make assumption explicit, use C99 features
      Poor man's NCP for non-NCP peers
      Refactor data channel key generation API


2016.11.17 -- Version 2.4_beta1
Arne Schwabe (1):
      Make Changes.rst nicer for 2.4 release

David Sommerseth (16):
      Update .mailmap to unify and clean up odd names and e-mail addresses
      cleanup: Remove NOP code sections in ssl.c:tls_process()
      Remove last rest of INSTALL-win32.txt references
      auth-gen-token: Add --auth-gen-token option
      auth-gen-token: Generate an auth-token per client
      auth-gen-token: Push generated auth-tokens to the client
      auth-gen-token: Authenticate generated auth-tokens when client re-authenticates
      Fix builds with --disable-crypto
      man: Improve the --keepalive section
      console: Fix compiler warning
      systemd: Improve the systemd unit files
      tun: Fix compiler warnings
      file checks: Merge warn_if_group_others_accessible() into check_file_access()
      tun: Fix weird commit error causing a double assignment
      options: Remove --tls-remote
      Remove unused variable in argv_printf_arglist()

Gert Doering (10):
      openvpn version line: remove [IPv6], add [AEAD] if available
      clean up *sig_info handling in link_socket_init_phase2()
      check c->c2.link_socket before calling do_init_route_ipv6_list()
      Check previously-unchecked buf_alloc_write() call in crypto self-test.
      Fix potential division by zero in shaper_reset()
      Repair topology subnet on FreeBSD 11
      Repair topology subnet on OpenBSD
      Add in_port_t check to configure.ac
      Fix compilation on MinGW with -std=c99
      Replace WIN32 by _WIN32

Heiko Hund (4):
      put argv_* functions into own file, add unit tests
      Remove unused and unecessary argv interfaces
      remove unused system_str from struct argv
      Factor out %sc handling from argv_printf()

Lev Stipakov (1):
      Drop recursively routed packets

Samuli Seppänen (6):
      Remove INSTALL-win32.txt that is now hosted in openvpn-build
      Fix update_t_client_ips.sh for out of tree builds
      Make sure that all relevant files under test go to release tarballs
      Allow passing extra arguments to fping/fping6 in t_client.rc
      Prevent generation of duplicate EXPECT_IFCONFIG entries
      Fix a logic problem in handling of --up scripts in t_client.sh

Selva Nair (2):
      Support --block-outside-dns on multiple tunnels
      Unbreak windows build

Steffan Karger (19):
      Fix use-after-free bug in prepare_push_reply()
      Remove verbose msg() from send_push_reply()
      Limit --reneg-bytes to 64MB when using small block ciphers
      Add a revoked cert to the sample keys
      Fix --tls-version-max in mbed TLS builds
      Don't deference type-punned pointers
      Fix builds on compilers without anonymous union support
      Refactor static/tls-auth key loading
      Add missing includes in error.h
      Make argv unit tests obey {MBEDTLS, OPENSSL}_{LIBS, CFLAGS}
      Move private file access checks to options_postprocess_filechecks()
      Deprecate key-method 1
      Refactor CRL handling
      Remove unneeded check for extra_certs_file_inline
      Fix missing return value checks in multi_process_float()
      Restore pre-NCP cipher options on SIGUSR1
      Remove unused variables from do_init_crypto_static()
      Add control channel encryption (--tls-crypt)
      Add --tls-crypt unit tests


2016.10.19 -- Version 2.4_alpha2

David Sommerseth (1):
      Update .mailmap to unify and clean up odd names and e-mail addresses

Steffan Karger (1):
      Fix use-after-free bug in prepare_push_reply()


2016.10.17 -- Version 2.4_alpha1

Adriaan de Jong (2):
      Fixed a bug where PolarSSL gave an error when using an inline file tag.
      Fix --show-pkcs11-ids (Bug #239)

Alexander Pyhalov (1):
      Default gateway can't be determined on illumos/Solaris platforms

Alon Bar-Lev (1):
      pkcs11: use generic evp key instead of rsa

Andris Kalnozols (3):
      Fix some typos in the man page.
      Do not upcase x509-username-field for mixed-case arguments.
      extract_x509_extension(): hide status message during normal operation.

Arne Schwabe (100):
      Document man agent-external-key
      Options parsing demands unnecessary configuration if PKCS11 is used
      Error message if max-routes used incorrectly
      Properly require --key even if defined(MANAGMENT_EXTERNAL_KEY)
      Remove dnsflags_to_socktype, it is not used anywhere
      Fix the proto is used inconsistently warning
      Remove dead code path and putenv functionality
      Remove unused function xor
      Move static prototype definition from header into c file
      Remove unused function no_tap_ifconfig
      Add the client id (CID) to the output of the status command
      Print client id only if compiled with man agent support. Otherwise print an empty string.
      Allow routes to be set before opening tun, similar to ifconfig before opening tun
      Add ability to send/receive file descriptors via management interface
      Android platform specific changes.
      Emulate persist-tun on Android
      Document the Android implementation in OpenVPN
      Only print script warnings when a script is used. Remove stray mention of script-security system.
      Fix #ifdefs for P2MP_SERVER
      Move settings of user script into set_user_script function
      Move checking of script file access into set_user_script
      Fix another #ifdef/#if P2MP_SERVER
      PATCHv3 Remove unused variables or put them to the defines they are being used in
      Add support of utun devices under Mac OS X
      Add support to ignore specific options.
      Add a note what setenv opt does for OpenVPN < 2.3.3
      Implement custom HTTP header for http-proxy, and always send user-agent:
      Add reporting of UI version to basic push-peer-info set.
      Change the type of all ports in openvpn to const char* and let getaddrinfo resolve the port together with the hostname.
      Fix compile error in ssl_openssl introduced by polar external-management patch
      Simplify print_sockaddr_ex function, merge duplicate ipv4/ipv6 logic.
      Split the PROTO_UDP_xx options into AF_INET/AF_INET6 and PROTO_TCP/PROTO_UDP part.
      Fix two instances of asserting AF_INET
      Fix assertion when SIGUSR1 is received while getaddrinfo is successful
      Split link_socket_init_phase1 and link_socket_init_phase2 into smaller more managable/readable functions. No functional changes
      Change proto_remote() function to return a constant string
      Remove the ip-remote-hint option.
      change the type of 'remote' to addrinfo*, and rename to 'remote_list'.
      When resolving fails print the error message from socket layer
      Implement dual stack client support for OpenVPN
      Move ASSERT so external-key with OpenSSL works again
      Implement listing on IPv4/IPv6 dual socket on all platform
      Add warning for using connection block variables after connection blocks
      Update IPv6 related readme files
      Introduce safety check for http proxy options
      Fix warning for max-routes: do not quit when parsing an old configuration. Format the message to be more like the other deprecated options
      Fix connecting to localhost on Android
      Move the initialization of the environment to the top so c2.es is initialized
      Workaround broken Android 4.4 VpnService API for persist-tun mode
      Implement an easy parsable log output that allows access to flags of the log message
      Introduce an option to resolve dns names in advance for --remote, --local and --http-proxy
      Fix for server selecting address family
      Don't show the connection profile store in options->ce if there is a connection_list defined.
      Add gateway and device to android control messages
      Clean up of socket code.
      Fix assert when using port-share
      Work around Solaris getaddrinfo() returing ai_protocol=0
      Fix man page and OSCP script: tls_serial_{n} is decimal
      Remove ENABLE_BUFFER_LIST
      Fix server routes not working in topology subnet with --server [v3]
      Always enable http-proxy and socks-proxy
      Remove deprecated --max-routes option from manual
      Add documentation for PERSIST_TUN_ACTION (Android specific)
      Remove possibility of using --tls-auth with non OpenVPN Static key files
      Remove unused function sock_addr_set
      Document the default for tls-cipher.
      Report missing end-tags of inline files as errors
      Fix commit e473b7c if an inline file happens to have a line break exactly at buffer limit
      Show extra-certs in current parameters, fix clang warning and logic error in preresolve
      Remove unused function h_errno_msg
      Add support for requesting the fd again to rebind to the next interface.
      Don't redirect the gateway on Android even if requested
      Fix loglevel of protect socket message
      Extend network-change command to allow reprotecting on the same network (for short connection losses)
      Use pseudo gw as default gw on Android as a workaround for not being able to read /proc/net/route
      Remove #ifdefs for client nat support.
      Do not install a host route for the VPN on Android
      Fix commit c67acea173dc9ee37220f5b9ff14ede081181992
      Do not set the buffer size by default but rely on the operation system default.
      Start Changes.rst that lists changes in 2.4.0
      Remove --enable-password-save option
      Reflect enable-password-save change in documentation
      Also remove second instance of enable-password-save in the man page
      Detect config lines that are too long and give a warning/error
      Implement the compression V2 data format for stub and lz4.
      Fix assert when comp is called with unknown algorithm, always call comp init method
      Ignore stamp-h2 we generate during build process
      Implement inlining of crl files
      Complete push-peer-info documentation and allow IV_PLAT_VER for other platforms than Windows if the client UI supplies it.
      Remove http-proxy-timeout, socks timeout and set default of server-poll-timeout to 120s
      Add documentation for http-proxy-user-pass option
      Remove http-proxy-retry and socks-proxy-retry.
      Update android documentation to match source code
      Use AES ciphers in our sample configuration files and add a few modern 2.4 examples
      Fix ENABLE_CRYPTO_OPENSSL set to YES even with --disable-crypto set
      Prefer RECVDSTADDR to PKTINFO for IPv4 in OS X since it actually works (unlike PKTINFO)
      Incorporate the Debian typo fixes where appropriate and make show_opt default message clearer
      Enable TCP non-linear packet ID
      Change the hold command to communicate the time that OpenVPN would wait to the UI.
      Remove tun-ipv6 Option. Instead assume that IPv6 is always supported.

Boris Lytochkin (1):
      Log serial number of revoked certificate

Christian Hesse (1):
      fix build with automake 1.13(.1)

Christian Niessner (1):
      Fix corner case in NTLM authentication (trac #172)

Christos Trochalakis (1):
      Adjust server-ipv6 documentation

Cristian Rodriguez (1):
      Use SSL_MODE_RELEASE_BUFFERS if available

Daniel Hahler (1):
      options: fix option check for "plugin"

Daniel Kubec (4):
      Added support for TLS Keying Material Exporters [RFC-5705]
      Added document for TLS Keying Material Exporters [RFC-5705]
      sample-plugin: TLS Keying Material Exporter [RFC-5705] demonstration plug-in
      Fix buffer size parameter for exported keying material.

David Sommerseth (44):
      Make git ignore some more files
      Remove the support for using system() when executing external programs or scripts
      Fix double-free issue in pf_destroy_context()
      Reset the version.m4 version for the master branch
      Avoid recursion in virtual_output_callback_func()
      The get_default_gateway() function uses warn() instead of msg()
      Improve the git revision tracking
      man page: Update man page about the tls_digest_{n} environment variable
      Remove the --disable-eurephia configure option
      plugin: Extend the plug-in v3 API to identify the SSL implementation used
      autoconf: Fix typo
      t_client.sh: Check for fping/fping6 availability
      t_client.sh: Write errors to stderr and document requirements
      t_client.sh: Add prepare/cleanup possibilties for each test case
      Fix file checks when --chroot is being used
      Adjusted autotools files to build more cleanly on newer autoconf/automake versions
      Improve error reporting on file access to --client-config-dir and --ccd-exclusive
      Don't let openvpn_popen() keep zombies around
      Don't try to use systemd-ask-password if it is not available
      Clean up the pipe closing in openvpn_popen()
      Add systemd unit file for OpenVPN
      systemd: Use systemd functions to consider systemd availability
      systemd: Reworked the systemd unit file to handle server and client configs better
      autotools: Fix wrong ./configure help screen default values
      down-root plugin: Replaced system() calls with execve()
      down-root: Improve error messages
      plugin, down-root: Fix compiler warnings
      sockets: Remove the limitation of --tcp-nodelay to be server-only
      plugins, down-root: Code style clean-up
      Provide compile time OpenVPN version information to plug-ins
      Provide OpenVPN runtime version information to plug-ins
      Avoid partial authentication state when using --disabled in CCD configs
      Only build and run cmocka unit tests if its submodule is initialized
      Another fix related to unit test framework
      Remove NOP function and callers
      Revert "Drop recursively routed packets"
      Fix client connection instant timeout
      t_client.sh: Make OpenVPN write PID file to avoid various sudo issues
      t_client.sh: Add support for Kerberos/ksu
      t_client.sh: Improve detection if the OpenVPN process did start during tests
      Rework the user input interface to make it more modular
      Re-implement the systemd support using the new query user API
      systemd: Do not mask usernames when querying for it via systemd-ask-password
      Move memcmp_constant_time() to crypto.h

David Woodhouse (2):
      pkcs11: Load p11-kit-proxy.so module by default
      Make 'provider' option to --show-pkcs11-ids optional where p11-kit is present

Davide Brini (2):
      Provide more accurate warning message
      Document authfile for socks server

Dmitrij Tejblum (1):
      Fix is_ipv6 in case of tap interface.

Dorian Harmans (1):
      Add CHACHA20-POLY1305 ciphersuite IANA name translations.

Felix Janda (1):
      Use OPENVPN_ETH_P_* so that <netinet/if_ether.h> is unecessary

Fish (1):
      Add lz4 support to MSVC.

Gert Doering (110):
      Implement --mssfix handling for IPv6 packets.
      Fix option inconsistency warnings about "proto" and "tun-ipv6"
      Fix parameter type for IP_TOS setsockopt on non-Linux systems.
      Fix client crash on double PUSH_REPLY.
      Update README.IPv6 to match what is in 2.3.0
      Repair "tcp server queue overflow" brokenness, more <stdbool.h> fallout.
      Permit pool size of /64.../112 for ifconfig-ipv6-pool
      Add MIN() compatibility macro
      Fix directly connected routes for "topology subnet" on Solaris.
      Print "Virtual IPv6 Address" on management interface queries [v4]
      Use constrain_int() instead of MIN()+syshead.c compat definition - v2.
      Fix NULL-pointer crash in route_list_add_vpn_gateway().
      Fix usage of 'compression ...' from global config.
      Make push-peer-info visible in "normal" per-instance environment.
      Fix problem with UDP tunneling due to mishandled pktinfo structures.
      Improve documentation and help text for --route-ipv6.
      Fix argument type warning introduced by http extra proxy header patch.
      Fix IPv6 examples in t_client.rc-sample
      Fix slow memory drain on each client renegotiation.
      t_client.sh: ignore fields from "ip -6 route show" output that distort results.
      Fix IPv6_V6ONLY logic.
      Implement LZ4 compression.
      Provide LZ4 sources in src/compat/ and use if no system lz4 library found.
      Document "lz4" argument to "compress" config option.
      Make code and documentation for --remote-random-hostname consistent.
      Reduce IV_OPENVPN_GUI_VERSION= to IV_GUI_VER=
      remove some 'unused variable' warnings
      Cleanup ir6->netbits handling.
      Document issue with --chroot, /dev/urandom and PolarSSL.
      Rename 'struct route' to 'struct route_ipv4'
      Replace copied structure elements with including <net/route.h>
      Add "test-driver" and "compile" to .gitignore
      Fix crash when using --inetd.
      IPv6 address/route delete fix for Win8
      Add SSL library version reporting.
      Minor t_client.sh cleanups
      Repair --multihome on FreeBSD for IPv4 sockets.
      Rewrite manpage section about --multihome
      More IPv6-related updates to the openvpn man page.
      Conditionalize calls to print_default_gateway on !ENABLE_SMALL
      Merge get_default_gateway() implementation for all 4+1 BSD variants.
      Drop incoming fe80:: packets silently now.
      Recognize AIX, define TARGET_AIX
      Add tap driver initialization and ifconfig for AIX.
