]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: small BFD session notifier improvement
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Tue, 2 Mar 2021 11:52:35 +0000 (08:52 -0300)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Tue, 23 Mar 2021 15:40:09 +0000 (12:40 -0300)
Cache current monotime to avoid unnecessary calls.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
lib/bfd.c

index 65c5ad143f5fc7458a41ba625533e564aee863e7..176269cc5b2704149d0a9f98289bc813bc4f8165 100644 (file)
--- a/lib/bfd.c
+++ b/lib/bfd.c
@@ -1079,6 +1079,7 @@ static int zclient_bfd_session_update(ZAPI_CALLBACK_ARGS)
        struct interface *ifp;
        int remote_cbit = false;
        int state = BFD_STATUS_UNKNOWN;
+       time_t now;
        size_t addrlen;
        struct prefix dp;
        struct prefix sp;
@@ -1119,6 +1120,9 @@ static int zclient_bfd_session_update(ZAPI_CALLBACK_ARGS)
                break;
        }
 
+       /* Cache current time to avoid multiple monotime clock calls. */
+       now = monotime(NULL);
+
        /* Notify all matching sessions about update. */
        TAILQ_FOREACH (bsp, &bsglobal.bsplist, entry) {
                /* Skip disabled or not installed entries. */
@@ -1151,7 +1155,7 @@ static int zclient_bfd_session_update(ZAPI_CALLBACK_ARGS)
                if ((int)bsp->bss.state == state)
                        continue;
 
-               bsp->bss.last_event = monotime(NULL);
+               bsp->bss.last_event = now;
                bsp->bss.previous_state = bsp->bss.state;
                bsp->bss.state = state;
                bsp->bss.remote_cbit = remote_cbit;