git: 4e681215ff62 - stable/13 - sctp: improve path verification
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 01 Feb 2023 22:48:31 UTC
The branch stable/13 has been updated by tuexen:
URL: https://cgit.FreeBSD.org/src/commit/?id=4e681215ff62e691d8d3cd6e884ed035f486f93c
commit 4e681215ff62e691d8d3cd6e884ed035f486f93c
Author: Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2022-05-14 06:07:28 +0000
Commit: Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2023-02-01 22:48:07 +0000
sctp: improve path verification
Ensure that a HB can be sent faster than a HB.Interval when performing
path verification of a reachable peer address.
Thanks to Alexander Funke for finding the issue and proposing a fix.
(cherry picked from commit aab6e5bd1e2b2919604eed68f76d4a7bb73ccb0c)
---
sys/netinet/sctp_timer.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sys/netinet/sctp_timer.c b/sys/netinet/sctp_timer.c
index baaed2c78fb1..c808b6751384 100644
--- a/sys/netinet/sctp_timer.c
+++ b/sys/netinet/sctp_timer.c
@@ -1441,7 +1441,8 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
(TAILQ_EMPTY(&stcb->asoc.sent_queue))) {
sctp_audit_stream_queues_for_size(inp, stcb);
}
- if (((net->dest_state & SCTP_ADDR_NOHB) == 0) &&
+ if ((((net->dest_state & SCTP_ADDR_NOHB) == 0) ||
+ (net->dest_state & SCTP_ADDR_UNCONFIRMED)) &&
(net_was_pf || ((net->dest_state & SCTP_ADDR_PF) == 0))) {
/*
* When moving to PF during threshold management, a HB has
@@ -1461,6 +1462,7 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
ms_gone_by = 0xffffffff;
}
if ((ms_gone_by >= net->heart_beat_delay) ||
+ (net->dest_state & SCTP_ADDR_UNCONFIRMED) ||
(net->dest_state & SCTP_ADDR_PF)) {
sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED);
}