]> git.proxmox.com Git - mirror_frr.git/blobdiff - bfdd/bfd.c
Merge pull request #12397 from opensourcerouting/vscode-intro
[mirror_frr.git] / bfdd / bfd.c
index 483beb1b17ceeca46dbd06f065e6f807f98c78c2..4367f253e11955f4e8a418c6681b12c2a278941a 100644 (file)
@@ -348,7 +348,7 @@ int bfd_session_enable(struct bfd_session *bs)
        /* Sanity check: don't leak open sockets. */
        if (bs->sock != -1) {
                if (bglobal.debug_peer_event)
-                       zlog_debug("session-enable: previous socket open");
+                       zlog_debug("%s: previous socket open", __func__);
 
                close(bs->sock);
                bs->sock = -1;
@@ -381,6 +381,9 @@ int bfd_session_enable(struct bfd_session *bs)
                ptm_bfd_start_xmt_timer(bs, false);
        }
 
+       /* initialize RTT */
+       bfd_rtt_init(bs);
+
        return 0;
 }
 
@@ -574,6 +577,9 @@ void ptm_bfd_sess_dn(struct bfd_session *bfd, uint8_t diag)
        memset(bfd->peer_hw_addr, 0, sizeof(bfd->peer_hw_addr));
        /* reset local address ,it might has been be changed after bfd is up*/
        memset(&bfd->local_address, 0, sizeof(bfd->local_address));
+
+       /* reset RTT */
+       bfd_rtt_init(bfd);
 }
 
 static struct bfd_session *bfd_find_disc(struct sockaddr_any *sa,
@@ -946,7 +952,7 @@ int ptm_bfd_sess_del(struct bfd_peer_cfg *bpc)
        }
 
        if (bglobal.debug_peer_event)
-               zlog_debug("session-delete: %s", bs_to_string(bs));
+               zlog_debug("%s: %s", __func__, bs_to_string(bs));
 
        control_notify_config(BCM_NOTIFY_CONFIG_DELETE, bs);
 
@@ -1950,40 +1956,38 @@ static int bfd_vrf_enable(struct vrf *vrf)
        if (bglobal.debug_zebra)
                zlog_debug("VRF enable add %s id %u", vrf->name, vrf->vrf_id);
 
-       if (vrf->vrf_id == VRF_DEFAULT ||
-           vrf_get_backend() == VRF_BACKEND_NETNS) {
-               if (!bvrf->bg_shop)
-                       bvrf->bg_shop = bp_udp_shop(vrf);
-               if (!bvrf->bg_mhop)
-                       bvrf->bg_mhop = bp_udp_mhop(vrf);
-               if (!bvrf->bg_shop6)
-                       bvrf->bg_shop6 = bp_udp6_shop(vrf);
-               if (!bvrf->bg_mhop6)
-                       bvrf->bg_mhop6 = bp_udp6_mhop(vrf);
-               if (!bvrf->bg_echo)
-                       bvrf->bg_echo = bp_echo_socket(vrf);
-               if (!bvrf->bg_echov6)
-                       bvrf->bg_echov6 = bp_echov6_socket(vrf);
-
-               if (!bvrf->bg_ev[0] && bvrf->bg_shop != -1)
-                       thread_add_read(master, bfd_recv_cb, bvrf,
-                                       bvrf->bg_shop, &bvrf->bg_ev[0]);
-               if (!bvrf->bg_ev[1] && bvrf->bg_mhop != -1)
-                       thread_add_read(master, bfd_recv_cb, bvrf,
-                                       bvrf->bg_mhop, &bvrf->bg_ev[1]);
-               if (!bvrf->bg_ev[2] && bvrf->bg_shop6 != -1)
-                       thread_add_read(master, bfd_recv_cb, bvrf,
-                                       bvrf->bg_shop6, &bvrf->bg_ev[2]);
-               if (!bvrf->bg_ev[3] && bvrf->bg_mhop6 != -1)
-                       thread_add_read(master, bfd_recv_cb, bvrf,
-                                       bvrf->bg_mhop6, &bvrf->bg_ev[3]);
-               if (!bvrf->bg_ev[4] && bvrf->bg_echo != -1)
-                       thread_add_read(master, bfd_recv_cb, bvrf,
-                                       bvrf->bg_echo, &bvrf->bg_ev[4]);
-               if (!bvrf->bg_ev[5] && bvrf->bg_echov6 != -1)
-                       thread_add_read(master, bfd_recv_cb, bvrf,
-                                       bvrf->bg_echov6, &bvrf->bg_ev[5]);
-       }
+       if (!bvrf->bg_shop)
+               bvrf->bg_shop = bp_udp_shop(vrf);
+       if (!bvrf->bg_mhop)
+               bvrf->bg_mhop = bp_udp_mhop(vrf);
+       if (!bvrf->bg_shop6)
+               bvrf->bg_shop6 = bp_udp6_shop(vrf);
+       if (!bvrf->bg_mhop6)
+               bvrf->bg_mhop6 = bp_udp6_mhop(vrf);
+       if (!bvrf->bg_echo)
+               bvrf->bg_echo = bp_echo_socket(vrf);
+       if (!bvrf->bg_echov6)
+               bvrf->bg_echov6 = bp_echov6_socket(vrf);
+
+       if (!bvrf->bg_ev[0] && bvrf->bg_shop != -1)
+               thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_shop,
+                               &bvrf->bg_ev[0]);
+       if (!bvrf->bg_ev[1] && bvrf->bg_mhop != -1)
+               thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_mhop,
+                               &bvrf->bg_ev[1]);
+       if (!bvrf->bg_ev[2] && bvrf->bg_shop6 != -1)
+               thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_shop6,
+                               &bvrf->bg_ev[2]);
+       if (!bvrf->bg_ev[3] && bvrf->bg_mhop6 != -1)
+               thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_mhop6,
+                               &bvrf->bg_ev[3]);
+       if (!bvrf->bg_ev[4] && bvrf->bg_echo != -1)
+               thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_echo,
+                               &bvrf->bg_ev[4]);
+       if (!bvrf->bg_ev[5] && bvrf->bg_echov6 != -1)
+               thread_add_read(master, bfd_recv_cb, bvrf, bvrf->bg_echov6,
+                               &bvrf->bg_ev[5]);
+
        if (vrf->vrf_id != VRF_DEFAULT) {
                bfdd_zclient_register(vrf->vrf_id);
                bfdd_sessions_enable_vrf(vrf);
@@ -2065,3 +2069,14 @@ unsigned long bfd_get_session_count(void)
 {
        return bfd_key_hash->count;
 }
+
+void bfd_rtt_init(struct bfd_session *bfd)
+{
+       uint8_t i;
+
+       /* initialize RTT */
+       bfd->rtt_valid = 0;
+       bfd->rtt_index = 0;
+       for (i = 0; i < BFD_RTT_SAMPLE; i++)
+               bfd->rtt[i] = 0;
+}