git: cee09bda03c8 - main - sctp: allow disabling of SCTP_ACCEPT_ZERO_CHECKSUM socket option

From: Michael Tuexen <tuexen_at_FreeBSD.org>
Date: Wed, 15 Mar 2023 21:57:34 UTC
The branch main has been updated by tuexen:

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

commit cee09bda03c8be540f1c02d933db714ee2bd6ec7
Author:     Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2023-03-15 21:55:23 +0000
Commit:     Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2023-03-15 21:55:23 +0000

    sctp: allow disabling of SCTP_ACCEPT_ZERO_CHECKSUM socket option
---
 sys/netinet/sctp_usrreq.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c
index 57d5abdebd30..65edfb49a955 100644
--- a/sys/netinet/sctp_usrreq.c
+++ b/sys/netinet/sctp_usrreq.c
@@ -6840,18 +6840,10 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
 
 			SCTP_CHECK_AND_CAST(value, optval, uint32_t, optsize);
 			SCTP_INP_WLOCK(inp);
-			if (*value == 0) {
-				/*
-				 * Do not allow turning zero checksum
-				 * acceptance off again, since this could
-				 * result in inconsistent behaviour for
-				 * listeners.
-				 */
-				if (inp->zero_checksum > 0) {
-					error = EINVAL;
-				}
-			} else {
+			if (*value != 0) {
 				inp->zero_checksum = 1;
+			} else {
+				inp->zero_checksum = 0;
 			}
 			SCTP_INP_WUNLOCK(inp);
 			break;