* [PATCH] ipv4/fib_trie: notify deleted routes on if down event
@ 2012-10-30 15:32 Nicolas Dichtel
2012-10-31 16:36 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Nicolas Dichtel @ 2012-10-30 15:32 UTC (permalink / raw)
To: netdev; +Cc: davem, Nicolas Dichtel
This notification is missing in IPv4 (in IPv6, deleted routes are
notified).
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
net/ipv4/fib_trie.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 31d771c..5b1c7d0 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -1718,15 +1718,20 @@ int fib_table_delete(struct fib_table *tb, struct fib_config *cfg)
return 0;
}
-static int trie_flush_list(struct list_head *head)
+static int trie_flush_list(struct fib_table *tb, struct leaf *l,
+ struct leaf_info *li)
{
struct fib_alias *fa, *fa_node;
int found = 0;
- list_for_each_entry_safe(fa, fa_node, head, fa_list) {
+ list_for_each_entry_safe(fa, fa_node, &li->falh, fa_list) {
struct fib_info *fi = fa->fa_info;
if (fi && (fi->fib_flags & RTNH_F_DEAD)) {
+ struct nl_info nlinfo = { .nl_net = fi->fib_net, };
+
+ rtmsg_fib(RTM_DELROUTE, htonl(l->key), fa, li->plen,
+ tb->tb_id, &nlinfo, 0);
list_del_rcu(&fa->fa_list);
fib_release_info(fa->fa_info);
alias_free_mem_rcu(fa);
@@ -1736,7 +1741,7 @@ static int trie_flush_list(struct list_head *head)
return found;
}
-static int trie_flush_leaf(struct leaf *l)
+static int trie_flush_leaf(struct fib_table *tb, struct leaf *l)
{
int found = 0;
struct hlist_head *lih = &l->list;
@@ -1744,7 +1749,7 @@ static int trie_flush_leaf(struct leaf *l)
struct leaf_info *li = NULL;
hlist_for_each_entry_safe(li, node, tmp, lih, hlist) {
- found += trie_flush_list(&li->falh);
+ found += trie_flush_list(tb, l, li);
if (list_empty(&li->falh)) {
hlist_del_rcu(&li->hlist);
@@ -1835,7 +1840,7 @@ int fib_table_flush(struct fib_table *tb)
int found = 0;
for (l = trie_firstleaf(t); l; l = trie_nextleaf(l)) {
- found += trie_flush_leaf(l);
+ found += trie_flush_leaf(tb, l);
if (ll && hlist_empty(&ll->list))
trie_leaf_remove(t, ll);
--
1.7.12
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ipv4/fib_trie: notify deleted routes on if down event
2012-10-30 15:32 [PATCH] ipv4/fib_trie: notify deleted routes on if down event Nicolas Dichtel
@ 2012-10-31 16:36 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2012-10-31 16:36 UTC (permalink / raw)
To: nicolas.dichtel; +Cc: netdev
From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date: Tue, 30 Oct 2012 16:32:56 +0100
> This notification is missing in IPv4 (in IPv6, deleted routes are
> notified).
>
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
This is intentional, and your patch has been suggested before.
Routing daemons are expected to purge their tables of all routes for
an interface when the get the interface down event.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-10-31 16:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-30 15:32 [PATCH] ipv4/fib_trie: notify deleted routes on if down event Nicolas Dichtel
2012-10-31 16:36 ` David Miller
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).