Skip to content

Commit

Permalink
WS PAN advert validation update
Browse files Browse the repository at this point in the history
Moved PAN-IE validation inside ws_bootstrap_pan_advertisement_analyse().
  • Loading branch information
Juha Heiskanen authored and Mika Tervonen committed Mar 12, 2018
1 parent 802ce3e commit e5aba03
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions source/6LoWPAN/ws/ws_bootstrap.c
Expand Up @@ -289,8 +289,17 @@ static void ws_bootstrap_pan_advertisement_analyse_active(struct protocol_interf

}

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)
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)
{

//Validate Pan Conrfirmation is at packet
ws_pan_information_t pan_information;
if (!ws_wp_nested_pan_read(ie_ext->payloadIeList, ie_ext->payloadIeListLength, &pan_information)) {
// Corrupted
tr_error("No pan information");
return;
}

// if in active scan state
if(!ws_bootstrap_state_discovery(cur)) {
if (data->SrcPANId != cur->ws_info->network_pan_id) {
Expand All @@ -300,9 +309,8 @@ static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_inf
}



// Check pan flags so that it is valid
if (!pan_information->rpl_routing_method) {
if (!pan_information.rpl_routing_method) {
// NOT RPL routing
tr_warn("Not supported routing");
return;
Expand Down Expand Up @@ -338,7 +346,7 @@ static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_inf
cur->ws_info->parent_info.dwell_interval = ws_us->dwell_interval;

// Saved from Pan information
cur->ws_info->parent_info.pan_configuration = *pan_information;
cur->ws_info->parent_info.pan_configuration = pan_information;

// Saved from message
cur->ws_info->parent_info.timestamp = data->timestamp;
Expand All @@ -353,7 +361,7 @@ static void ws_bootstrap_pan_advertisement_analyse(struct protocol_interface_inf
tr_info("New possible parent found addr:%s", trace_array(cur->ws_info->parent_info.addr, 8));
} else {
// Active state processing
ws_bootstrap_pan_advertisement_analyse_active(cur, pan_information);
ws_bootstrap_pan_advertisement_analyse_active(cur, &pan_information);
}
// Parent valid store information
cur->ws_info->parent_info.ufsi = ws_utt->ufsi;
Expand Down Expand Up @@ -544,17 +552,10 @@ static void ws_bootstrap_asynch_ind(struct protocol_interface_info_entry *cur, c
// Not from long address
return;
}
ws_pan_information_t pan_information;

//Validate network name
switch (message_type) {
case WS_FT_PAN_ADVERT:
case WS_FT_PAN_ADVERT_SOL:
//Validate Pan Corfirmation is at packet
if (!ws_wp_nested_pan_read(ie_ext->payloadIeList, ie_ext->payloadIeListLength, &pan_information)) {
// Corrupted
tr_error("No pan information");
return;
}
case WS_FT_PAN_CONF_SOL:
//Check Network Name
if (!ws_bootstrap_network_name_matches(ie_ext, cur->ws_info->network_name)) {
Expand Down Expand Up @@ -589,7 +590,7 @@ static void ws_bootstrap_asynch_ind(struct protocol_interface_info_entry *cur, c
case WS_FT_PAN_ADVERT:
// Analyse Advertisement
tr_debug("received ADVERT");
ws_bootstrap_pan_advertisement_analyse(cur, data, &pan_information, &ws_utt, &ws_us);
ws_bootstrap_pan_advertisement_analyse(cur, data, ie_ext, &ws_utt, &ws_us);
break;
case WS_FT_PAN_ADVERT_SOL:
tr_debug("received ADVERT SOL");
Expand Down

0 comments on commit e5aba03

Please sign in to comment.