mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-30 00:19:28 +00:00
Merge pull request #10120 from idryzhov/bfd-detect-to
bfdd: fix detection timeout update
This commit is contained in:
commit
46565af731
21
bfdd/bfd.c
21
bfdd/bfd.c
@ -1226,27 +1226,6 @@ void bs_final_handler(struct bfd_session *bs)
|
|||||||
/* Apply new transmission timer immediately. */
|
/* Apply new transmission timer immediately. */
|
||||||
ptm_bfd_start_xmt_timer(bs, false);
|
ptm_bfd_start_xmt_timer(bs, false);
|
||||||
|
|
||||||
/*
|
|
||||||
* Detection timeout calculation:
|
|
||||||
* The minimum detection timeout is the remote detection
|
|
||||||
* multipler (number of packets to be missed) times the agreed
|
|
||||||
* transmission interval.
|
|
||||||
*
|
|
||||||
* RFC 5880, Section 6.8.4.
|
|
||||||
*
|
|
||||||
* TODO: support sending/counting more packets inside detection
|
|
||||||
* timeout.
|
|
||||||
*/
|
|
||||||
if (bs->timers.required_min_rx > bs->remote_timers.desired_min_tx)
|
|
||||||
bs->detect_TO = bs->remote_detect_mult
|
|
||||||
* bs->timers.required_min_rx;
|
|
||||||
else
|
|
||||||
bs->detect_TO = bs->remote_detect_mult
|
|
||||||
* bs->remote_timers.desired_min_tx;
|
|
||||||
|
|
||||||
/* Apply new receive timer immediately. */
|
|
||||||
bfd_recvtimer_update(bs);
|
|
||||||
|
|
||||||
/* Notify watchers about changed timers. */
|
/* Notify watchers about changed timers. */
|
||||||
control_notify_config(BCM_NOTIFY_CONFIG_UPDATE, bs);
|
control_notify_config(BCM_NOTIFY_CONFIG_UPDATE, bs);
|
||||||
}
|
}
|
||||||
|
@ -697,11 +697,26 @@ int bfd_recv_cb(struct thread *t)
|
|||||||
|
|
||||||
/* Handle poll finalization. */
|
/* Handle poll finalization. */
|
||||||
bs_final_handler(bfd);
|
bs_final_handler(bfd);
|
||||||
} else {
|
|
||||||
/* Received a packet, lets update the receive timer. */
|
|
||||||
bfd_recvtimer_update(bfd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Detection timeout calculation:
|
||||||
|
* The minimum detection timeout is the remote detection
|
||||||
|
* multipler (number of packets to be missed) times the agreed
|
||||||
|
* transmission interval.
|
||||||
|
*
|
||||||
|
* RFC 5880, Section 6.8.4.
|
||||||
|
*/
|
||||||
|
if (bfd->cur_timers.required_min_rx > bfd->remote_timers.desired_min_tx)
|
||||||
|
bfd->detect_TO = bfd->remote_detect_mult
|
||||||
|
* bfd->cur_timers.required_min_rx;
|
||||||
|
else
|
||||||
|
bfd->detect_TO = bfd->remote_detect_mult
|
||||||
|
* bfd->remote_timers.desired_min_tx;
|
||||||
|
|
||||||
|
/* Apply new receive timer immediately. */
|
||||||
|
bfd_recvtimer_update(bfd);
|
||||||
|
|
||||||
/* Handle echo timers changes. */
|
/* Handle echo timers changes. */
|
||||||
bs_echo_timer_handler(bfd);
|
bs_echo_timer_handler(bfd);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user