Skip to content

Commit e5aba03

Browse files
Juha HeiskanenMika Tervonen
authored andcommitted
WS PAN advert validation update
Moved PAN-IE validation inside ws_bootstrap_pan_advertisement_analyse().
1 parent 802ce3e commit e5aba03

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,17 @@ static void ws_bootstrap_pan_advertisement_analyse_active(struct protocol_interf
289289

290290
}
291291

292-
static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_info_entry *cur, const struct mcps_data_ind_s *data, ws_pan_information_t *pan_information, ws_utt_ie_t *ws_utt, ws_us_ie_t *ws_us)
292+
static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_info_entry *cur, const struct mcps_data_ind_s *data, const struct mcps_data_ie_list *ie_ext, ws_utt_ie_t *ws_utt, ws_us_ie_t *ws_us)
293293
{
294+
295+
//Validate Pan Conrfirmation is at packet
296+
ws_pan_information_t pan_information;
297+
if (!ws_wp_nested_pan_read(ie_ext->payloadIeList, ie_ext->payloadIeListLength, &pan_information)) {
298+
// Corrupted
299+
tr_error("No pan information");
300+
return;
301+
}
302+
294303
// if in active scan state
295304
if(!ws_bootstrap_state_discovery(cur)) {
296305
if (data->SrcPANId != cur->ws_info->network_pan_id) {
@@ -300,9 +309,8 @@ static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_inf
300309
}
301310

302311

303-
304312
// Check pan flags so that it is valid
305-
if (!pan_information->rpl_routing_method) {
313+
if (!pan_information.rpl_routing_method) {
306314
// NOT RPL routing
307315
tr_warn("Not supported routing");
308316
return;
@@ -338,7 +346,7 @@ static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_inf
338346
cur->ws_info->parent_info.dwell_interval = ws_us->dwell_interval;
339347

340348
// Saved from Pan information
341-
cur->ws_info->parent_info.pan_configuration = *pan_information;
349+
cur->ws_info->parent_info.pan_configuration = pan_information;
342350

343351
// Saved from message
344352
cur->ws_info->parent_info.timestamp = data->timestamp;
@@ -353,7 +361,7 @@ static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_inf
353361
tr_info("New possible parent found addr:%s", trace_array(cur->ws_info->parent_info.addr, 8));
354362
} else {
355363
// Active state processing
356-
ws_bootstrap_pan_advertisement_analyse_active(cur, pan_information);
364+
ws_bootstrap_pan_advertisement_analyse_active(cur, &pan_information);
357365
}
358366
// Parent valid store information
359367
cur->ws_info->parent_info.ufsi = ws_utt->ufsi;
@@ -544,17 +552,10 @@ static void ws_bootstrap_asynch_ind(struct protocol_interface_info_entry *cur, c
544552
// Not from long address
545553
return;
546554
}
547-
ws_pan_information_t pan_information;
548-
555+
//Validate network name
549556
switch (message_type) {
550557
case WS_FT_PAN_ADVERT:
551558
case WS_FT_PAN_ADVERT_SOL:
552-
//Validate Pan Corfirmation is at packet
553-
if (!ws_wp_nested_pan_read(ie_ext->payloadIeList, ie_ext->payloadIeListLength, &pan_information)) {
554-
// Corrupted
555-
tr_error("No pan information");
556-
return;
557-
}
558559
case WS_FT_PAN_CONF_SOL:
559560
//Check Network Name
560561
if (!ws_bootstrap_network_name_matches(ie_ext, cur->ws_info->network_name)) {
@@ -589,7 +590,7 @@ static void ws_bootstrap_asynch_ind(struct protocol_interface_info_entry *cur, c
589590
case WS_FT_PAN_ADVERT:
590591
// Analyse Advertisement
591592
tr_debug("received ADVERT");
592-
ws_bootstrap_pan_advertisement_analyse(cur, data, &pan_information, &ws_utt, &ws_us);
593+
ws_bootstrap_pan_advertisement_analyse(cur, data, ie_ext, &ws_utt, &ws_us);
593594
break;
594595
case WS_FT_PAN_ADVERT_SOL:
595596
tr_debug("received ADVERT SOL");

0 commit comments

Comments
 (0)