]> git.puffer.fish Git - matthieu/frr.git/commitdiff
eigrpd: Setup eigrp to send FRR version
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 20 Aug 2017 00:56:50 +0000 (20:56 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 20 Aug 2017 00:56:50 +0000 (20:56 -0400)
Send to our peer the major/minor version of FRR that we are
working with.  I decided to use FRR instead of the os major/minor
because the os itself doesn't tell you what version of EIGRP
you are actually using.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
eigrpd/eigrp_hello.c
eigrpd/eigrp_main.c
eigrpd/eigrp_packet.h

index d56767fafc767c59b416579c57b52445069d1bea..ca05c653ceb517d98c2dde980d3e540a794fb888 100644 (file)
@@ -405,6 +405,20 @@ void eigrp_hello_receive(struct eigrp *eigrp, struct ip *iph,
                           inet_ntoa(nbr->src));
 }
 
+u_int32_t FRR_MAJOR;
+u_int32_t FRR_MINOR;
+
+void eigrp_sw_version_initialize(void)
+{
+       char ver_string[] = VERSION;
+       char *dash = strstr(ver_string, "-");
+
+       if (dash)
+               dash[0] = '\0';
+
+       sscanf(ver_string, "%d.%d", &FRR_MAJOR, &FRR_MINOR);
+}
+
 /**
  * @fn eigrp_sw_version_encode
  *
@@ -427,8 +441,8 @@ static u_int16_t eigrp_sw_version_encode(struct stream *s)
 
        // encode the version of quagga we're running
        // DVS: need to figure out a cleaner way to do this
-       stream_putc(s, 0);  //!< major os version
-       stream_putc(s, 99); //!< minor os version
+       stream_putc(s, FRR_MAJOR);  //!< major os version
+       stream_putc(s, FRR_MINOR); //!< minor os version
 
        /* and the core eigrp version */
        stream_putc(s, EIGRP_MAJOR_VERSION);
index 4c99821d3c4b98ab8a5aca3e2c7820218621c785..705e04b34dda793d001c199fe0ed62da06664710 100644 (file)
@@ -159,6 +159,8 @@ int main(int argc, char **argv, char **envp)
                }
        }
 
+       eigrp_sw_version_initialize();
+
        /* EIGRP master init. */
        eigrp_master_init();
        eigrp_om->master = frr_init();
index 03fe412f1f84e79f016d1c247310281fa9a5ac06..e72048ecc39572c963d8653f380cf8bc1093a3d3 100644 (file)
@@ -71,6 +71,7 @@ extern int eigrp_unack_multicast_packet_retrans(struct thread *);
  * untill there is reason to have their own header, these externs are found in
  * eigrp_hello.c
  */
+extern void eigrp_sw_version_initialize(void);
 extern void eigrp_hello_send(struct eigrp_interface *, u_char,
                             struct in_addr *);
 extern void eigrp_hello_send_ack(struct eigrp_neighbor *);