]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
uapi: insert peer version placeholder
authorJason A. Donenfeld <Jason@zx2c4.com>
Mon, 3 Sep 2018 05:04:47 +0000 (23:04 -0600)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 3 Sep 2018 05:04:47 +0000 (23:04 -0600)
While we don't want people to ever use old protocols, people will
complain if the API "changes", so explicitly make the unset protocol
mean the latest, and add a dummy mechanism of specifying the protocol on
a per-peer basis, which we hope nobody actually ever uses.

uapi.go

diff --git a/uapi.go b/uapi.go
index 1edafe032edaad47bfa65f66b350f29cced03238..1801c4c647a2c449532b7024904f1d44ccbfea4f 100644 (file)
--- a/uapi.go
+++ b/uapi.go
@@ -75,6 +75,7 @@ func ipcGetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
 
                        send("public_key=" + peer.handshake.remoteStatic.ToHex())
                        send("preshared_key=" + peer.handshake.presharedKey.ToHex())
+                       send("protocol_version=1")
                        if peer.endpoint != nil {
                                send("endpoint=" + peer.endpoint.DstToString())
                        }
@@ -362,6 +363,13 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
                                ones, _ := network.Mask.Size()
                                device.allowedips.Insert(network.IP, uint(ones), peer)
 
+                       case "protocol_version":
+
+                               if value != "1" {
+                                       logError.Println("Invalid protocol version:", value)
+                                       return &IPCError{Code: ipcErrorInvalid}
+                               }
+
                        default:
                                logError.Println("Invalid UAPI peer key:", key)
                                return &IPCError{Code: ipcErrorInvalid}