From nobody Fri Sep 8 11:15:12 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RhtnF1PGPz4sKqp; Fri, 8 Sep 2023 11:15:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RhtnF0nSgz3GjZ; Fri, 8 Sep 2023 11:15:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1694171713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9V1eKKKLHpFSllCodwW5bkK6u8Td+meJI+qUx8qlkJs=; b=DiW4UYvLk9T7MP1Hai3w/OG5j+YgOJ8FqamfmikLYrzLVbb8BT8cNaptIsNE5eQLCTg9NJ 5A5zOLfJcYawC6c3W8iUFnO6P/3rZgce4IIvCXLV5u90vlqSxjmCWlOmrzzwpfVdXuMIgG R0r/BMTZqjzavuzz6QKM1Rapw+X0kGgPzWw+vUqXao1wn0fnJR/PZ7lvhg5gl1dMwiHNxh BC12/ShCy/YdtXDqisHRI+Orml7oUqAS5j271QdSiUQ7PRrI+W5KKG9wkPAUaoOiG6V1fa kRYk0t8IFNtz4RoA9IIvafk3ftfIDRXann7RS4UDFdIenV97mShZQD67gNfO+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1694171713; a=rsa-sha256; cv=none; b=r72BxTkgFw1zd+Ki0ZTs6kTysWyFLYeylVL9v1176ZXeRZmKsB1Ul6NPYBOztrUbEW2Flh +G9ybzmV0GgtbsyaVuVrbRd3cZMKgZ1nYdS/5AR7coLLfuIkBVVOeoO7kvogVxA6Q+1pyz TkADhFpdmbCFv6wRHYBkvs6VjAYpmggcNLLCsSxediMvht+HPRERc5+0eEOgFRwSubdh3N H6jLBk/Y4I8rh0oHHixub+krQpMNSm/rRzv8R2ph5b5A+5LcKdnh6s9lkWC9voBCy1LhfP I9SyRmjm+8Evq9k78vlP7sWhFNxJ7DKw7YnD6zBbfr6CXjz4j2cpvuMpVZ+F6Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1694171713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9V1eKKKLHpFSllCodwW5bkK6u8Td+meJI+qUx8qlkJs=; b=Own1FwVH+GmXPTPb7w+FF9Bt71hqe+tM6x+3rNqX6SSwUaC7A79xshvjOfpo0KYkI9Vgv6 11IRM1b+6i3qMvmJDm8L+/6c5hMaw1UnEOGPgoGCgrSbGoMe7S7N48bWwy1wS1/kJNqCLH NkNqQaVr50xb/AArYEOuyNw1PdC4I1peoZr4KxMbt7I0XuSg4++E/AESU/SqOjmxD1koi5 w1w2SujBMDmVBDP5unzVf9CQfsEWCJdRSWWpUt3sLpFhL2/3vspnPq93/oazfAFVu5mzva a3asy6E5QEOoA2IiOT9TUlBtNmWMWrwfOD8+nYrqiXkLC9fa67jLVXV9FfprhA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RhtnD6xqJzgHh; Fri, 8 Sep 2023 11:15:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 388BFCKE042406; Fri, 8 Sep 2023 11:15:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 388BFC90042403; Fri, 8 Sep 2023 11:15:12 GMT (envelope-from git) Date: Fri, 8 Sep 2023 11:15:12 GMT Message-Id: <202309081115.388BFC90042403@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: cd3770c5feb0 - main - sctp: cleanup SCTP AUTH related notification List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cd3770c5feb038f3904fdb4aa04e09da122f74e3 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=cd3770c5feb038f3904fdb4aa04e09da122f74e3 commit cd3770c5feb038f3904fdb4aa04e09da122f74e3 Author: Michael Tuexen AuthorDate: 2023-09-08 11:13:43 +0000 Commit: Michael Tuexen CommitDate: 2023-09-08 11:13:43 +0000 sctp: cleanup SCTP AUTH related notification This makes consistent use of the parameters and ensures that all SCTP AUTH related notifications are using sctp_ulp_notify(). No functional change intended. MFC after: 3 days --- sys/netinet/sctp_auth.c | 32 ++++++++++++++++---------------- sys/netinet/sctp_auth.h | 2 +- sys/netinet/sctputil.c | 15 ++++++--------- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/sys/netinet/sctp_auth.c b/sys/netinet/sctp_auth.c index 67f0d26fa0d5..3c1962233347 100644 --- a/sys/netinet/sctp_auth.c +++ b/sys/netinet/sctp_auth.c @@ -575,7 +575,7 @@ sctp_auth_key_release(struct sctp_tcb *stcb, uint16_t key_id, int so_locked) if ((skey->refcount <= 2) && (skey->deactivated)) { /* notify ULP that key is no longer used */ sctp_ulp_notify(SCTP_NOTIFY_AUTH_FREE_KEY, stcb, - key_id, 0, so_locked); + 0, &key_id, so_locked); SCTPDBG(SCTP_DEBUG_AUTH2, "%s: stcb %p key %u no longer used, %d\n", __func__, (void *)stcb, key_id, skey->refcount); @@ -1312,7 +1312,7 @@ sctp_deact_sharedkey(struct sctp_tcb *stcb, uint16_t keyid) /* are there other refcount holders on the key? */ if (skey->refcount == 1) { /* no other users, send a notification for this key */ - sctp_ulp_notify(SCTP_NOTIFY_AUTH_FREE_KEY, stcb, keyid, 0, + sctp_ulp_notify(SCTP_NOTIFY_AUTH_FREE_KEY, stcb, 0, &keyid, SCTP_SO_LOCKED); } @@ -1654,15 +1654,10 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth, return (-1); } /* generate a notification if this is a new key id */ - if (stcb->asoc.authinfo.recv_keyid != shared_key_id) - /* - * sctp_ulp_notify(SCTP_NOTIFY_AUTH_NEW_KEY, stcb, - * shared_key_id, (void - * *)stcb->asoc.authinfo.recv_keyid); - */ - sctp_notify_authentication(stcb, SCTP_AUTH_NEW_KEY, - shared_key_id, stcb->asoc.authinfo.recv_keyid, - SCTP_SO_NOT_LOCKED); + if (stcb->asoc.authinfo.recv_keyid != shared_key_id) { + sctp_ulp_notify(SCTP_NOTIFY_AUTH_NEW_KEY, stcb, 0, + &shared_key_id, SCTP_SO_NOT_LOCKED); + } /* compute a new recv assoc key and cache it */ if (stcb->asoc.authinfo.recv_key != NULL) sctp_free_key(stcb->asoc.authinfo.recv_key); @@ -1705,7 +1700,7 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth, */ void sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, - uint16_t keyid, uint16_t alt_keyid, int so_locked) + uint16_t keyid, int so_locked) { struct mbuf *m_notify; struct sctp_authkey_event *auth; @@ -1714,8 +1709,7 @@ sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, if ((stcb == NULL) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || - (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) - ) { + (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { /* If the socket is gone we are out of here */ return; } @@ -1737,7 +1731,12 @@ sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, auth->auth_flags = 0; auth->auth_length = sizeof(*auth); auth->auth_keynumber = keyid; - auth->auth_altkeynumber = alt_keyid; + /* XXXMT: The following is BSD specific. */ + if (indication == SCTP_AUTH_NEW_KEY) { + auth->auth_altkeynumber = stcb->asoc.authinfo.recv_keyid; + } else { + auth->auth_altkeynumber = 0; + } auth->auth_indication = indication; auth->auth_assoc_id = sctp_get_associd(stcb); @@ -1757,7 +1756,8 @@ sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, /* not that we need this */ control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, control, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, so_locked); + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_NOT_HELD, so_locked); } /*- diff --git a/sys/netinet/sctp_auth.h b/sys/netinet/sctp_auth.h index 8bfdbaa6d4f6..279ecb6831cd 100644 --- a/sys/netinet/sctp_auth.h +++ b/sys/netinet/sctp_auth.h @@ -212,7 +212,7 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *ch, struct mbuf *m, uint32_t offset); extern void sctp_notify_authentication(struct sctp_tcb *stcb, - uint32_t indication, uint16_t keyid, uint16_t alt_keyid, int so_locked); + uint32_t indication, uint16_t keyid, int so_locked); extern int sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit); diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 381f67f40b99..ea960a3e6376 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -4197,19 +4197,16 @@ sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, sctp_notify_shutdown_event(stcb); break; case SCTP_NOTIFY_AUTH_NEW_KEY: - sctp_notify_authentication(stcb, SCTP_AUTH_NEW_KEY, error, - (uint16_t)(uintptr_t)data, - so_locked); + sctp_notify_authentication(stcb, SCTP_AUTH_NEW_KEY, + *(uint16_t *)data, so_locked); break; case SCTP_NOTIFY_AUTH_FREE_KEY: - sctp_notify_authentication(stcb, SCTP_AUTH_FREE_KEY, error, - (uint16_t)(uintptr_t)data, - so_locked); + sctp_notify_authentication(stcb, SCTP_AUTH_FREE_KEY, + *(uint16_t *)data, so_locked); break; case SCTP_NOTIFY_NO_PEER_AUTH: - sctp_notify_authentication(stcb, SCTP_AUTH_NO_AUTH, error, - (uint16_t)(uintptr_t)data, - so_locked); + sctp_notify_authentication(stcb, SCTP_AUTH_NO_AUTH, + 0, so_locked); break; case SCTP_NOTIFY_SENDER_DRY: sctp_notify_sender_dry_event(stcb, so_locked);