]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Switch to using monotime(NULL) for re->uptime 4320/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 11 May 2019 05:44:42 +0000 (01:44 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 11 May 2019 05:44:42 +0000 (01:44 -0400)
The re->uptime usage of time(NULL) leaves it open to
timing changes from outside influence.  Switching
to monotime allows us to ensure that we have a timestamp
that is always increasing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/redistribute.c
zebra/rt_netlink.c
zebra/zapi_msg.c
zebra/zebra_rib.c
zebra/zebra_vty.c

index 0071e001c642d9fb92d8ccbe93d541931f5fef16..fe064f847a284e1f51863b43a91f737836506324 100644 (file)
@@ -614,7 +614,7 @@ int zebra_add_import_table_entry(struct route_node *rn, struct route_entry *re,
        newre->mtu = re->mtu;
        newre->table = 0;
        newre->nexthop_num = 0;
-       newre->uptime = time(NULL);
+       newre->uptime = monotime(NULL);
        newre->instance = re->table;
        route_entry_copy_nexthops(newre, re->ng.nexthop);
 
index 289ed5a15b147acda0cfe996c384ba967cbeff29..def5bf7d88947db03ff7ec48e67feb78dadf4efe 100644 (file)
@@ -583,7 +583,7 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,
                        re->vrf_id = vrf_id;
                        re->table = table;
                        re->nexthop_num = 0;
-                       re->uptime = time(NULL);
+                       re->uptime = monotime(NULL);
                        re->tag = tag;
 
                        for (;;) {
index 7f6af820185750e0fa43c2a31e83e2153d75a7e9..974cc9de301e369c9b6cb606e4ac175810486fcc 100644 (file)
@@ -1388,7 +1388,7 @@ static void zread_route_add(ZAPI_HANDLER_ARGS)
        re->type = api.type;
        re->instance = api.instance;
        re->flags = api.flags;
-       re->uptime = time(NULL);
+       re->uptime = monotime(NULL);
        re->vrf_id = vrf_id;
        if (api.tableid && vrf_id == VRF_DEFAULT)
                re->table = api.tableid;
index 3623852afd0bab61071c9a930661420f33ea9ab9..7232e0225e994217ae0fba83ccc5c93d1227e5d3 100644 (file)
@@ -3003,7 +3003,7 @@ int rib_add(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,
        re->table = table_id;
        re->vrf_id = vrf_id;
        re->nexthop_num = 0;
-       re->uptime = time(NULL);
+       re->uptime = monotime(NULL);
        re->tag = tag;
 
        /* Add nexthop. */
index 77795c6152393b74920c80d0055d65d49a337451..c4249b6366496dc9a9e4be9190c6251d931dc239 100644 (file)
@@ -230,7 +230,7 @@ static void vty_show_ip_route_detail(struct vty *vty, struct route_node *rn,
                time_t uptime;
                struct tm *tm;
 
-               uptime = time(NULL);
+               uptime = monotime(NULL);
                uptime -= re->uptime;
                tm = gmtime(&uptime);
 
@@ -385,7 +385,7 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn,
        struct tm *tm;
        rib_dest_t *dest = rib_dest_from_rnode(rn);
 
-       uptime = time(NULL);
+       uptime = monotime(NULL);
        uptime -= re->uptime;
        tm = gmtime(&uptime);