Add a minor number to the protocol version.
authorGuus Sliepen <guus@tinc-vpn.org>
Tue, 5 Jul 2011 19:19:48 +0000 (21:19 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Tue, 5 Jul 2011 19:19:48 +0000 (21:19 +0200)
src/connection.h
src/net_setup.c
src/protocol.h
src/protocol_auth.c
src/tincctl.c
src/tincd.c

index 75015ffe3214669958cc5dedd3e23007993bf691..21edf110e4bb358dcd992d0ddd84565fb038f5f6 100644 (file)
@@ -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 */
index f0e1cdfe948bdf1a75524c8c477a287b1a441b6c..7ceba36051629e1185262e26cd3803d67d9e089e 100644 (file)
@@ -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!");
index f1c2a20655f7e34e8addaa78d0fa0cc8d1504a93..7a7072eddb1d8fdc4047d66c90003fd30451be63 100644 (file)
 #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 */
 
index 6059096191101936a668274d0a92a39eabaf543f..7aaef17fd84d89a5658a295adbba739231bf1271 100644 (file)
 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;
        }
 
index 00a296dc73a1184fd8b915ecefae01253b075d42..7d27341effe7f21f397f10ef32761decc9426420 100644 (file)
@@ -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"
index 45e29ab0a354b8d6d77f8d3a3bfeee4c888494f7..8401b2090a3ef3975501545383f56a46bd94f164 100644 (file)
@@ -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"