From: Ido Schimmel <idosch@idosch.org>
To: gaoxingwang <gaoxingwang1@huawei.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
davem@davemloft.net, yoshfuji@linux-ipv6.org, kuba@kernel.org,
pabeni@redhat.com, shuah@kernel.org, liaichun@huawei.com,
yanan@huawei.com
Subject: Re: ipv4:the same route is added repeatedly
Date: Tue, 14 Mar 2023 19:12:24 +0200 [thread overview]
Message-ID: <ZBCq+KXtxWXLPFNF@shredder> (raw)
In-Reply-To: <20230314144159.2354729-1-gaoxingwang1@huawei.com>
On Tue, Mar 14, 2023 at 10:41:59PM +0800, gaoxingwang wrote:
> When i add default route in /etc/sysconfig/static-routes, and then restart network service, it appears to add two same default route:
> [root@localhost ~]# ip r
> default via 9.82.0.1 dev eth0
> default via 9.82.0.1 dev eth0
>
> The static-routes file contents are as follows:
> any net 0.0.0.0 netmask 0.0.0.0 gw 110.1.62.1
>
> This problem seems to be related to patch f96a3d7455(ipv4: Fix incorrect route flushing when source address is deleted). When I revert this patch, the problem gets fixed.
> Is that a known issue?
'fi->fib_tb_id' is initialized from 'cfg->fc_table' which is not
initialized in the IOCTL path which I guess is what you are using given
the syntax of the file. You can therefore end up having two identical
routes that only differ in their FIB info due to its associated table
ID.
Can you try this fix [1]? Seems to be working for me. Tested using this
reproducer [2].
With f96a3d7455:
# ./ioctl_repro.sh
default via 192.0.2.2 dev dummy10
default via 192.0.2.2 dev dummy10
With f96a3d7455 reverted:
# ./ioctl_repro.sh
SIOCADDRT: File exists
default via 192.0.2.2 dev dummy10
With the fix:
# ./ioctl_repro.sh
SIOCADDRT: File exists
default via 192.0.2.2 dev dummy10
Thanks
[1]
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index b5736ef16ed2..390f4be7f7be 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -576,6 +576,9 @@ static int rtentry_to_fib_config(struct net *net, int cmd, struct rtentry *rt,
cfg->fc_scope = RT_SCOPE_UNIVERSE;
}
+ if (!cfg->fc_table)
+ cfg->fc_table = RT_TABLE_MAIN;
+
if (cmd == SIOCDELRT)
return 0;
[2]
#!/bin/bash
ip link del dev dummy10 &> /dev/null
ip link add name dummy10 up type dummy
ip address add 192.0.2.1/24 dev dummy10
ip route add default via 192.0.2.2
route add default gw 192.0.2.2
ip -4 r show default
next prev parent reply other threads:[~2023-03-14 17:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-14 14:41 ipv4:the same route is added repeatedly gaoxingwang
2023-03-14 17:12 ` Ido Schimmel [this message]
2023-03-15 7:43 ` gaoxingwang
2023-03-15 8:54 ` Ido Schimmel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZBCq+KXtxWXLPFNF@shredder \
--to=idosch@idosch.org \
--cc=davem@davemloft.net \
--cc=gaoxingwang1@huawei.com \
--cc=kuba@kernel.org \
--cc=liaichun@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
--cc=yanan@huawei.com \
--cc=yoshfuji@linux-ipv6.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).