From nobody Sat Apr 08 19:44:46 2023 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 4Pv5Kq4lvVz44nXX; Sat, 8 Apr 2023 19:44:47 +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 4Pv5Kq25Prz43SJ; Sat, 8 Apr 2023 19:44:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983087; 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=FqEUJSoR1xtWTB0JRGnl0A2i3aVnqX4nnhV4kxok5Fk=; b=jgqECS97mR9kp/RAih1RKIJMAcmjJlE1hACA/sRQG7FYv/hj/btovJPKJvvZWn1t9IdJuy 1lsX5pxblKUijKE3ERilJFZep2wsACLdPHbKHLnqfb/WGskWLbsm51G2UPhAfqFUZ/JkZs aQ39Xep+jw2oO3Ms/lS16QzifqqjV5LyQzaHX5hEEKnDJhC2YxmA67gyZKN46FI7xhaDpq QtuR8NMqU7MiuMDDUIsGij7sqy6q6CefMe9X2j6SD2ndqxiij0ISVkudSz7LG+1WephWB+ C8JgLGdKz8+M9846/5ohmI+OcpyO+pgZ4BZEmJdegUXbS94d+A1q5KARToIh+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983087; 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=FqEUJSoR1xtWTB0JRGnl0A2i3aVnqX4nnhV4kxok5Fk=; b=KXdZHOFNJum1CxF8aNW2AvxQS9GL+TddnmNDwakCNBHTRNZ7Uu7l3zedy5RFdXC4i6UhKR B8mgCgbfjGokX6R1bVs5gA/BmM5UzTqxYQ/PnUwDcB7a9utaWx1jjg7W3/9TXU/e+tsNsa GjX19G3s0xRrK19oxFViNtU/HPbkVtr4N1IXzzF6etixJGrUPT8HZVEra8Z2S7ckpRelh5 fVhsMsl43KJwpgXkFX1Y2vj8pnY8oRPIggXwJOPOXrBTV7laMeyACtTAH3TPAxrJXjQBAI IYOnGl/fyhn5ZMURp7Ubfg+Glf0h7HEuzhG0YeX8RxmSdoxfaa0nORzVtcWPtA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983087; a=rsa-sha256; cv=none; b=xAW/vGVHnDxERLbP2i9tESzTpGl6FWoHHBnNhlxhQnde19KG0a+LPDM9pK1YyAFWNUcIdU FBZ5XaGxYmhSLNtbYYhn/Zmv3mWlaXHiY+vRMroG72W2E0+occiBL2i+/O+4AkgCKTDgwZ J4i81fAt5ujN/wPA5dg+YvWW0tEfLYmgD7Ts+YywKydvpkmFITnXB0hlvmxdJmUbOko9Pc BN5t0DgoHXIw+Bj2f73JPJe4nyNJF6Qo7TNxGLQzwkJRYI/kSylMWVKd7ixb5jKHXiwmQI ESdICJQ9EJeRAonXedRNOnGXQAYbMB6p0EX2D/10dAWj29KByVG1XBBgZQHoKw== 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 4Pv5Kp56sBzfsq; Sat, 8 Apr 2023 19:44: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 338JikKF018627; Sat, 8 Apr 2023 19:44:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jikb9018626; Sat, 8 Apr 2023 19:44:46 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:46 GMT Message-Id: <202304081944.338Jikb9018626@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: 401a06fd750d - stable/13 - netlink: fix vlan interface creation 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: melifaro X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 401a06fd750d95e513b0b2960045b1acff21e5c5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=401a06fd750d95e513b0b2960045b1acff21e5c5 commit 401a06fd750d95e513b0b2960045b1acff21e5c5 Author: Alexander V. Chernikov AuthorDate: 2023-03-03 16:01:34 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:03:59 +0000 netlink: fix vlan interface creation MFC after: 2 weeks (cherry picked from commit ce9f95bd835ec7d3ac6def5a910282509b1413f0) --- sys/netlink/route/iface_drivers.c | 34 +++++++++++++++++++--------------- tests/sys/netlink/test_rtnl_iface.py | 1 - 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/sys/netlink/route/iface_drivers.c b/sys/netlink/route/iface_drivers.c index 7cfaa5a6614b..be28a0f3b676 100644 --- a/sys/netlink/route/iface_drivers.c +++ b/sys/netlink/route/iface_drivers.c @@ -144,20 +144,14 @@ store_cookie(struct nl_pstate *npt, struct ifnet *ifp) nlmsg_report_cookie(npt, nla_cookie); } -/* - * Generic creation interface handler. - * Responsible for creating interfaces w/o parameters and setting - * misc attributes such as state, mtu or description. - */ static int -create_generic(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, - struct nlpcb *nlp, struct nl_pstate *npt) +create_generic_ifd(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, + struct ifc_data *ifd, struct nlpcb *nlp, struct nl_pstate *npt) { int error = 0; - struct ifc_data ifd = {}; struct ifnet *ifp = NULL; - error = ifc_create_ifp(lattrs->ifla_ifname, &ifd, &ifp); + error = ifc_create_ifp(lattrs->ifla_ifname, ifd, &ifp); NLP_LOG(LOG_DEBUG2, nlp, "clone for %s returned %d", lattrs->ifla_ifname, error); @@ -177,6 +171,19 @@ create_generic(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, return (error); } +/* + * Generic creation interface handler. + * Responsible for creating interfaces w/o parameters and setting + * misc attributes such as state, mtu or description. + */ +static int +create_generic(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, + struct nlpcb *nlp, struct nl_pstate *npt) +{ + struct ifc_data ifd = {}; + + return (create_generic_ifd(lattrs, bm, &ifd, nlp, npt)); +} struct nl_cloner generic_cloner = { .name = "_default_", @@ -258,17 +265,14 @@ create_vlan(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, return (ENOENT); } - /* Waiting till if_clone changes lands */ -/* struct vlanreq params = { .vlr_tag = attrs.vlan_id, .vlr_proto = attrs.vlan_proto, }; -*/ - int ifname_len = strlen(lattrs->ifla_ifname) + 1; - error = if_clone_create(lattrs->ifla_ifname, ifname_len, (char *)NULL); + strlcpy(params.vlr_parent, if_name(ifp), sizeof(params.vlr_parent)); + struct ifc_data ifd = { .flags = IFC_F_SYSSPACE, .params = ¶ms }; - NLP_LOG(LOG_DEBUG2, nlp, "clone for %s returned %d", lattrs->ifla_ifname, error); + error = create_generic_ifd(lattrs, bm, &ifd, nlp, npt); if_rele(ifp); return (error); diff --git a/tests/sys/netlink/test_rtnl_iface.py b/tests/sys/netlink/test_rtnl_iface.py index cbe5aed8b8ae..c21bf9cb8977 100644 --- a/tests/sys/netlink/test_rtnl_iface.py +++ b/tests/sys/netlink/test_rtnl_iface.py @@ -313,7 +313,6 @@ class TestRtNlIface(NetlinkTestTemplate, SingleVnetTestTemplate): # * {{nla_len=8, nla_type=IFLA_INFO_KIND}, "vlan"...}, # * {{nla_len=12, nla_type=IFLA_INFO_DATA}, "\x06\x00\x01\x00\x16\x00\x00\x00"} # */ - @pytest.mark.skip(reason="vlan support needs more work") @pytest.mark.require_user("root") def test_create_vlan_plain(self): """Creates 802.1Q VLAN interface in vlanXX and ifX fashion"""