From nobody Tue Jan 27 18:44:01 2026 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 4f0vSd3q82z6QFvH for ; Tue, 27 Jan 2026 18:44:01 +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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f0vSd1rVVz3qwn for ; Tue, 27 Jan 2026 18:44:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769539441; 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=Eom5dvy2Gq5K7mDJBvujTJeXWzu00VMqKOT4SGIhnlM=; b=dL/e1nIYDWS+YBpu3qpEn4OJzMQu9EG+VZ96l9M71/zUxQSQZnx/llNd+z7lPYkSCe9rI6 HRLryv3mmZBs55X/9Jua+ykh3U8JMteIREwW/3ZmStpFh9yeClWkhn8GQjNS4ilXeubZxB GW4PjUwvY+bba8m/z+/tloAxFrha4h6MHPm/Nx5jZzj2Wyz/7k4VC0Vq2+taYDPF0zXxEt RExORAk0Ah4d/LdmJmqYL0ovokOUix2VfSdnyNgPrU0buZsd5IQZXa2FsC5qPih3akdAF5 yo2RPfE+qjtXMnldfA9C0ryJgWMn0XjVODY7CTSy6SrZ5m9/cpOWIKk0iYujPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769539441; 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=Eom5dvy2Gq5K7mDJBvujTJeXWzu00VMqKOT4SGIhnlM=; b=Yq64voUNkHEyo0hBKYKay4sFhPmh26X0+021oRg0kpBEnuJBnrSV6kru9yNieY8E4Og7c2 jRxQF8Ert3MjGtKud0RaHdPsWB50tm5+F4ha8YHAbUN6x+6zuHuKtmdOqTG8iY93OTw2pu XStRT/opEdPzMv+Yq+0wfdfC4OY/hQAkpSKw++KXhebNj6CGW9FEIcQY6t/X3ZHIThaskl wcEvqLPBU8WDzi0xhVhjFJGPxOeh7wu6WAAydXa7Liz91QsFAemUpUc2gSlyrzNAAoab6x RnCR9G7sDvKccAGttO/ilm2E6xT3Wo2I1U0FaRc915abNcYlz/I5S9AvkJuo2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769539441; a=rsa-sha256; cv=none; b=D2HXlWS7yZMRd5RXAXmTxJ04VVUbCDCPWsZJB++THsNtm0CdrBFaFjShzInSExv2nvDhnv FS8QB2CcBMH48Ctps6qzo6RZXUEqutpacDiL8R15NkR7GSVpXaAW0yO+CuJqvlTgOkzvBH tQEh/jkVXuuBwWfym58PZg0l6yoKVMo97leDASjcYEgBS30/4SLiQRtz9CfFAGdmoPFsve F6ETgNgYBpOhZ4hQaDrUlQcBI6p/OH9QIJopPyPwdn6gbZZRyxx+VmvB30X0OHcFQ0I1Sz goxsVf7E5L2U9O1VA+b6dsaFWVlFh2s2ijvWwsv6uIysdF4obAJTzp1RUs7N4A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f0vSd1KPYz3qg for ; Tue, 27 Jan 2026 18:44:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id f87c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 27 Jan 2026 18:44:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: d9f3d4371442 - stable/14 - ctld: Factor out functions to parse dscp and pcp properties 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d9f3d437144290e46b72235187c4f4e1e6b07846 Auto-Submitted: auto-generated Date: Tue, 27 Jan 2026 18:44:01 +0000 Message-Id: <69790771.f87c.2b2b5c32@gitrepo.freebsd.org> The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d9f3d437144290e46b72235187c4f4e1e6b07846 commit d9f3d437144290e46b72235187c4f4e1e6b07846 Author: John Baldwin AuthorDate: 2025-02-05 19:53:35 +0000 Commit: John Baldwin CommitDate: 2026-01-27 18:15:56 +0000 ctld: Factor out functions to parse dscp and pcp properties Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D48769 (cherry picked from commit aa060232706cc9355d2585d765989c7459824b99) --- usr.sbin/ctld/uclparse.c | 157 +++++++++++++++++++++++++++-------------------- 1 file changed, 89 insertions(+), 68 deletions(-) diff --git a/usr.sbin/ctld/uclparse.c b/usr.sbin/ctld/uclparse.c index 69efba823cc5..6ddbb83b6a12 100644 --- a/usr.sbin/ctld/uclparse.c +++ b/usr.sbin/ctld/uclparse.c @@ -492,6 +492,93 @@ uclparse_auth_group(const char *name, const ucl_object_t *top) return (true); } +static bool +uclparse_dscp(const char *group_type, struct portal_group *portal_group, + const ucl_object_t *obj) +{ + const char *key; + + if ((obj->type != UCL_STRING) && (obj->type != UCL_INT)) { + log_warnx("\"dscp\" property of %s group \"%s\" is not a " + "string or integer", group_type, portal_group->pg_name); + return (false); + } + if (obj->type == UCL_INT) + portal_group->pg_dscp = ucl_object_toint(obj); + else { + key = ucl_object_tostring(obj); + if (strcmp(key, "0x") == 0) + portal_group->pg_dscp = strtol(key + 2, NULL, 16); + else if (strcmp(key, "be") || strcmp(key, "cs0")) + portal_group->pg_dscp = IPTOS_DSCP_CS0 >> 2; + else if (strcmp(key, "ef")) + portal_group->pg_dscp = IPTOS_DSCP_EF >> 2; + else if (strcmp(key, "cs0")) + portal_group->pg_dscp = IPTOS_DSCP_CS0 >> 2; + else if (strcmp(key, "cs1")) + portal_group->pg_dscp = IPTOS_DSCP_CS1 >> 2; + else if (strcmp(key, "cs2")) + portal_group->pg_dscp = IPTOS_DSCP_CS2 >> 2; + else if (strcmp(key, "cs3")) + portal_group->pg_dscp = IPTOS_DSCP_CS3 >> 2; + else if (strcmp(key, "cs4")) + portal_group->pg_dscp = IPTOS_DSCP_CS4 >> 2; + else if (strcmp(key, "cs5")) + portal_group->pg_dscp = IPTOS_DSCP_CS5 >> 2; + else if (strcmp(key, "cs6")) + portal_group->pg_dscp = IPTOS_DSCP_CS6 >> 2; + else if (strcmp(key, "cs7")) + portal_group->pg_dscp = IPTOS_DSCP_CS7 >> 2; + else if (strcmp(key, "af11")) + portal_group->pg_dscp = IPTOS_DSCP_AF11 >> 2; + else if (strcmp(key, "af12")) + portal_group->pg_dscp = IPTOS_DSCP_AF12 >> 2; + else if (strcmp(key, "af13")) + portal_group->pg_dscp = IPTOS_DSCP_AF13 >> 2; + else if (strcmp(key, "af21")) + portal_group->pg_dscp = IPTOS_DSCP_AF21 >> 2; + else if (strcmp(key, "af22")) + portal_group->pg_dscp = IPTOS_DSCP_AF22 >> 2; + else if (strcmp(key, "af23")) + portal_group->pg_dscp = IPTOS_DSCP_AF23 >> 2; + else if (strcmp(key, "af31")) + portal_group->pg_dscp = IPTOS_DSCP_AF31 >> 2; + else if (strcmp(key, "af32")) + portal_group->pg_dscp = IPTOS_DSCP_AF32 >> 2; + else if (strcmp(key, "af33")) + portal_group->pg_dscp = IPTOS_DSCP_AF33 >> 2; + else if (strcmp(key, "af41")) + portal_group->pg_dscp = IPTOS_DSCP_AF41 >> 2; + else if (strcmp(key, "af42")) + portal_group->pg_dscp = IPTOS_DSCP_AF42 >> 2; + else if (strcmp(key, "af43")) + portal_group->pg_dscp = IPTOS_DSCP_AF43 >> 2; + else { + log_warnx("\"dscp\" property value is not a supported textual value"); + return (false); + } + } + return (true); +} + +static bool +uclparse_pcp(const char *group_type, struct portal_group *portal_group, + const ucl_object_t *obj) +{ + if (obj->type != UCL_INT) { + log_warnx("\"pcp\" property of %s group \"%s\" is not an " + "integer", group_type, portal_group->pg_name); + return (false); + } + portal_group->pg_pcp = ucl_object_toint(obj); + if (!((portal_group->pg_pcp >= 0) && (portal_group->pg_pcp <= 7))) { + log_warnx("invalid \"pcp\" value %d, using default", + portal_group->pg_pcp); + portal_group->pg_pcp = -1; + } + return (true); +} + static bool uclparse_portal_group(const char *name, const ucl_object_t *top) { @@ -613,79 +700,13 @@ uclparse_portal_group(const char *name, const ucl_object_t *top) } if (!strcmp(key, "dscp")) { - if ((obj->type != UCL_STRING) && (obj->type != UCL_INT)) { - log_warnx("\"dscp\" property of portal group " - "\"%s\" is not a string or integer", portal_group->pg_name); + if (!uclparse_dscp("portal", portal_group, obj)) return (false); - } - if (obj->type == UCL_INT) - portal_group->pg_dscp = ucl_object_toint(obj); - else { - key = ucl_object_tostring(obj); - if (strcmp(key, "0x") == 0) - portal_group->pg_dscp = strtol(key + 2, NULL, 16); - else if (strcmp(key, "be") || strcmp(key, "cs0")) - portal_group->pg_dscp = IPTOS_DSCP_CS0 >> 2; - else if (strcmp(key, "ef")) - portal_group->pg_dscp = IPTOS_DSCP_EF >> 2; - else if (strcmp(key, "cs0")) - portal_group->pg_dscp = IPTOS_DSCP_CS0 >> 2; - else if (strcmp(key, "cs1")) - portal_group->pg_dscp = IPTOS_DSCP_CS1 >> 2; - else if (strcmp(key, "cs2")) - portal_group->pg_dscp = IPTOS_DSCP_CS2 >> 2; - else if (strcmp(key, "cs3")) - portal_group->pg_dscp = IPTOS_DSCP_CS3 >> 2; - else if (strcmp(key, "cs4")) - portal_group->pg_dscp = IPTOS_DSCP_CS4 >> 2; - else if (strcmp(key, "cs5")) - portal_group->pg_dscp = IPTOS_DSCP_CS5 >> 2; - else if (strcmp(key, "cs6")) - portal_group->pg_dscp = IPTOS_DSCP_CS6 >> 2; - else if (strcmp(key, "cs7")) - portal_group->pg_dscp = IPTOS_DSCP_CS7 >> 2; - else if (strcmp(key, "af11")) - portal_group->pg_dscp = IPTOS_DSCP_AF11 >> 2; - else if (strcmp(key, "af12")) - portal_group->pg_dscp = IPTOS_DSCP_AF12 >> 2; - else if (strcmp(key, "af13")) - portal_group->pg_dscp = IPTOS_DSCP_AF13 >> 2; - else if (strcmp(key, "af21")) - portal_group->pg_dscp = IPTOS_DSCP_AF21 >> 2; - else if (strcmp(key, "af22")) - portal_group->pg_dscp = IPTOS_DSCP_AF22 >> 2; - else if (strcmp(key, "af23")) - portal_group->pg_dscp = IPTOS_DSCP_AF23 >> 2; - else if (strcmp(key, "af31")) - portal_group->pg_dscp = IPTOS_DSCP_AF31 >> 2; - else if (strcmp(key, "af32")) - portal_group->pg_dscp = IPTOS_DSCP_AF32 >> 2; - else if (strcmp(key, "af33")) - portal_group->pg_dscp = IPTOS_DSCP_AF33 >> 2; - else if (strcmp(key, "af41")) - portal_group->pg_dscp = IPTOS_DSCP_AF41 >> 2; - else if (strcmp(key, "af42")) - portal_group->pg_dscp = IPTOS_DSCP_AF42 >> 2; - else if (strcmp(key, "af43")) - portal_group->pg_dscp = IPTOS_DSCP_AF43 >> 2; - else { - log_warnx("\"dscp\" property value is not a supported textual value"); - return (false); - } - } } if (!strcmp(key, "pcp")) { - if (obj->type != UCL_INT) { - log_warnx("\"pcp\" property of portal group " - "\"%s\" is not an integer", portal_group->pg_name); + if (!uclparse_pcp("portal", portal_group, obj)) return (false); - } - portal_group->pg_pcp = ucl_object_toint(obj); - if (!((portal_group->pg_pcp >= 0) && (portal_group->pg_pcp <= 7))) { - log_warnx("invalid \"pcp\" value %d, using default", portal_group->pg_pcp); - portal_group->pg_pcp = -1; - } } }