From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EF0947CA98 for ; Wed, 29 Jul 2026 12:08:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785326890; cv=none; b=cvm7aY+gibop47JFnO9hIX4H5xdrYrK+k2+a6jOBpbhGG5bsFGdIDjwn8erGgpEbEd3vcdBrS59qgv4pBe4eQ+1ukM3/8BM9zvv476FbXeK9d5RIJcG38xMeuV/Bp2TOeqYbtrW6Q3D9m+V92yUgLZeJ04Rc2F0ggD2jRq42bx0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785326890; c=relaxed/simple; bh=N8Xmy4/vDXYjA5NH8qTfr6UDnpzFJtO6faLphAOWcS8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t6qbIFQ70Z7jDv1RBjgA4gJKa2XYads2ayX7GwzkuCp7xUGM30tDbiixmupQYfF2AJqdZwfH2AEblQBjOTcizlVovVwOte7Ci93aY3wZ8OoLUn9TnJ5nfhbPi/ezpC1AsjdepTJSq+oc33G2DfRDWCbZRGI40Z9txuRTFSJK/PI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aQ1rV67z; arc=none smtp.client-ip=209.85.210.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aQ1rV67z" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-84874b52eabso1147316b3a.0 for ; Wed, 29 Jul 2026 05:08:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785326889; x=1785931689; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cP9XpBSahU8H90VUbCsH4OW4P7gb1bvekS7IuobkoHU=; b=aQ1rV67zNPVdGiKtdUeTuI+ov8me8sUpjkcPziJdFz61VVBcrYVJ+j7FfqfuhnLt7U Nd3Gtubm5VESfQWmRgOVomKXKEtcbKW6tCGehn4yBv23fHL/ZqNtWMt94BNgP5kI6l2j 7xXwXzm/WdDfecrVAFNAsZodLp1XFpEtpV9WnsFO02DEr8iVuCcv2J3GTDydD+LHMssP 18+m1YjKSvVm/A5igH8/CL6F5TkO6v8clxg/roLi28wynKQEDj6Gg5Uop1ayxAJstkSl +GX+TmKDSt0LCSQlghomqCwKd+HN0HofPFBrX4TelN+SiyypAocLHzTrEyo2CMrDr/ll b71A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785326889; x=1785931689; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=cP9XpBSahU8H90VUbCsH4OW4P7gb1bvekS7IuobkoHU=; b=UWfp74QLfDrZltDLGkssqyL7T/aC308+ztUi0MkPcjuIz7HSfFa7kSzs4abMgOsf0X qrlok/0doRVe8FIuiEpaorIhmZdfU+IYcJz2Z07TpCIUj7rl6l9+G7MUXL9zmWMB9mMI +yA7PG8dUy3rn71YlpuRPRgpWau3C+8TrPDaQVIO6icXphMDzp5whVfXwNBgCmpWfTBy pRU2O3BZkqQYa+lJqDVqAyBc5yd1Y9PGymcv7F78h+0crIcySqyBy28TwdLqQVe/e7+g j28XgTCXCividD7Jnz+P1c1lzeK1nzTIiWlrR097uoaSCdJo5VTQPYxOkBT3c49yhaoe UWvg== X-Forwarded-Encrypted: i=1; AHgh+RqYjocJQND3CNakqbLEFVfeDxYkLWm+/njSv0reRxz1aTmAS9r70QQewbaO11C6YCeLYJhYAajcyRv0jpk=@vger.kernel.org X-Gm-Message-State: AOJu0Ywfv1E1IRlbyY0qDxAkITrpOqhLdQDe9Q+Wkfc72WYVSK5M9k10 zoDYx0eMQr4JhmEu2hN5K4+iRcxcurKIQYaob9rTqBrSC931OCyeQZ1W X-Gm-Gg: AR+sD12uUemn1e41atVGhdSmE8iRLQA+ktavPjCSFRo0GwoYf93Myiki1S/OcTaR+jY wRC0uGxWj+MpSBNb0KLOs1VERzoDsauR8Xo0vT5C3/eE02T/grm+pCi/bkg28Iiibh7Jp0BR7Fe ukfzzBmdKn07PukuwoaOUvFVS1R0abkhLGaJiVzeeDVXg+yfwu1tr5igvdNKTD/A0UwtUxbSFf0 5LPQNup1TFWtudNRpwbRJcRquWXjne2RZI9QqLfEUWuAMiXI7dMuZbs90W1PI0Mzy1kCALkWaZb retCm/rvFnvaTS7cPvuneVsGAQtH6BQVAsiDzPWwFPo2HwYnmBJZjwlw1uIvtNdjX9OTk+aL7nR BvuwEOg6KifOX6mNeIE/GWB+8XJdOQr8cju5bRwG+U+4BU5CZtVfdeud4J2e3tYxlXOsapdAGnD SvgLAavyUrb9u7xeiZPoUi8Ze8H6/6Xe/ahDXgAOtuOWHVKa7ceOmnWzgBGHle4Dh09+/ZHjlqv S0igaX//+Xrq3xa/K8q24kM1vQuVTgju8u7ow== X-Received: by 2002:a05:6a00:3922:b0:84a:29a7:f64c with SMTP id d2e1a72fcca58-84e92ff010emr6884888b3a.0.1785326888768; Wed, 29 Jul 2026 05:08:08 -0700 (PDT) Received: from m-upc-A520M-HDV.lan ([2400:2410:3f60:500:c705:d3b3:a6d9:8512]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84ea0300ac2sm1263482b3a.35.2026.07.29.05.08.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2026 05:08:06 -0700 (PDT) Sender: Yuyang Huang From: Yuyang Huang To: Yuyang Huang Cc: "David S. Miller" , Bobby Eshleman , Chris J Arges , David Ahern , David Wei , Dimitri Daskalakis , Donald Hunter , Eric Dumazet , Gal Pressman , Ido Schimmel , Jakub Kicinski , Paolo Abeni , Shuah Khan , Simon Horman , Stanislav Fomichev , Willem de Bruijn , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH net-next v4 04/10] ipv6: add a deletion reason argument to rt6_fill_node() Date: Wed, 29 Jul 2026 21:07:33 +0900 Message-ID: <20260729120739.47880-5-sigefriedhyy@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260729120739.47880-1-sigefriedhyy@gmail.com> References: <20260729120739.47880-1-sigefriedhyy@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add the deletion reason to rt6_fill_node() so that it can report it to user space. All callers pass RTA_DEL_REASON_UNSPEC for now. Signed-off-by: Yuyang Huang --- net/ipv6/route.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index d2b9f9a899cf..b30becf3f56b 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -111,7 +111,7 @@ static int rt6_fill_node(struct net *net, struct sk_buff *skb, struct fib6_info *rt, struct dst_entry *dst, struct in6_addr *dest, struct in6_addr *src, int iif, int type, u32 portid, u32 seq, - unsigned int flags); + unsigned int flags, enum rta_del_reason del_reason); static struct rt6_info *rt6_find_cached_rt(const struct fib6_result *res, const struct in6_addr *daddr, const struct in6_addr *saddr); @@ -4035,7 +4035,8 @@ static int __ip6_del_rt_siblings(struct fib6_info *rt, struct fib6_config *cfg) if (rt6_fill_node(net, skb, rt, NULL, NULL, NULL, 0, RTM_DELROUTE, - info->portid, seq, 0) < 0) { + info->portid, seq, 0, + RTA_DEL_REASON_UNSPEC) < 0) { kfree_skb(skb); skb = NULL; } else @@ -5784,7 +5785,7 @@ static int rt6_fill_node(struct net *net, struct sk_buff *skb, struct fib6_info *rt, struct dst_entry *dst, struct in6_addr *dest, struct in6_addr *src, int iif, int type, u32 portid, u32 seq, - unsigned int flags) + unsigned int flags, enum rta_del_reason del_reason) { struct rt6_info *rt6 = dst_rt6_info(dst); struct rt6key *rt6_dst, *rt6_src; @@ -6064,7 +6065,8 @@ static int rt6_nh_dump_exceptions(struct fib6_nh *nh, void *arg) &rt6_ex->rt6i->dst, NULL, NULL, 0, RTM_NEWROUTE, NETLINK_CB(dump->cb->skb).portid, - dump->cb->nlh->nlmsg_seq, w->flags); + dump->cb->nlh->nlmsg_seq, w->flags, + RTA_DEL_REASON_UNSPEC); if (err) return err; @@ -6112,7 +6114,8 @@ int rt6_dump_route(struct fib6_info *rt, void *p_arg, unsigned int skip) if (rt6_fill_node(net, arg->skb, rt, NULL, NULL, NULL, 0, RTM_NEWROUTE, NETLINK_CB(arg->cb->skb).portid, - arg->cb->nlh->nlmsg_seq, flags)) { + arg->cb->nlh->nlmsg_seq, flags, + RTA_DEL_REASON_UNSPEC)) { return 0; } count++; @@ -6345,12 +6348,14 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, err = rt6_fill_node(net, skb, from, NULL, NULL, NULL, iif, RTM_NEWROUTE, NETLINK_CB(in_skb).portid, - nlh->nlmsg_seq, 0); + nlh->nlmsg_seq, 0, + RTA_DEL_REASON_UNSPEC); else err = rt6_fill_node(net, skb, from, dst, &fl6.daddr, &fl6.saddr, iif, RTM_NEWROUTE, NETLINK_CB(in_skb).portid, - nlh->nlmsg_seq, 0); + nlh->nlmsg_seq, 0, + RTA_DEL_REASON_UNSPEC); } else { err = -ENETUNREACH; } @@ -6386,7 +6391,8 @@ void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info, goto errout; err = rt6_fill_node(net, skb, rt, NULL, NULL, NULL, 0, - event, info->portid, seq, nlm_flags); + event, info->portid, seq, nlm_flags, + RTA_DEL_REASON_UNSPEC); if (err < 0) { kfree_skb(skb); /* -EMSGSIZE implies needed space grew under us. */ @@ -6419,7 +6425,8 @@ void fib6_rt_update(struct net *net, struct fib6_info *rt, goto errout; err = rt6_fill_node(net, skb, rt, NULL, NULL, NULL, 0, - RTM_NEWROUTE, info->portid, seq, NLM_F_REPLACE); + RTM_NEWROUTE, info->portid, seq, NLM_F_REPLACE, + RTA_DEL_REASON_UNSPEC); if (err < 0) { /* -EMSGSIZE implies BUG in rt6_nlmsg_size() */ WARN_ON(err == -EMSGSIZE); @@ -6472,7 +6479,7 @@ void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i, } err = rt6_fill_node(net, skb, f6i, NULL, NULL, NULL, 0, RTM_NEWROUTE, 0, - 0, 0); + 0, 0, RTA_DEL_REASON_UNSPEC); if (err < 0) { /* -EMSGSIZE implies BUG in rt6_nlmsg_size() */ WARN_ON(err == -EMSGSIZE); -- 2.43.0