From nobody Fri Jan 13 21:25:38 2023 X-Original-To: dev-commits-src-branches@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 4NtvbQ4w6Qz2ql5m; Fri, 13 Jan 2023 21:25:38 +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 4NtvbQ47LPz43Sq; Fri, 13 Jan 2023 21:25:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1673645138; 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=9c7EID0ej/fh7dJh8tDCVvz5myNT2TErWVIZ6LFwDyw=; b=NAePTNrqF/uqd9VY5wSFhgyPGL6igZoV9wHy6SX+6/AMkflMQcF+QUhC2dxJYiQA3AF/1t Aye8NEX/M1G/EarWqqujvyo09UV7tk1FmDFvT/RHHVfm5YiX/dwEoyYzKx/+v+O8/x05gR JDB7L1vYhDL5Nyn2w2Hsi310oPbB5Ln2h1MikTJJ/eZan4M444zWj+Zt1bdqttPp6u/7vT LMkqcAmFN44kmrbLBjXw0CvRqjjiDAGqGq+9WQJN3yWlJ7E0Yz9UKCrMvhKi6Lt6vvBtTN eJ8ylHbRlMX2+nZ2COlZqjaqjaqeWvTAo0WbhdOHcILKT5+hVH2p0QvYblUvXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1673645138; 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=9c7EID0ej/fh7dJh8tDCVvz5myNT2TErWVIZ6LFwDyw=; b=xPEY7oWn7WK5la6yY2hbHRzpxRwuXxZIkAmnAphK426uuR2k2M4eK3uJhcXDOFhEJ/+a47 i5Iw+K48d7sIIcMFEEHEyv3HWl8SX6WwteCtf3iy1Q6gPSKYx5EfPM1K+9gzS72SOM6D3N 8Ww4TJRyCqXW+ZkQYOHAtIaqgpZxZ1hkzgD8ysaAIBHyj/SiM2JTogWBWNKP2SFRu57676 j6yTwQAiUiP31zep0Dz8Jlr+51HM7Al1X9OXqcYqoPoJMiwbkP1naeg2k34kGUhg4Q1Urs roxwfkMP86XDy60Pcoe1EMe3aKqxGf/lJXU7RjTfnPNQdpReHLD+/5Fwx3Op8Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1673645138; a=rsa-sha256; cv=none; b=LT7OCOtzFcBmTrLuSrUB49gAqxYMA0cCGJKVMYeDFxfMAUEoFvtHMelEqmEqQFlQqRq0A/ YgsWKZkfnxtXrZuwceIQvsJ1L0Zpc4pUtHw/NcX4SxYDAad6VPBCLj9GwHuphyIcG+kst2 XMFJYfiERAW0scI/g6UYn5RtjTdaZynyX5RCPf7xcQ0aCpe6NLGLsjXg0fHKh0gTa9oO0S kj5E4iVYjGHiINRgbUx9SVoKl/mpbCp5gFvaE8gHSVjQQq5h38SMPOBFvQVElZubVvKPU7 YLW0BXki2HlD+YUj1ZonGDMHf+n1tsuQwM7c1BAG75O0hsI132eXZYVaDhBBCg== 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 4NtvbQ38LGzMvH; Fri, 13 Jan 2023 21:25:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30DLPcXp042125; Fri, 13 Jan 2023 21:25:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30DLPcPV042124; Fri, 13 Jan 2023 21:25:38 GMT (envelope-from git) Date: Fri, 13 Jan 2023 21:25:38 GMT Message-Id: <202301132125.30DLPcPV042124@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 23dcc3104b99 - stable/13 - net: constantify radix.c functions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: melifaro X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 23dcc3104b993cb84fdf2a17407a5f2fc8c76103 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=23dcc3104b993cb84fdf2a17407a5f2fc8c76103 commit 23dcc3104b993cb84fdf2a17407a5f2fc8c76103 Author: Alexander V. Chernikov AuthorDate: 2022-07-28 13:04:43 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-01-13 21:24:11 +0000 net: constantify radix.c functions Mark dst/mask public API functions fields as const to clearly indicate that these parameters are not modified or stored in the datastructure. Differential Revision: https://reviews.freebsd.org/D35971 MFC after: 2 weeks (cherry picked from commit 97ffaff85968d09f2319156cb0ef56743667db6e) --- sys/net/radix.c | 78 +++++++++++++++++++++++++++++---------------------------- sys/net/radix.h | 18 ++++++------- 2 files changed, 49 insertions(+), 47 deletions(-) diff --git a/sys/net/radix.c b/sys/net/radix.c index 2169361c7229..14e81ebbd414 100644 --- a/sys/net/radix.c +++ b/sys/net/radix.c @@ -58,9 +58,9 @@ static struct radix_node *rn_insert(void *, struct radix_head *, int *, struct radix_node [2]), *rn_newpair(void *, int, struct radix_node[2]), - *rn_search(void *, struct radix_node *), - *rn_search_m(void *, struct radix_node *, void *); -static struct radix_node *rn_addmask(void *, struct radix_mask_head *, int,int); + *rn_search(const void *, struct radix_node *), + *rn_search_m(const void *, struct radix_node *, void *); +static struct radix_node *rn_addmask(const void *, struct radix_mask_head *, int,int); static void rn_detachhead_internal(struct radix_head *); @@ -74,11 +74,11 @@ static char rn_ones[RADIX_MAX_KEY_LEN] = { -1, -1, -1, -1, -1, -1, -1, -1, }; -static int rn_lexobetter(void *m_arg, void *n_arg); +static int rn_lexobetter(const void *m_arg, const void *n_arg); static struct radix_mask * rn_new_radix_mask(struct radix_node *tt, struct radix_mask *next); -static int rn_satisfies_leaf(char *trial, struct radix_node *leaf, +static int rn_satisfies_leaf(const char *trial, struct radix_node *leaf, int skip); /* @@ -142,10 +142,10 @@ static int rn_satisfies_leaf(char *trial, struct radix_node *leaf, * Search a node in the tree matching the key. */ static struct radix_node * -rn_search(void *v_arg, struct radix_node *head) +rn_search(const void *v_arg, struct radix_node *head) { struct radix_node *x; - caddr_t v; + c_caddr_t v; for (x = head, v = v_arg; x->rn_bit >= 0;) { if (x->rn_bmask & v[x->rn_offset]) @@ -161,10 +161,10 @@ rn_search(void *v_arg, struct radix_node *head) * XXX note this function is used only once. */ static struct radix_node * -rn_search_m(void *v_arg, struct radix_node *head, void *m_arg) +rn_search_m(const void *v_arg, struct radix_node *head, void *m_arg) { struct radix_node *x; - caddr_t v = v_arg, m = m_arg; + c_caddr_t v = v_arg, m = m_arg; for (x = head; x->rn_bit >= 0;) { if ((x->rn_bmask & m[x->rn_offset]) && @@ -177,10 +177,10 @@ rn_search_m(void *v_arg, struct radix_node *head, void *m_arg) } int -rn_refines(void *m_arg, void *n_arg) +rn_refines(const void *m_arg, const void *n_arg) { - caddr_t m = m_arg, n = n_arg; - caddr_t lim, lim2 = lim = n + LEN(n); + c_caddr_t m = m_arg, n = n_arg; + c_caddr_t lim, lim2 = lim = n + LEN(n); int longer = LEN(n++) - LEN(m++); int masks_are_equal = 1; @@ -209,7 +209,7 @@ rn_refines(void *m_arg, void *n_arg) * from host routes. */ struct radix_node * -rn_lookup(void *v_arg, void *m_arg, struct radix_head *head) +rn_lookup(const void *v_arg, const void *m_arg, struct radix_head *head) { struct radix_node *x; caddr_t netmask; @@ -250,10 +250,10 @@ rn_lookup(void *v_arg, void *m_arg, struct radix_head *head) } static int -rn_satisfies_leaf(char *trial, struct radix_node *leaf, int skip) +rn_satisfies_leaf(const char *trial, struct radix_node *leaf, int skip) { - char *cp = trial, *cp2 = leaf->rn_key, *cp3 = leaf->rn_mask; - char *cplim; + const char *cp = trial, *cp2 = leaf->rn_key, *cp3 = leaf->rn_mask; + const char *cplim; int length = min(LEN(cp), LEN(cp2)); if (cp3 == NULL) @@ -271,12 +271,12 @@ rn_satisfies_leaf(char *trial, struct radix_node *leaf, int skip) * Search for longest-prefix match in given @head */ struct radix_node * -rn_match(void *v_arg, struct radix_head *head) +rn_match(const void *v_arg, struct radix_head *head) { - caddr_t v = v_arg; + c_caddr_t v = v_arg; struct radix_node *t = head->rnh_treetop, *x; - caddr_t cp = v, cp2; - caddr_t cplim; + c_caddr_t cp = v, cp2; + c_caddr_t cplim; struct radix_node *saved_t, *top = t; int off = t->rn_offset, vlen = LEN(cp), matched_off; int test, b, rn_bit; @@ -498,10 +498,11 @@ on1: } static struct radix_node * -rn_addmask(void *n_arg, struct radix_mask_head *maskhead, int search, int skip) +rn_addmask(const void *n_arg, struct radix_mask_head *maskhead, int search, int skip) { - unsigned char *netmask = n_arg; - unsigned char *cp, *cplim; + const unsigned char *netmask = n_arg; + const unsigned char *c, *clim; + unsigned char *cp; struct radix_node *x; int b = 0, mlen, j; int maskduplicated, isnormal; @@ -552,17 +553,17 @@ rn_addmask(void *n_arg, struct radix_mask_head *maskhead, int search, int skip) * a non-contiguous mask. */ #define CONTIG(_c) (((~(_c) + 1) & (_c)) == (unsigned char)(~(_c) + 1)) - cplim = netmask + mlen; + clim = netmask + mlen; isnormal = 1; - for (cp = netmask + skip; (cp < cplim) && *(u_char *)cp == 0xff;) - cp++; - if (cp != cplim) { - for (j = 0x80; (j & *cp) != 0; j >>= 1) + for (c = netmask + skip; (c < clim) && *(const u_char *)c == 0xff;) + c++; + if (c != clim) { + for (j = 0x80; (j & *c) != 0; j >>= 1) b++; - if (!CONTIG(*cp) || cp != (cplim - 1)) + if (!CONTIG(*c) || c != (clim - 1)) isnormal = 0; } - b += (cp - netmask) << 3; + b += (c - netmask) << 3; x->rn_bit = -1 - b; if (isnormal) x->rn_flags |= RNF_NORMAL; @@ -570,9 +571,9 @@ rn_addmask(void *n_arg, struct radix_mask_head *maskhead, int search, int skip) } static int /* XXX: arbitrary ordering for non-contiguous masks */ -rn_lexobetter(void *m_arg, void *n_arg) +rn_lexobetter(const void *m_arg, const void *n_arg) { - u_char *mp = m_arg, *np = n_arg, *lim; + const u_char *mp = m_arg, *np = n_arg, *lim; if (LEN(mp) > LEN(np)) return (1); /* not really, but need to check longer one first */ @@ -606,10 +607,10 @@ rn_new_radix_mask(struct radix_node *tt, struct radix_mask *next) } struct radix_node * -rn_addroute(void *v_arg, void *n_arg, struct radix_head *head, +rn_addroute(void *v_arg, const void *n_arg, struct radix_head *head, struct radix_node treenodes[2]) { - caddr_t v = (caddr_t)v_arg, netmask = (caddr_t)n_arg; + caddr_t v = (caddr_t)v_arg, netmask = NULL; struct radix_node *t, *x = NULL, *tt; struct radix_node *saved_tt, *top = head->rnh_treetop; short b = 0, b_leaf = 0; @@ -624,8 +625,8 @@ rn_addroute(void *v_arg, void *n_arg, struct radix_head *head, * the mask to speed avoiding duplicate references at * nodes and possibly save time in calculating indices. */ - if (netmask) { - x = rn_addmask(netmask, head->rnh_masks, 0, top->rn_offset); + if (n_arg) { + x = rn_addmask(n_arg, head->rnh_masks, 0, top->rn_offset); if (x == NULL) return (0); b_leaf = x->rn_bit; @@ -763,12 +764,13 @@ on2: } struct radix_node * -rn_delete(void *v_arg, void *netmask_arg, struct radix_head *head) +rn_delete(const void *v_arg, const void *netmask_arg, struct radix_head *head) { struct radix_node *t, *p, *x, *tt; struct radix_mask *m, *saved_m, **mp; struct radix_node *dupedkey, *saved_tt, *top; - caddr_t v, netmask; + c_caddr_t v; + c_caddr_t netmask; int b, head_off, vlen; v = v_arg; diff --git a/sys/net/radix.h b/sys/net/radix.h index 97555ee9e16d..f9987934bed4 100644 --- a/sys/net/radix.h +++ b/sys/net/radix.h @@ -106,13 +106,13 @@ struct radix_mask { struct radix_head; typedef int walktree_f_t(struct radix_node *, void *); -typedef struct radix_node *rn_matchaddr_f_t(void *v, +typedef struct radix_node *rn_matchaddr_f_t(const void *v, struct radix_head *head); -typedef struct radix_node *rn_addaddr_f_t(void *v, void *mask, +typedef struct radix_node *rn_addaddr_f_t(void *v, const void *mask, struct radix_head *head, struct radix_node nodes[]); -typedef struct radix_node *rn_deladdr_f_t(void *v, void *mask, +typedef struct radix_node *rn_deladdr_f_t(const void *v, const void *mask, struct radix_head *head); -typedef struct radix_node *rn_lookup_f_t(void *v, void *mask, +typedef struct radix_node *rn_lookup_f_t(const void *v, const void *mask, struct radix_head *head); typedef int rn_walktree_t(struct radix_head *head, walktree_f_t *f, void *w); @@ -176,13 +176,13 @@ void rn_inithead_internal(struct radix_head *rh, struct radix_node *base_nodes, int rn_inithead(void **, int); int rn_detachhead(void **); -int rn_refines(void *, void *); -struct radix_node *rn_addroute(void *, void *, struct radix_head *, +int rn_refines(const void *, const void *); +struct radix_node *rn_addroute(void *, const void *, struct radix_head *, struct radix_node[2]); -struct radix_node *rn_delete(void *, void *, struct radix_head *); -struct radix_node *rn_lookup (void *v_arg, void *m_arg, +struct radix_node *rn_delete(const void *, const void *, struct radix_head *); +struct radix_node *rn_lookup (const void *v_arg, const void *m_arg, struct radix_head *head); -struct radix_node *rn_match(void *, struct radix_head *); +struct radix_node *rn_match(const void *, struct radix_head *); int rn_walktree_from(struct radix_head *h, void *a, void *m, walktree_f_t *f, void *w); int rn_walktree(struct radix_head *, walktree_f_t *, void *);