summary refs log tree commit diff
path: root/net/core/fib_rules.c
diff options
context:
space:
mode:
authorMaciej Żenczykowski <maze@google.com>2014-02-07 16:23:48 -0800
committerDavid S. Miller <davem@davemloft.net>2014-02-09 19:02:52 -0800
commit946c032e5a53992ea45e062ecb08670ba39b99e3 (patch)
tree2a1d2c6cf099a0d77e4dcf5e4ce2fce056027312 /net/core/fib_rules.c
parenta88f92b1283a485b6096b6fba3f84e266df026fc (diff)
downloadlinux-946c032e5a53992ea45e062ecb08670ba39b99e3.tar.gz
net: fix 'ip rule' iif/oif device rename
ip rules with iif/oif references do not update:
(detach/attach) across interface renames.

Signed-off-by: Maciej Żenczykowski <maze@google.com>
CC: Willem de Bruijn <willemb@google.com>
CC: Eric Dumazet <edumazet@google.com>
CC: Chris Davis <chrismd@google.com>
CC: Carlo Contavalli <ccontavalli@google.com>

Google-Bug-Id: 12936021
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/fib_rules.c')
-rw-r--r--net/core/fib_rules.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index f409e0bd35c0..185c341fafbd 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -745,6 +745,13 @@ static int fib_rules_event(struct notifier_block *this, unsigned long event,
 			attach_rules(&ops->rules_list, dev);
 		break;
 
+	case NETDEV_CHANGENAME:
+		list_for_each_entry(ops, &net->rules_ops, list) {
+			detach_rules(&ops->rules_list, dev);
+			attach_rules(&ops->rules_list, dev);
+		}
+		break;
+
 	case NETDEV_UNREGISTER:
 		list_for_each_entry(ops, &net->rules_ops, list)
 			detach_rules(&ops->rules_list, dev);