@@ -1267,7 +1267,9 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
1267
1267
in6_ifa_put (ifp );
1268
1268
}
1269
1269
1270
- static int ipv6_create_tempaddr (struct inet6_ifaddr * ifp , struct inet6_ifaddr * ift )
1270
+ static int ipv6_create_tempaddr (struct inet6_ifaddr * ifp ,
1271
+ struct inet6_ifaddr * ift ,
1272
+ bool block )
1271
1273
{
1272
1274
struct inet6_dev * idev = ifp -> idev ;
1273
1275
struct in6_addr addr , * tmpaddr ;
@@ -1371,7 +1373,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i
1371
1373
1372
1374
ift = ipv6_add_addr (idev , & addr , NULL , tmp_plen ,
1373
1375
ipv6_addr_scope (& addr ), addr_flags ,
1374
- tmp_valid_lft , tmp_prefered_lft , true , NULL );
1376
+ tmp_valid_lft , tmp_prefered_lft , block , NULL );
1375
1377
if (IS_ERR (ift )) {
1376
1378
in6_ifa_put (ifp );
1377
1379
in6_dev_put (idev );
@@ -1956,7 +1958,7 @@ static void addrconf_dad_stop(struct inet6_ifaddr *ifp, int dad_failed)
1956
1958
if (ifpub ) {
1957
1959
in6_ifa_hold (ifpub );
1958
1960
spin_unlock_bh (& ifp -> lock );
1959
- ipv6_create_tempaddr (ifpub , ifp );
1961
+ ipv6_create_tempaddr (ifpub , ifp , true );
1960
1962
in6_ifa_put (ifpub );
1961
1963
} else {
1962
1964
spin_unlock_bh (& ifp -> lock );
@@ -2456,7 +2458,7 @@ static void manage_tempaddrs(struct inet6_dev *idev,
2456
2458
* no temporary address currently exists.
2457
2459
*/
2458
2460
read_unlock_bh (& idev -> lock );
2459
- ipv6_create_tempaddr (ifp , NULL );
2461
+ ipv6_create_tempaddr (ifp , NULL , false );
2460
2462
} else {
2461
2463
read_unlock_bh (& idev -> lock );
2462
2464
}
@@ -4351,7 +4353,7 @@ static void addrconf_verify_rtnl(void)
4351
4353
spin_lock (& ifpub -> lock );
4352
4354
ifpub -> regen_count = 0 ;
4353
4355
spin_unlock (& ifpub -> lock );
4354
- ipv6_create_tempaddr (ifpub , ifp );
4356
+ ipv6_create_tempaddr (ifpub , ifp , true );
4355
4357
in6_ifa_put (ifpub );
4356
4358
in6_ifa_put (ifp );
4357
4359
goto restart ;
0 commit comments