aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/fib_frontend.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/fib_frontend.c')
-rw-r--r--net/ipv4/fib_frontend.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index 5ad01d63f83b..65c1503f8cc8 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -144,7 +144,7 @@ static void fib_flush(struct net *net)
144 } 144 }
145 145
146 if (flushed) 146 if (flushed)
147 rt_cache_flush(-1); 147 rt_cache_flush(net, -1);
148} 148}
149 149
150/* 150/*
@@ -897,21 +897,22 @@ static void fib_disable_ip(struct net_device *dev, int force)
897{ 897{
898 if (fib_sync_down_dev(dev, force)) 898 if (fib_sync_down_dev(dev, force))
899 fib_flush(dev_net(dev)); 899 fib_flush(dev_net(dev));
900 rt_cache_flush(0); 900 rt_cache_flush(dev_net(dev), 0);
901 arp_ifdown(dev); 901 arp_ifdown(dev);
902} 902}
903 903
904static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr) 904static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr)
905{ 905{
906 struct in_ifaddr *ifa = (struct in_ifaddr*)ptr; 906 struct in_ifaddr *ifa = (struct in_ifaddr*)ptr;
907 struct net_device *dev = ifa->ifa_dev->dev;
907 908
908 switch (event) { 909 switch (event) {
909 case NETDEV_UP: 910 case NETDEV_UP:
910 fib_add_ifaddr(ifa); 911 fib_add_ifaddr(ifa);
911#ifdef CONFIG_IP_ROUTE_MULTIPATH 912#ifdef CONFIG_IP_ROUTE_MULTIPATH
912 fib_sync_up(ifa->ifa_dev->dev); 913 fib_sync_up(dev);
913#endif 914#endif
914 rt_cache_flush(-1); 915 rt_cache_flush(dev_net(dev), -1);
915 break; 916 break;
916 case NETDEV_DOWN: 917 case NETDEV_DOWN:
917 fib_del_ifaddr(ifa); 918 fib_del_ifaddr(ifa);
@@ -919,9 +920,9 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
919 /* Last address was deleted from this interface. 920 /* Last address was deleted from this interface.
920 Disable IP. 921 Disable IP.
921 */ 922 */
922 fib_disable_ip(ifa->ifa_dev->dev, 1); 923 fib_disable_ip(dev, 1);
923 } else { 924 } else {
924 rt_cache_flush(-1); 925 rt_cache_flush(dev_net(dev), -1);
925 } 926 }
926 break; 927 break;
927 } 928 }
@@ -949,14 +950,14 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
949#ifdef CONFIG_IP_ROUTE_MULTIPATH 950#ifdef CONFIG_IP_ROUTE_MULTIPATH
950 fib_sync_up(dev); 951 fib_sync_up(dev);
951#endif 952#endif
952 rt_cache_flush(-1); 953 rt_cache_flush(dev_net(dev), -1);
953 break; 954 break;
954 case NETDEV_DOWN: 955 case NETDEV_DOWN:
955 fib_disable_ip(dev, 0); 956 fib_disable_ip(dev, 0);
956 break; 957 break;
957 case NETDEV_CHANGEMTU: 958 case NETDEV_CHANGEMTU:
958 case NETDEV_CHANGE: 959 case NETDEV_CHANGE:
959 rt_cache_flush(0); 960 rt_cache_flush(dev_net(dev), 0);
960 break; 961 break;
961 } 962 }
962 return NOTIFY_DONE; 963 return NOTIFY_DONE;