@@ -93,6 +93,7 @@ static int8_t ws_pae_controller_nw_key_check_and_insert(protocol_interface_info_
93
93
static int8_t ws_pae_controller_gak_from_gtk (uint8_t * gak , uint8_t * gtk , char * network_name );
94
94
static void ws_pae_controller_nw_key_index_check_and_set (protocol_interface_info_entry_t * interface_ptr , uint8_t index );
95
95
static 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 );
96
97
97
98
static NS_LIST_DEFINE (pae_controller_list , pae_controller_t , link ) ;
98
99
@@ -447,16 +448,26 @@ int8_t ws_pae_controller_init(protocol_interface_info_entry_t *interface_ptr)
447
448
return -1 ;
448
449
}
449
450
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 ;
455
451
controller -> interface_ptr = interface_ptr ;
456
452
controller -> auth_completed = NULL ;
457
453
controller -> nw_key_insert = NULL ;
458
454
controller -> nw_send_key_index_set = NULL ;
459
455
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 ;
460
471
controller -> pae_delete = NULL ;
461
472
controller -> pae_fast_timer = NULL ;
462
473
controller -> pae_slow_timer = NULL ;
@@ -475,10 +486,6 @@ int8_t ws_pae_controller_init(protocol_interface_info_entry_t *interface_ptr)
475
486
sec_prot_keys_gtks_init (& controller -> next_gtks );
476
487
sec_prot_certs_init (& controller -> certs );
477
488
ws_pae_timers_settings_init (& controller -> timer_settings );
478
-
479
- ns_list_add_to_end (& pae_controller_list , controller );
480
-
481
- return 0 ;
482
489
}
483
490
484
491
int8_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)
536
543
controller -> pae_delete (interface_ptr );
537
544
}
538
545
546
+ // Free data
547
+ sec_prot_certs_delete (& controller -> certs );
548
+
549
+ // Init controller data
550
+ ws_pae_controller_data_init (controller );
551
+
539
552
return 0 ;
540
553
}
541
554
@@ -553,9 +566,6 @@ int8_t ws_pae_controller_delete(protocol_interface_info_entry_t *interface_ptr)
553
566
}
554
567
555
568
ns_list_remove (& pae_controller_list , controller );
556
-
557
- sec_prot_certs_delete (& controller -> certs );
558
-
559
569
ns_dyn_mem_free (controller );
560
570
561
571
return 0 ;
0 commit comments