From 063becdc735f74965ffa2d51964b87e604b9c1e7 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 2 Sep 2018 23:04:47 -0600 Subject: [PATCH] uapi: insert peer version placeholder 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/uapi.go b/uapi.go index 1edafe0..1801c4c 100644 --- 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}