|
@@ -2021,10 +2021,11 @@ ok:
|
|
|
ipv6_ifa_notify(0, ift);
|
|
|
}
|
|
|
|
|
|
- if (create && in6_dev->cnf.use_tempaddr > 0) {
|
|
|
+ if ((create || list_empty(&in6_dev->tempaddr_list)) && in6_dev->cnf.use_tempaddr > 0) {
|
|
|
/*
|
|
|
* When a new public address is created as described in [ADDRCONF],
|
|
|
- * also create a new temporary address.
|
|
|
+ * also create a new temporary address. Also create a temporary
|
|
|
+ * address if it's enabled but no temporary address currently exists.
|
|
|
*/
|
|
|
read_unlock_bh(&in6_dev->lock);
|
|
|
ipv6_create_tempaddr(ifp, NULL);
|