@@ -1267,7 +1267,9 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
12671267 in6_ifa_put (ifp );
12681268}
12691269
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 )
12711273{
12721274 struct inet6_dev * idev = ifp -> idev ;
12731275 struct in6_addr addr , * tmpaddr ;
@@ -1371,7 +1373,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i
13711373
13721374 ift = ipv6_add_addr (idev , & addr , NULL , tmp_plen ,
13731375 ipv6_addr_scope (& addr ), addr_flags ,
1374- tmp_valid_lft , tmp_prefered_lft , true , NULL );
1376+ tmp_valid_lft , tmp_prefered_lft , block , NULL );
13751377 if (IS_ERR (ift )) {
13761378 in6_ifa_put (ifp );
13771379 in6_dev_put (idev );
@@ -1956,7 +1958,7 @@ static void addrconf_dad_stop(struct inet6_ifaddr *ifp, int dad_failed)
19561958 if (ifpub ) {
19571959 in6_ifa_hold (ifpub );
19581960 spin_unlock_bh (& ifp -> lock );
1959- ipv6_create_tempaddr (ifpub , ifp );
1961+ ipv6_create_tempaddr (ifpub , ifp , true );
19601962 in6_ifa_put (ifpub );
19611963 } else {
19621964 spin_unlock_bh (& ifp -> lock );
@@ -2456,7 +2458,7 @@ static void manage_tempaddrs(struct inet6_dev *idev,
24562458 * no temporary address currently exists.
24572459 */
24582460 read_unlock_bh (& idev -> lock );
2459- ipv6_create_tempaddr (ifp , NULL );
2461+ ipv6_create_tempaddr (ifp , NULL , false );
24602462 } else {
24612463 read_unlock_bh (& idev -> lock );
24622464 }
@@ -4351,7 +4353,7 @@ static void addrconf_verify_rtnl(void)
43514353 spin_lock (& ifpub -> lock );
43524354 ifpub -> regen_count = 0 ;
43534355 spin_unlock (& ifpub -> lock );
4354- ipv6_create_tempaddr (ifpub , ifp );
4356+ ipv6_create_tempaddr (ifpub , ifp , true );
43554357 in6_ifa_put (ifpub );
43564358 in6_ifa_put (ifp );
43574359 goto restart ;
0 commit comments