aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/devinet.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 6d85800daeb7..2523001f4c9a 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -345,6 +345,17 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
345 } 345 }
346 } 346 }
347 347
348 /* On promotion all secondaries from subnet are changing
349 * the primary IP, we must remove all their routes silently
350 * and later to add them back with new prefsrc. Do this
351 * while all addresses are on the device list.
352 */
353 for (ifa = promote; ifa; ifa = ifa->ifa_next) {
354 if (ifa1->ifa_mask == ifa->ifa_mask &&
355 inet_ifa_match(ifa1->ifa_address, ifa))
356 fib_del_ifaddr(ifa, ifa1);
357 }
358
348 /* 2. Unlink it */ 359 /* 2. Unlink it */
349 360
350 *ifap = ifa1->ifa_next; 361 *ifap = ifa1->ifa_next;