Skip to content

Commit 2d50887

Browse files
author
Mika Leppänen
committed
Corrected Wi-SUN security component initializations
Components are now initialized only once.
1 parent 8a8b6ef commit 2d50887

File tree

6 files changed

+37
-17
lines changed

6 files changed

+37
-17
lines changed

source/6LoWPAN/ws/ws_eapol_auth_relay.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,15 @@ static int8_t ws_eapol_auth_relay_eapol_pdu_receive(const uint8_t *eui_64, const
4646
static int8_t ws_eapol_auth_relay_socket_pdu_receive(const ns_address_t *src_addr, void *data, uint16_t len);
4747
static int8_t ws_eapol_auth_relay_send_to_kmp(const uint8_t *eui_64, const uint8_t *ip_addr, uint16_t port, const void *data, uint16_t data_len);
4848

49+
static bool relay_initiated = false;
4950

5051
int8_t ws_eapol_auth_relay_init(protocol_interface_info_entry_t *interface_ptr)
5152
{
53+
if (relay_initiated) {
54+
return 0;
55+
}
56+
relay_initiated = true;
57+
5258
ws_eapol_relay_init(interface_ptr);
5359
ws_eapol_relay_cb_register(ws_eapol_auth_relay_socket_pdu_receive);
5460

source/6LoWPAN/ws/ws_eapol_pdu.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,15 @@ static eapol_pdu_data_t *eapol_pdu_data;
7272

7373
int8_t ws_eapol_pdu_init(protocol_interface_info_entry_t *interface_ptr)
7474
{
75+
if (eapol_pdu_data) {
76+
return 0;
77+
}
78+
79+
eapol_pdu_data = ns_dyn_mem_alloc(sizeof(eapol_pdu_data_t));
7580
if (!eapol_pdu_data) {
76-
eapol_pdu_data = ns_dyn_mem_alloc(sizeof(eapol_pdu_data_t));
77-
if (!eapol_pdu_data) {
78-
return -1;
79-
}
81+
return -1;
8082
}
83+
8184
eapol_pdu_data->interface_ptr = interface_ptr;
8285
ns_list_init(&eapol_pdu_data->recv_cb_list);
8386
ns_list_init(&eapol_pdu_data->msdu_list);

source/6LoWPAN/ws/ws_eapol_relay.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,16 @@ static eapol_relay_data_t *eapol_relay_data;
5252

5353
int8_t ws_eapol_relay_init(protocol_interface_info_entry_t *interface_ptr)
5454
{
55+
if (eapol_relay_data) {
56+
return 0;
57+
}
58+
59+
eapol_relay_data = ns_dyn_mem_alloc(sizeof(eapol_relay_data_t));
5560
if (!eapol_relay_data) {
56-
eapol_relay_data = ns_dyn_mem_alloc(sizeof(eapol_relay_data_t));
57-
if (!eapol_relay_data) {
58-
return -1;
59-
}
60-
eapol_relay_data->relay_socket_id = -1;
61+
return -1;
6162
}
63+
64+
eapol_relay_data->relay_socket_id = -1;
6265
eapol_relay_data->interface_ptr = interface_ptr;
6366

6467
if (eapol_relay_data->relay_socket_id < 0) {
@@ -67,7 +70,6 @@ int8_t ws_eapol_relay_init(protocol_interface_info_entry_t *interface_ptr)
6770
return -1;
6871
}
6972
}
70-
7173
return 0;
7274
}
7375

source/6LoWPAN/ws/ws_eapol_supp_relay.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,16 @@ static int8_t ws_eapol_supp_relay_eapol_pdu_address_check(const uint8_t *eui_64)
4343
static int8_t ws_eapol_supp_relay_eapol_pdu_receive(const uint8_t *eui_64, const void *pdu, uint16_t size);
4444
static int8_t ws_eapol_supp_relay_socket_pdu_receive(const ns_address_t *src_addr, void *data, uint16_t len);
4545

46+
static bool relay_initiated = false;
4647
static uint8_t supp_br_addr[16];
4748

4849
int8_t ws_eapol_supp_relay_init(protocol_interface_info_entry_t *interface_ptr)
4950
{
51+
if (relay_initiated) {
52+
return 0;
53+
}
54+
relay_initiated = true;
55+
5056
if (ws_eapol_relay_init(interface_ptr) < 0) {
5157
return -1;
5258
}

source/6LoWPAN/ws/ws_pae_auth.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,15 @@ static void ws_pae_auth_kmp_api_finished(kmp_api_t *kmp);
7676

7777
int8_t ws_pae_auth_init(protocol_interface_info_entry_t *interface_ptr)
7878
{
79+
if (auth_data) {
80+
return 0;
81+
}
82+
83+
auth_data = ns_dyn_mem_alloc(sizeof(pae_auth_data_t));
7984
if (!auth_data) {
80-
auth_data = ns_dyn_mem_alloc(sizeof(pae_auth_data_t));
81-
if (!auth_data) {
82-
return -1;
83-
}
85+
return -1;
8486
}
87+
8588
auth_data->interface_ptr = interface_ptr;
8689
ws_pae_lib_supp_list_init(&auth_data->active_supp_list);
8790
ws_pae_lib_supp_list_init(&auth_data->inactive_supp_list);

source/6LoWPAN/ws/ws_pae_controller.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ void ws_pae_controller_set_target(uint8_t *dest_eui_64)
9292

9393
void ws_pae_controller_init(protocol_interface_info_entry_t *interface_ptr)
9494
{
95-
if (!controller_data) {
96-
controller_data = ns_dyn_mem_alloc(sizeof(pae_controller_data_t));
95+
if (controller_data) {
96+
return;
9797
}
9898

99+
controller_data = ns_dyn_mem_alloc(sizeof(pae_controller_data_t));
99100
controller_data->auth_completed_cb = 0;
100101
controller_data->interface_ptr = interface_ptr;
101102
}
102103

103-
104104
#endif /* HAVE_WS */
105105

0 commit comments

Comments
 (0)