]> git.ipfire.org Git - thirdparty/openvpn.git/commit - src/openvpn/init.c
Peer-id patch v7
authorLev Stipakov <lstipakov@gmail.com>
Sun, 23 Nov 2014 15:17:11 +0000 (17:17 +0200)
committerGert Doering <gert@greenie.muc.de>
Thu, 27 Nov 2014 14:10:05 +0000 (15:10 +0100)
commit65eedc353349d2967fc03c54da807727e416e1b0
treeccbea0a0472f3172c1ceae593449c8707f700a5b
parent3341a98c2852d1d0c1eafdc70a3bdb218ec29049
Peer-id patch v7

Added new packet format P_DATA_V2, which includes peer-id. If server
supports, client sends all data packets in the new format. When data
packet arrives, server identifies peer by peer-id. If peer's ip/port has
changed, server assumes that client has floated, verifies HMAC and
updates ip/port in internal structs.

Changes in v7:
A few nitpicks.

Changes in v6:
Fixed: Make sure float won't happen if hmac check failed (regression).
Fixed: Access outside of bounds of array, which has caused memory
corruption and crash.
Various review fixes.

Changes in v5:
Protection agains replay attack by commiting float changes only after
existing packet processing flow has completed.

If peer floats to an address which is already taken by another active
session, drop float packet, otherwise disconnect existing session.

Changes in v4:
Handles correctly float to an address which is used by another peer.
This also has fixed crash on assert in multi_client_disconnect.

Changes in v3:
Bugfix: If float happens after TLS renegotiation and there are no
data packets between reneg and float, server will not recognize floated
client.
Acked-by: Steffan Karger <steffan.karger@fox-it.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1416755831-21250-1-git-send-email-lstipakov@gmail.com>
URL: http://article.gmane.org/gmane.network.openvpn.devel/9270

Signed-off-by: Gert Doering <gert@greenie.muc.de>
13 files changed:
src/openvpn/forward.c
src/openvpn/forward.h
src/openvpn/init.c
src/openvpn/mudp.c
src/openvpn/mudp.h
src/openvpn/multi.c
src/openvpn/multi.h
src/openvpn/options.c
src/openvpn/options.h
src/openvpn/push.c
src/openvpn/ssl.c
src/openvpn/ssl.h
src/openvpn/ssl_common.h