From 9708bbfa8e3094de8932a30b1d24c661558d8a03 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Tue, 5 Jul 2011 21:19:48 +0200 Subject: [PATCH] Add a minor number to the protocol version. --- src/connection.h | 3 ++- src/net_setup.c | 3 ++- src/protocol.h | 7 +++---- src/protocol_auth.c | 12 ++++++------ src/tincctl.c | 4 ++-- src/tincd.c | 4 ++-- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/connection.h b/src/connection.h index 75015ffe..21edf110 100644 --- a/src/connection.h +++ b/src/connection.h @@ -56,7 +56,8 @@ typedef struct connection_t { union sockaddr_t address; /* his real (internet) ip */ char *hostname; /* the hostname of its real ip */ - int protocol_version; /* used protocol */ + int protocol_major; /* used protocol */ + int protocol_minor; /* used protocol */ int socket; /* socket used for this connection */ uint32_t options; /* options for this connection */ diff --git a/src/net_setup.c b/src/net_setup.c index f0e1cdfe..7ceba360 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -239,7 +239,8 @@ static bool setup_myself(void) { myself->connection->hostname = xstrdup("MYSELF"); myself->connection->options = 0; - myself->connection->protocol_version = PROT_CURRENT; + myself->connection->protocol_major = PROT_MAJOR; + myself->connection->protocol_minor = PROT_MINOR; if(!get_config_string(lookup_config(config_tree, "Name"), &name)) { /* Not acceptable */ logger(LOG_ERR, "Name for tinc daemon required!"); diff --git a/src/protocol.h b/src/protocol.h index f1c2a206..7a7072ed 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -21,11 +21,10 @@ #ifndef __TINC_PROTOCOL_H__ #define __TINC_PROTOCOL_H__ -/* Protocol version. Different versions are incompatible, - incompatible version have different protocols. - */ +/* Protocol version. Different major versions are incompatible. */ -#define PROT_CURRENT 17 +#define PROT_MAJOR 17 +#define PROT_MINOR 0 /* Silly Windows */ diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 60590961..7aaef17f 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -40,14 +40,14 @@ bool send_id(connection_t *c) { gettimeofday(&c->start, NULL); - return send_request(c, "%d %s %d", ID, myself->connection->name, - myself->connection->protocol_version); + return send_request(c, "%d %s %d.%d", ID, myself->connection->name, + myself->connection->protocol_major, myself->connection->protocol_minor); } bool id_h(connection_t *c, char *request) { char name[MAX_STRING_SIZE]; - if(sscanf(request, "%*d " MAX_STRING " %d", name, &c->protocol_version) != 2) { + if(sscanf(request, "%*d " MAX_STRING " %d.%d", name, &c->protocol_major, &c->protocol_minor) < 2) { logger(LOG_ERR, "Got bad %s from %s (%s)", "ID", c->name, c->hostname); return false; @@ -86,9 +86,9 @@ bool id_h(connection_t *c, char *request) { /* Check if version matches */ - if(c->protocol_version != myself->connection->protocol_version) { - logger(LOG_ERR, "Peer %s (%s) uses incompatible version %d", - c->name, c->hostname, c->protocol_version); + if(c->protocol_major != myself->connection->protocol_major) { + logger(LOG_ERR, "Peer %s (%s) uses incompatible version %d.%d", + c->name, c->hostname, c->protocol_major, c->protocol_minor); return false; } diff --git a/src/tincctl.c b/src/tincctl.c index 00a296dc..7d27341e 100644 --- a/src/tincctl.c +++ b/src/tincctl.c @@ -497,8 +497,8 @@ int main(int argc, char *argv[], char *envp[]) { make_names(); if(show_version) { - printf("%s version %s (built %s %s, protocol %d)\n", PACKAGE, - VERSION, __DATE__, __TIME__, PROT_CURRENT); + printf("%s version %s (built %s %s, protocol %d.%d)\n", PACKAGE, + VERSION, __DATE__, __TIME__, PROT_MAJOR, PROT_MINOR); printf("Copyright (C) 1998-2009 Ivo Timmermans, Guus Sliepen and others.\n" "See the AUTHORS file for a complete list.\n\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" diff --git a/src/tincd.c b/src/tincd.c index 45e29ab0..8401b209 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -356,8 +356,8 @@ int main(int argc, char **argv) { make_names(); if(show_version) { - printf("%s version %s (built %s %s, protocol %d)\n", PACKAGE, - VERSION, __DATE__, __TIME__, PROT_CURRENT); + printf("%s version %s (built %s %s, protocol %d.%d)\n", PACKAGE, + VERSION, __DATE__, __TIME__, PROT_MAJOR, PROT_MINOR); printf("Copyright (C) 1998-2011 Ivo Timmermans, Guus Sliepen and others.\n" "See the AUTHORS file for a complete list.\n\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" -- 2.20.1