From nobody Fri Jan 13 21:25:46 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 4NtvbZ3r6dz2ql1F; Fri, 13 Jan 2023 21:25: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 4NtvbZ2yGlz43sL; Fri, 13 Jan 2023 21:25:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1673645146; 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=AzM7kBGa9WMiCDb/86TOQ7vKTdlkj0NuFwFqlJvgd1Q=; b=TRKsK/Y+NrYSRUJXgQgakurrvVbJ2i49ze0N40ioxAhJpnguEaBqEMmicG62bcr7F6nRCU t8rNfz4cfp038QMNN2C6MrbcFjTMqSnisN76WGAK1Ppo0UDGFI2zbOoO60E8VVctBJ8O7z zA0iezgeFE5USmRQMWh8kdJDNX4nwOKnlrsp9tZhZZDKlsWvKtZWzgJHU6eCRGoTLTP+2/ y1KdE/VHcHmEw1oK3qJBtB9yJwQojriaDDeJ5LSQv0P77UdYo9nNMduOVbNfRdYeFjnmo6 cmJ4qbahy8zyEcZR5h8PxuBTFZ3uHg+KBm0pn2vuB6QYP0nEKAw4tKsVoC8Hag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1673645146; 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=AzM7kBGa9WMiCDb/86TOQ7vKTdlkj0NuFwFqlJvgd1Q=; b=hQl6/FEzCddzGNiJQuen6KiQg0WsdUTiKprmbjg6wPZzJr+fbIl3oTxLjlGBwUFBT1y20V SJ0uIRpIrjbgU4tMaY1EzM9w3mrdA8YTCjQZpQ001yiA8uadPebfbv2uMJj8kERIxaH85U As/+DPpvYeSt0S1AF5NvmbzbB0FtuIrJDczShy9A9bqXQZqugG/O+khFO7MFmejtL1fmki RQT/VAXvd3iuhQhFa7qchzhFj5SVZjqnf6TD2yj9XnBvsZWe8GM31y4krh7Zy1hUFwIRTe ey+/wF7NincLbk67hFhvZ0twpYMZulhd+qM0rwORMSeLlfk7v86u1kQJmUaqvA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1673645146; a=rsa-sha256; cv=none; b=KmcpDVvEoxj6pwFcwqxtJFEUz1iJD3TEYgmrhQgpwkpBqvDSJxNoG4OnYRmWYb8uvzHHNV AQITIqZC86sqdUHIRGyMnEjg0guyhedAXmdAPSEedjdudjikUDFhjGe/5AOHE6AzSKtOHg Z9mKuBgdPQE9QWUNXLooU0CJ/6zEdv2FUdJkpB8+6jvPAv2r7uDvxBhsqLpjuz4r43bGyX tKaBxxaLpqcP9tO4by9sq3dneIFTkTotW43EEj5x6fTZ9XSde5ojNXd3uBkWX8fOGUNOyU gLCGHGi3HB3m9MdRlW9lvYfZlryJiVU9VnURVqmSDk/T8ctvPxT5CxlsAB92kQ== 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 4NtvbZ22g0zNBd; Fri, 13 Jan 2023 21:25:46 +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 30DLPkU4042307; Fri, 13 Jan 2023 21:25:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30DLPkWZ042306; Fri, 13 Jan 2023 21:25:46 GMT (envelope-from git) Date: Fri, 13 Jan 2023 21:25:46 GMT Message-Id: <202301132125.30DLPkWZ042306@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: 1350c3f17100 - stable/13 - routing: make rib_add_redirect() use new nhop-based KPI 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: 1350c3f17100b73c02babd92878e4e2ae68f22f9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=1350c3f17100b73c02babd92878e4e2ae68f22f9 commit 1350c3f17100b73c02babd92878e4e2ae68f22f9 Author: Alexander V. Chernikov AuthorDate: 2022-08-09 11:45:59 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-01-13 21:24:11 +0000 routing: make rib_add_redirect() use new nhop-based KPI MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D36169 (cherry picked from commit 6d4f6e4c704d17084144ac3fe0c8507015f1357f) --- sys/net/route.c | 44 ++++++++++++++++++++++---------------------- sys/netinet6/nd6.c | 7 ++----- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/sys/net/route.c b/sys/net/route.c index 7a18acc0c281..7190d93d787d 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -188,11 +188,10 @@ int rib_add_redirect(u_int fibnum, struct sockaddr *dst, struct sockaddr *gateway, struct sockaddr *author, struct ifnet *ifp, int flags, int lifetime_sec) { + struct route_nhop_data rnd = { .rnd_weight = RT_DEFAULT_WEIGHT }; struct rib_cmd_info rc; - int error; - struct rt_addrinfo info; - struct rt_metrics rti_rmx; struct ifaddr *ifa; + int error; NET_EPOCH_ASSERT(); @@ -208,21 +207,21 @@ rib_add_redirect(u_int fibnum, struct sockaddr *dst, struct sockaddr *gateway, if ((ifa = ifaof_ifpforaddr(gateway, ifp)) == NULL) return (ENETUNREACH); - bzero(&info, sizeof(info)); - info.rti_info[RTAX_DST] = dst; - info.rti_info[RTAX_GATEWAY] = gateway; - info.rti_ifa = ifa; - info.rti_ifp = ifp; - info.rti_flags = flags; - - /* Setup route metrics to define expire time. */ - bzero(&rti_rmx, sizeof(rti_rmx)); - /* Set expire time as absolute. */ - rti_rmx.rmx_expire = lifetime_sec + time_second; - info.rti_mflags |= RTV_EXPIRE; - info.rti_rmx = &rti_rmx; - - error = rib_action(fibnum, RTM_ADD, &info, &rc); + struct nhop_object *nh = nhop_alloc(fibnum, dst->sa_family); + if (nh == NULL) + return (ENOMEM); + + nhop_set_gw(nh, gateway, flags & RTF_GATEWAY); + nhop_set_transmit_ifp(nh, ifp); + nhop_set_src(nh, ifa); + nhop_set_pxtype_flag(nh, NHF_HOST); + nhop_set_expire(nh, lifetime_sec + time_uptime); + nhop_set_redirect(nh, true); + rnd.rnd_nhop = nhop_get_nhop(nh, &error); + if (error == 0) { + error = rib_add_route_px(fibnum, dst, -1, + &rnd, RTM_F_CREATE, &rc); + } if (error != 0) { /* TODO: add per-fib redirect stats. */ @@ -232,10 +231,11 @@ rib_add_redirect(u_int fibnum, struct sockaddr *dst, struct sockaddr *gateway, RTSTAT_INC(rts_dynamic); /* Send notification of a route addition to userland. */ - bzero(&info, sizeof(info)); - info.rti_info[RTAX_DST] = dst; - info.rti_info[RTAX_GATEWAY] = gateway; - info.rti_info[RTAX_AUTHOR] = author; + struct rt_addrinfo info = { + .rti_info[RTAX_DST] = dst, + .rti_info[RTAX_GATEWAY] = gateway, + .rti_info[RTAX_AUTHOR] = author, + }; rt_missmsg_fib(RTM_REDIRECT, &info, flags | RTF_UP, error, fibnum); return (0); diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index e4d657feed98..751511170439 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -1575,18 +1575,15 @@ nd6_free_redirect(const struct llentry *ln) { int fibnum; struct sockaddr_in6 sin6; - struct rt_addrinfo info; struct rib_cmd_info rc; struct epoch_tracker et; lltable_fill_sa_entry(ln, (struct sockaddr *)&sin6); - memset(&info, 0, sizeof(info)); - info.rti_info[RTAX_DST] = (struct sockaddr *)&sin6; - info.rti_filter = nd6_isdynrte; NET_EPOCH_ENTER(et); for (fibnum = 0; fibnum < rt_numfibs; fibnum++) - rib_action(fibnum, RTM_DELETE, &info, &rc); + rib_del_route_px(fibnum, (struct sockaddr *)&sin6, 128, + nd6_isdynrte, NULL, 0, &rc); NET_EPOCH_EXIT(et); }