@@ -93,6 +93,7 @@ static int8_t ws_pae_controller_nw_key_check_and_insert(protocol_interface_info_
9393static int8_t ws_pae_controller_gak_from_gtk (uint8_t * gak , uint8_t * gtk , char * network_name );
9494static void ws_pae_controller_nw_key_index_check_and_set (protocol_interface_info_entry_t * interface_ptr , uint8_t index );
9595static int8_t ws_pae_controller_free_slot_find (nw_key_t * nw_key );
96+ static void ws_pae_controller_data_init (pae_controller_t * controller );
9697
9798static NS_LIST_DEFINE (pae_controller_list , pae_controller_t , link ) ;
9899
@@ -447,16 +448,26 @@ int8_t ws_pae_controller_init(protocol_interface_info_entry_t *interface_ptr)
447448 return -1 ;
448449 }
449450
450- memset (controller -> target_eui_64 , 0 , 8 );
451- memset (controller -> br_eui_64 , 0 , 8 );
452- memset (controller -> gtkhash , 0 , 32 );
453- memset (controller -> nw_key , 0 , sizeof (controller -> nw_key ));
454- controller -> target_pan_id = 0xffff ;
455451 controller -> interface_ptr = interface_ptr ;
456452 controller -> auth_completed = NULL ;
457453 controller -> nw_key_insert = NULL ;
458454 controller -> nw_send_key_index_set = NULL ;
459455 controller -> pan_ver_increment = NULL ;
456+
457+ ws_pae_controller_data_init (controller );
458+
459+ ns_list_add_to_end (& pae_controller_list , controller );
460+
461+ return 0 ;
462+ }
463+
464+ static void ws_pae_controller_data_init (pae_controller_t * controller )
465+ {
466+ memset (controller -> target_eui_64 , 0 , 8 );
467+ memset (controller -> br_eui_64 , 0 , 8 );
468+ memset (controller -> gtkhash , 0 , 32 );
469+ memset (controller -> nw_key , 0 , sizeof (controller -> nw_key ));
470+ controller -> target_pan_id = 0xffff ;
460471 controller -> pae_delete = NULL ;
461472 controller -> pae_fast_timer = NULL ;
462473 controller -> pae_slow_timer = NULL ;
@@ -475,10 +486,6 @@ int8_t ws_pae_controller_init(protocol_interface_info_entry_t *interface_ptr)
475486 sec_prot_keys_gtks_init (& controller -> next_gtks );
476487 sec_prot_certs_init (& controller -> certs );
477488 ws_pae_timers_settings_init (& controller -> timer_settings );
478-
479- ns_list_add_to_end (& pae_controller_list , controller );
480-
481- return 0 ;
482489}
483490
484491int8_t ws_pae_controller_supp_init (protocol_interface_info_entry_t * interface_ptr )
@@ -536,6 +543,12 @@ int8_t ws_pae_controller_stop(protocol_interface_info_entry_t *interface_ptr)
536543 controller -> pae_delete (interface_ptr );
537544 }
538545
546+ // Free data
547+ sec_prot_certs_delete (& controller -> certs );
548+
549+ // Init controller data
550+ ws_pae_controller_data_init (controller );
551+
539552 return 0 ;
540553}
541554
@@ -553,9 +566,6 @@ int8_t ws_pae_controller_delete(protocol_interface_info_entry_t *interface_ptr)
553566 }
554567
555568 ns_list_remove (& pae_controller_list , controller );
556-
557- sec_prot_certs_delete (& controller -> certs );
558-
559569 ns_dyn_mem_free (controller );
560570
561571 return 0 ;
0 commit comments