From nobody Sat Aug 23 19:12:33 2025 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 4c8RX15rNVz66JQY; Sat, 23 Aug 2025 19:12:33 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c8RX15L3Cz3k6b; Sat, 23 Aug 2025 19:12:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1755976353; 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=H/+/Z9J01pqTHkP2Zck8QBRpt1LZGixsppwNSHf0QlQ=; b=Z5ruZr4AlUrPP4+S4CY6F6bDKEKhQ66sAPi1tRy7HkTg6G397TbKc5xfWos/c68Xt3UUlv yxlNX9NcoWAVMvRoIU63IdfvA6KWobV6IeLo7sWvUbvsKdia4pQqHQBST5r5xvUupF5Q42 X5wJjgL3ee7whtZ7b/wv0fWX5DQMtuOFAgbi+rGiZNmSoiVv/F+GA/fEzZ1aKavfBNi4Mg QHX0s19uqlUMi+QC5myqKsAP0L9489t2yPp2qSazyc1UyKXmjQ2oGkjexN/P41eun1/yE+ k4yvq1Qycl9vr4b2P8bVzW11WiCF1jx8LWmvJB29AlKC+SX0Be6q0QJCJZWihA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1755976353; 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=H/+/Z9J01pqTHkP2Zck8QBRpt1LZGixsppwNSHf0QlQ=; b=Rw1E0dZ2aGC/ZJTSchvWkIMOWCbEmH/VgSpP3Bj+JsMolOvU8v1RNgBfELXOHUzCZ0kzVn YazS5+QfYikdnuD3/U5DwMbC6SOVIM5VL7Kf2BJ8E/jYJe+dl7YYFBgcbVperQvtju0sNJ W06zwIZ6S1M1Nj+avp0wlnrcjboAfsO3JfmrmZRHFeShc8SVdYehHDvuZHDBnU25lV0Xeu W0oDhXEyCxLnU1xphaha0oAocIea4ewHA4G6FSeWaE6gh2cD6SP4d4OjnCfXrTZAb3eQQn Lm/b0oPp+W2WZ9HbmVeHKxJTFQCmrOfsfl+3HP74CVA5FByi77rJnJ5wl7OouA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1755976353; a=rsa-sha256; cv=none; b=erE2OVaoQvY7CxTgvGBUJb5Bh0xUyNq9Rvrvc3EY8tL0UcxtzOIrSRiJun2TKbhdU+y3jS sHrQH335+ATHYBsMY1Hj5xKPym/8b4mGXeAGBLdZPxNEegajBrtEe8zUxKDPr10vXM1KG2 Zzvdm8GcAHJNz17Ec4sCdJ/DlcQGJVZmw49aIc6Ly9pGNs40mlZiW1aCCHNuKLNuMPdXf7 eLZwKsEULTmoaKiIAKfUMLPQUBD/he0oMyWfS8VK9zGTp4azlQ4eKi5KQIcIAO82D3dimO urXk8E7IbptUdcZCkGTyfBf44EVtaNq7RXB01cI4cqX9g00j/9yiTHo21gx31Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4c8RX14FpWzDPT; Sat, 23 Aug 2025 19:12:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57NJCX55052872; Sat, 23 Aug 2025 19:12:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57NJCXl8052869; Sat, 23 Aug 2025 19:12:33 GMT (envelope-from git) Date: Sat, 23 Aug 2025 19:12:33 GMT Message-Id: <202508231912.57NJCXl8052869@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Aymeric Wibo Subject: git: f13a042a5711 - main - netlink/route: Support modifying IFLA_ADDRESS with RTM_NEWLINK 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: obiwac X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f13a042a5711310c0b240338c7bd8d6b58f05478 Auto-Submitted: auto-generated The branch main has been updated by obiwac: URL: https://cgit.FreeBSD.org/src/commit/?id=f13a042a5711310c0b240338c7bd8d6b58f05478 commit f13a042a5711310c0b240338c7bd8d6b58f05478 Author: Muhammad Saheed AuthorDate: 2025-08-23 19:09:35 +0000 Commit: Aymeric Wibo CommitDate: 2025-08-23 19:11:42 +0000 netlink/route: Support modifying IFLA_ADDRESS with RTM_NEWLINK Allows setting link-layer address (MAC) by specifying the IFLA_ADDRESS attribute on RTM_NEWLINK requests. Reviewed by: melifaro, obiwac, mckusick (mentor) Approved by: melifaro, obiwac, mckusick (mentor) Sponsored by: Google LLC (GSoC) Differential Revision: https://reviews.freebsd.org/D51922 --- sys/netlink/route/iface.c | 1 + sys/netlink/route/iface_drivers.c | 18 ++++++++++++++++++ sys/netlink/route/route_var.h | 1 + 3 files changed, 20 insertions(+) diff --git a/sys/netlink/route/iface.c b/sys/netlink/route/iface.c index 8b871576d0b2..9beb80792af4 100644 --- a/sys/netlink/route/iface.c +++ b/sys/netlink/route/iface.c @@ -403,6 +403,7 @@ static const struct nlattr_parser nla_p_linfo[] = { NL_DECLARE_ATTR_PARSER(linfo_parser, nla_p_linfo); static const struct nlattr_parser nla_p_if[] = { + { .type = IFLA_ADDRESS, .off = _OUT(ifla_address), .cb = nlattr_get_nla }, { .type = IFLA_IFNAME, .off = _OUT(ifla_ifname), .cb = nlattr_get_string }, { .type = IFLA_MTU, .off = _OUT(ifla_mtu), .cb = nlattr_get_uint32 }, { .type = IFLA_LINK, .off = _OUT(ifla_link), .cb = nlattr_get_uint32 }, diff --git a/sys/netlink/route/iface_drivers.c b/sys/netlink/route/iface_drivers.c index 4bf913d9c978..21db3017df18 100644 --- a/sys/netlink/route/iface_drivers.c +++ b/sys/netlink/route/iface_drivers.c @@ -105,6 +105,24 @@ _nl_modify_ifp_generic(struct ifnet *ifp, struct nl_parsed_link *lattrs, } } + if (lattrs->ifla_address != NULL) { + if (nlp_has_priv(npt->nlp, PRIV_NET_SETIFMAC)) { + error = if_setlladdr(ifp, + NLA_DATA(lattrs->ifla_address), + NLA_DATA_LEN(lattrs->ifla_address)); + if (error != 0) { + nlmsg_report_err_msg(npt, + "setting IFLA_ADDRESS failed with error code: %d", + error); + return (error); + } + } else { + nlmsg_report_err_msg(npt, + "Not enough privileges to set IFLA_ADDRESS"); + return (EPERM); + } + } + return (0); } diff --git a/sys/netlink/route/route_var.h b/sys/netlink/route/route_var.h index b84b34461e35..41f110038b54 100644 --- a/sys/netlink/route/route_var.h +++ b/sys/netlink/route/route_var.h @@ -69,6 +69,7 @@ struct nl_parsed_link { char *ifla_cloner; char *ifla_ifalias; struct nlattr *ifla_idata; + struct nlattr *ifla_address; unsigned short ifi_type; int ifi_index; uint32_t ifla_link;