TCP BBR: fix getsockopt() for TCP_BBR_USEDEL_RATE

Actually implement the IPPROTO_TCP-level socket option
TCP_BBR_USEDEL_RATE.

Reviewed by:		rrs
CID:			1523813
CID:			1523814
MFC after:		1 week
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D48261
This commit is contained in:
Michael Tuexen
2024-12-31 17:29:04 +01:00
parent 4f3a0c7197
commit b47dcb4b1f
+6 -2
View File
@@ -14587,6 +14587,7 @@ bbr_get_sockopt(struct tcpcb *tp, struct sockopt *sopt)
{
struct inpcb *inp = tptoinpcb(tp);
struct tcp_bbr *bbr;
uint64_t loptval;
int32_t error, optval;
bbr = (struct tcp_bbr *)tp->t_fb_ptr;
@@ -14647,7 +14648,7 @@ bbr_get_sockopt(struct tcpcb *tp, struct sockopt *sopt)
optval = bbr->rc_loss_exit;
break;
case TCP_BBR_USEDEL_RATE:
error = EINVAL;
loptval = get_filter_value(&bbr->r_ctl.rc_delrate);
break;
case TCP_BBR_MIN_RTO:
optval = bbr->r_ctl.rc_min_rto_ms;
@@ -14731,7 +14732,10 @@ bbr_get_sockopt(struct tcpcb *tp, struct sockopt *sopt)
break;
}
INP_WUNLOCK(inp);
error = sooptcopyout(sopt, &optval, sizeof optval);
if (sopt->sopt_name == TCP_BBR_USEDEL_RATE)
error = sooptcopyout(sopt, &loptval, sizeof loptval);
else
error = sooptcopyout(sopt, &optval, sizeof optval);
return (error);
}