The branch stable/13 has been updated by tuexen:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=1d39f58d735c64e5878f4bfb1ec53397bd5008c8

commit 1d39f58d735c64e5878f4bfb1ec53397bd5008c8
Author:     Michael Tuexen <tue...@freebsd.org>
AuthorDate: 2024-12-31 16:29:04 +0000
Commit:     Michael Tuexen <tue...@freebsd.org>
CommitDate: 2025-02-05 20:13:25 +0000

    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
    Sponsored by:           Netflix, Inc.
    Differential Revision:  https://reviews.freebsd.org/D48261
    
    (cherry picked from commit b47dcb4b1ff16e6af2e07798f6fe06580b4eddf0)
---
 sys/netinet/tcp_stacks/bbr.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c
index 7faeadabf203..1a67bbbdd08f 100644
--- a/sys/netinet/tcp_stacks/bbr.c
+++ b/sys/netinet/tcp_stacks/bbr.c
@@ -14643,6 +14643,7 @@ static int
 bbr_get_sockopt(struct socket *so, struct sockopt *sopt,
     struct inpcb *inp, struct tcpcb *tp, struct tcp_bbr *bbr)
 {
+       uint64_t loptval;
        int32_t error, optval;
 
        /*
@@ -14698,7 +14699,7 @@ bbr_get_sockopt(struct socket *so, 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;
@@ -14782,7 +14783,10 @@ bbr_get_sockopt(struct socket *so, 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);
 }
 

Reply via email to