From nobody Mon Feb 19 08:07:45 2024 X-Original-To: dev-commits-src-all@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 4TdZsG1LQgz5B2pH; Mon, 19 Feb 2024 08:07:46 +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 4TdZsF6GXfz4KHc; Mon, 19 Feb 2024 08:07:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708330065; 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=7MrIM17flnfbSg84KsL8UzeUtK+Mp92o5FoKmQLwuYk=; b=PB79kRJjvet5UyUBAqDBwhptvIRIzicIkl1XN1fS6ha6boGYpY/6lK5Bss9CldSmlnOnZw pul3lsABz5KSKfmt4GMjGyQpNtOY9+LlbmBWNvJKRFtlQVMsp5bywIekrP0kV25jouHeIb a1rndEr96bPNhRQwc8LXjZv8J/bIl3Y7XYB9WSRDw7URNi2BdG5XYY9Q2hW2M593WszWjX iQF2byMaxC0arnuKY8VnoHfNKeRGUA1i9CqO207bZOtjqWOP6m3P4haMMn8VXRvZ0MOrfL PToZ7YKUurSW8KZVQ+ZxVqYCoY8v8XhGl6dESq/Pg6nbSCB/kM7bRpizFPl+xA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708330065; 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=7MrIM17flnfbSg84KsL8UzeUtK+Mp92o5FoKmQLwuYk=; b=eJ6Jx//9YlhZvl1CzCu/qlCy8mHex9BgZzmmqg7Pp1fdtOGAdRAJjSgE8nqrYCuJcHSF1Q Z90m0PtawsOpo870zKZHIYexwbizC+uCUw5xWRBIGkw37joTIpoibZz1J6+IiL1mytJSFh YC5L1sWqZpzfH7K1tZT2685EWrtRhzep9pnonRwT5tqTC4IdsyZxytj8eItEBXGybaHWkg OkRPy1seLHeG8+TwIvZJAqWP+DqafBWSnGGDen8IvEi64BrmrCMF+orhMBJfGaxi5/isIW xEd8+i3w0m23kcNgDtVu425L7ZQ4Cb0Hpb1jECvFCqKWgQuJNCp75+vJfXBWHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1708330065; a=rsa-sha256; cv=none; b=wsPoVBV5tlzGMtHa6a1WeP1QDuQD0owlBySLoTS2VPuL8wg08OhDkm/hv862fTIEePXwCN Hus9PlAue3ZZ3319aLhd/go1KwEYHamA0Di9Cg6bcQ/KpXyoMUGINcNaGKjxQeJ8oI/N89 atIKXOf/VnXMtNVzEVtpCec7dEGnIzT25qyz/ZOrZPnYWMvSGSJIjMdiob99rfdLFbk4Wu 9CUWE1z1vvZI3UiIETvIBMz4KpgGdctTY0YhBulShvkxXsk2WM8JJXmug4ELFLQt1RbE1T bnoestyvSgq8b/2qtZm/Ldy45HQBmlgOevjQFjNhENWdoUf+M4iwbuxJLwJQog== 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 4TdZsF55kSzRKm; Mon, 19 Feb 2024 08:07:45 +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 41J87ja7015674; Mon, 19 Feb 2024 08:07:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 41J87jpX015671; Mon, 19 Feb 2024 08:07:45 GMT (envelope-from git) Date: Mon, 19 Feb 2024 08:07:45 GMT Message-Id: <202402190807.41J87jpX015671@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 97186b5cf5aa - stable/13 - wpa: ctrl_iface set sendbuf size List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 97186b5cf5aa1d97f1a4e8e1b811315a39fb163d Auto-Submitted: auto-generated The branch stable/13 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=97186b5cf5aa1d97f1a4e8e1b811315a39fb163d commit 97186b5cf5aa1d97f1a4e8e1b811315a39fb163d Author: Bjoern A. Zeeb AuthorDate: 2023-11-12 20:33:41 +0000 Commit: Bjoern A. Zeeb CommitDate: 2024-02-19 08:01:59 +0000 wpa: ctrl_iface set sendbuf size In order to avoid running into the default net.local.dgram.maxdgram of 2K currently when calling sendto(2) try to set the sndbuf size to the maximum ctrl message size. While on 14 and 15 this does not actually raise the limit anymore (and be7c095ac99ad29fd72b780c7d58949a38656c66 raised it for syslogd and this), FreeBSD 13 still requires this change and it will work as expected there. In addition we always ensure a large enough send buffer this way independent of kernel defaults. The problem occured, e.g., when the scan_list result had enough BSSIDs so the text output would exceed 2048 bytes. Sponsored by: The FreeBSD Foundation PR: 274990 Reviewed by: cy, adrian (with previous comment) Differential Revision: https://reviews.freebsd.org/D42558 (cherry picked from commit 1edc20b76953d9ef571b0bcf89b206b98ed13d9b) --- contrib/wpa/wpa_supplicant/ctrl_iface_unix.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/contrib/wpa/wpa_supplicant/ctrl_iface_unix.c b/contrib/wpa/wpa_supplicant/ctrl_iface_unix.c index 639573dae75e..deeed2b11833 100644 --- a/contrib/wpa/wpa_supplicant/ctrl_iface_unix.c +++ b/contrib/wpa/wpa_supplicant/ctrl_iface_unix.c @@ -506,6 +506,10 @@ static int wpas_ctrl_iface_open_sock(struct wpa_supplicant *wpa_s, struct group *grp; char *endp; int flags; +#if defined(__FreeBSD__) + int optval, rc; + socklen_t optlen; +#endif buf = os_strdup(wpa_s->conf->ctrl_interface); if (buf == NULL) @@ -679,6 +683,22 @@ havesock: } } +#if defined(__FreeBSD__) + /* Ensure we can send a full length message atomically. */ + optval = 0; + optlen = sizeof(optval); + if (getsockopt(priv->sock, SOL_SOCKET, SO_SNDBUF, &optval, &optlen) == -1) { + wpa_printf(MSG_INFO, "failed to get sndbuf for sock=%d: %s", + priv->sock, strerror(errno)); + } else if (optval < CTRL_IFACE_MAX_LEN) { + optval = CTRL_IFACE_MAX_LEN; + if (setsockopt(priv->sock, SOL_SOCKET, SO_SNDBUF, &optval, + sizeof(optval)) == -1) + wpa_printf(MSG_ERROR, "failed to set sndbuf for " + "sock=%d: %s", priv->sock, strerror(errno)); + } +#endif + eloop_register_read_sock(priv->sock, wpa_supplicant_ctrl_iface_receive, wpa_s, priv); wpa_msg_register_cb(wpa_supplicant_ctrl_iface_msg_cb);