Skip to content

Commit be296cd

Browse files
Juha Heiskanenjuhhei01
authored andcommitted
WS IE lib update
Added function ws_wp_nested_network_name_read Fixed WS nested Payload IE types to short * PAN_IE * PAN-VER-IE * GTKHASH-IE * NET_NAME Updated Unit test's Change-Id: If0423c7237bfaddeb0489185e6cf713287f7020a
1 parent 686ad9c commit be296cd

File tree

7 files changed

+81
-16
lines changed

7 files changed

+81
-16
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,20 +244,17 @@ void ws_bootstrap_configuration_reset(protocol_interface_info_entry_t *cur)
244244

245245
static bool ws_bootstrap_network_name_matches(const struct mcps_data_ie_list *ie_ext, const char *network_name_ptr)
246246
{
247-
mac_nested_payload_IE_t nested_payload_ie;
248-
nested_payload_ie.id = WP_PAYLOAD_IE_NETNAME_TYPE;
249-
nested_payload_ie.type_long = true;
250-
251247
if (!network_name_ptr || !ie_ext ){
252248
return false;
253249
}
254250

255-
if (0 == mac_ie_nested_discover(ie_ext->payloadIeList , ie_ext->payloadIeListLength, &nested_payload_ie)) {
251+
ws_wp_network_name_t network_name;
252+
if (!ws_wp_nested_network_name_read(ie_ext->payloadIeList , ie_ext->payloadIeListLength, &network_name)) {
256253
tr_warn("No network name IE");
257254
return false;
258255
}
259256

260-
if (network_name_ptr == NULL || strncmp(network_name_ptr, (char *)nested_payload_ie.content_ptr, nested_payload_ie.length) != 0) {
257+
if (network_name_ptr == NULL || strncmp(network_name_ptr, (char *)network_name.network_name, network_name.network_name_length) != 0) {
261258
return false;
262259
}
263260
return true;

source/6LoWPAN/ws/ws_ie_lib.c

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "mac_common_defines.h"
2525
#include "6LoWPAN/MAC/mac_ie_lib.h"
2626
#include "6LoWPAN/ws/ws_common_defines.h"
27+
#include "6LoWPAN/ws/ws_ie_lib.h"
2728

2829
static uint8_t *ws_wh_header_base_write(uint8_t *ptr, uint16_t length, uint8_t type)
2930
{
@@ -202,9 +203,9 @@ uint8_t *ws_wp_nested_vp_write(uint8_t *ptr, uint8_t * vendor_payload, uint16_t
202203
uint8_t *ws_wp_nested_pan_info_write(uint8_t *ptr, struct ws_pan_information_s *pan_congiguration)
203204
{
204205
if (!pan_congiguration) {
205-
return mac_ie_nested_ie_long_base_write(ptr,WP_PAYLOAD_IE_PAN_TYPE, 0);
206+
return mac_ie_nested_ie_short_base_write(ptr,WP_PAYLOAD_IE_PAN_TYPE, 0);
206207
}
207-
ptr = mac_ie_nested_ie_long_base_write(ptr,WP_PAYLOAD_IE_PAN_TYPE, 5);
208+
ptr = mac_ie_nested_ie_short_base_write(ptr,WP_PAYLOAD_IE_PAN_TYPE, 5);
208209
ptr = common_write_16_bit_inverse(pan_congiguration->pan_size, ptr);
209210
ptr = common_write_16_bit_inverse(pan_congiguration->routing_cost, ptr);
210211
uint8_t temp8 = 0;
@@ -218,7 +219,7 @@ uint8_t *ws_wp_nested_pan_info_write(uint8_t *ptr, struct ws_pan_information_s *
218219

219220
uint8_t *ws_wp_nested_netname_write(uint8_t *ptr, uint8_t *network_name, uint8_t network_name_length)
220221
{
221-
ptr = mac_ie_nested_ie_long_base_write(ptr,WP_PAYLOAD_IE_NETNAME_TYPE, network_name_length);
222+
ptr = mac_ie_nested_ie_short_base_write(ptr,WP_PAYLOAD_IE_NETNAME_TYPE, network_name_length);
222223
if (network_name_length) {
223224
memcpy(ptr,network_name, network_name_length);
224225
ptr += network_name_length;
@@ -231,13 +232,13 @@ uint8_t *ws_wp_nested_pan_ver_write(uint8_t *ptr, struct ws_pan_information_s *p
231232
if (!pan_congiguration) {
232233
return ptr;
233234
}
234-
ptr = mac_ie_nested_ie_long_base_write(ptr,WP_PAYLOAD_IE_PAN_VER_TYPE, 2);
235+
ptr = mac_ie_nested_ie_short_base_write(ptr,WP_PAYLOAD_IE_PAN_VER_TYPE, 2);
235236
return common_write_16_bit_inverse(pan_congiguration->pan_version, ptr);
236237
}
237238

238239
uint8_t *ws_wp_nested_gtkhash_write(uint8_t *ptr, uint8_t *gtkhash, uint8_t gtkhash_length)
239240
{
240-
ptr = mac_ie_nested_ie_long_base_write(ptr,WP_PAYLOAD_IE_GTKHASH_TYPE, gtkhash_length);
241+
ptr = mac_ie_nested_ie_short_base_write(ptr,WP_PAYLOAD_IE_GTKHASH_TYPE, gtkhash_length);
241242
if (gtkhash_length) {
242243
memcpy(ptr, gtkhash, 32);
243244
ptr += 32;
@@ -450,7 +451,7 @@ bool ws_wp_nested_pan_read(uint8_t *data, uint16_t length, struct ws_pan_informa
450451
{
451452
mac_nested_payload_IE_t nested_payload_ie;
452453
nested_payload_ie.id = WP_PAYLOAD_IE_PAN_TYPE;
453-
nested_payload_ie.type_long = true;
454+
nested_payload_ie.type_long = false;
454455
if (mac_ie_nested_discover(data , length, &nested_payload_ie) != 5) {
455456
return false;
456457
}
@@ -468,7 +469,7 @@ bool ws_wp_nested_pan_version_read(uint8_t *data, uint16_t length, uint16_t *pan
468469
{
469470
mac_nested_payload_IE_t nested_payload_ie;
470471
nested_payload_ie.id = WP_PAYLOAD_IE_PAN_VER_TYPE;
471-
nested_payload_ie.type_long = true;
472+
nested_payload_ie.type_long = false;
472473
if (mac_ie_nested_discover(data , length, &nested_payload_ie) != 2) {
473474
return false;
474475
}
@@ -481,11 +482,29 @@ uint8_t * ws_wp_nested_gtkhash_read(uint8_t *data, uint16_t length)
481482
{
482483
mac_nested_payload_IE_t nested_payload_ie;
483484
nested_payload_ie.id = WP_PAYLOAD_IE_GTKHASH_TYPE;
484-
nested_payload_ie.type_long = true;
485+
nested_payload_ie.type_long = false;
485486
if (mac_ie_nested_discover(data , length, &nested_payload_ie) != 32) {
486487
return NULL;
487488
}
488489

489490
return nested_payload_ie.content_ptr;
490491
}
491492

493+
494+
bool ws_wp_nested_network_name_read(uint8_t *data, uint16_t length, ws_wp_network_name_t *network_name)
495+
{
496+
mac_nested_payload_IE_t nested_payload_ie;
497+
nested_payload_ie.id = WP_PAYLOAD_IE_NETNAME_TYPE;
498+
nested_payload_ie.type_long = false;
499+
500+
if (0 == mac_ie_nested_discover(data , length, &nested_payload_ie)) {
501+
return false;
502+
} else if (nested_payload_ie.length > 32) {
503+
//Too long name
504+
return false;
505+
}
506+
network_name->network_name = nested_payload_ie.content_ptr;
507+
network_name->network_name_length = nested_payload_ie.length;
508+
return true;
509+
}
510+

source/6LoWPAN/ws/ws_ie_lib.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ struct ws_pan_information_s;
2222
struct ws_utt_ie;
2323
struct ws_bt_ie;
2424
struct ws_us_ie;
25+
struct ws_hopping_schedule_s;
26+
27+
/**
28+
* @brief ws_wp_network_name_t WS nested payload network name
29+
*/
30+
typedef struct ws_wp_network_name {
31+
uint8_t network_name_length;
32+
uint8_t *network_name;
33+
} ws_wp_network_name_t;
2534

2635
/* WS_WH HEADER IE */
2736
uint8_t *ws_wh_utt_write(uint8_t *ptr, uint8_t message_type);
@@ -47,6 +56,8 @@ bool ws_wp_nested_us_read(uint8_t *data, uint16_t length, struct ws_us_ie *us_ie
4756
bool ws_wp_nested_bs_read(uint8_t *data, uint16_t length, struct ws_bs_ie *bs_ie);
4857
bool ws_wp_nested_pan_read(uint8_t *data, uint16_t length, struct ws_pan_information_s *pan_congiguration);
4958
bool ws_wp_nested_pan_version_read(uint8_t *data, uint16_t length, uint16_t *pan_version);
59+
bool ws_wp_nested_network_name_read(uint8_t *data, uint16_t length, ws_wp_network_name_t *network_name);
5060
uint8_t * ws_wp_nested_gtkhash_read(uint8_t *data, uint16_t length);
5161

62+
5263
#endif /* WS_IE_LIB_H_ */

test/nanostack/unittest/6LoWPAN/ws_ie_lib/test_ws_ie_lib.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,3 +390,28 @@ bool test_ws_wp_nested_gtkhash_read()
390390
return true;
391391
}
392392

393+
bool test_ws_wp_nested_network_name_read()
394+
{
395+
uint8_t temp_buf[40];
396+
ws_wp_network_name_t network_name;
397+
mac_ie_lib_stub_def.value_uint16 = 0;
398+
if (ws_wp_nested_network_name_read(temp_buf, 40, &network_name)) {
399+
return false;
400+
}
401+
402+
mac_ie_lib_stub_def.value_uint16 = 33;
403+
if (ws_wp_nested_network_name_read(temp_buf, 20, &network_name)) {
404+
return false;
405+
}
406+
407+
mac_ie_lib_stub_def.value_uint16 = 30;
408+
if (!ws_wp_nested_network_name_read(temp_buf, 20, &network_name)) {
409+
return false;
410+
}
411+
412+
if (network_name.network_name != temp_buf || network_name.network_name_length != 30) {
413+
return false;
414+
}
415+
416+
return true;
417+
}

test/nanostack/unittest/6LoWPAN/ws_ie_lib/test_ws_ie_lib.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ bool test_ws_wp_nested_pan_version_read();
4646

4747
bool test_ws_wp_nested_gtkhash_read();
4848

49+
bool test_ws_wp_nested_network_name_read();
50+
4951
#ifdef __cplusplus
5052
}
5153
#endif

test/nanostack/unittest/6LoWPAN/ws_ie_lib/ws_ie_libtest.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ TEST(ws_ie_lib, test_ws_wp_nested_gtkhash_read)
8484
CHECK(test_ws_wp_nested_gtkhash_read());
8585
}
8686

87+
TEST(ws_ie_lib, test_ws_wp_nested_network_name_read)
88+
{
89+
CHECK(test_ws_wp_nested_network_name_read());
90+
}
91+
8792

8893

8994

test/nanostack/unittest/stub/ws_ie_lib_stub.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include "mac_common_defines.h"
4141
#include "6LoWPAN/MAC/mac_ie_lib.h"
4242
#include "6LoWPAN/ws/ws_common_defines.h"
43+
#include "6LoWPAN/ws/ws_ie_lib.h"
4344
#include "ws_ie_lib_stub.h"
4445

4546
ws_ie_lib_stub_def ws_ie_lib_stub;
@@ -84,7 +85,7 @@ uint8_t *ws_wp_base_write(uint8_t *ptr, uint16_t length)
8485
return ptr;
8586
}
8687

87-
uint8_t *ws_wp_nested_hopping_schedule_write(uint8_t *ptr,struct ws_hoopping_schedule_s *hopping_schedule, bool unicast_schedule)
88+
uint8_t *ws_wp_nested_hopping_schedule_write(uint8_t *ptr,struct ws_hopping_schedule_s *hopping_schedule, bool unicast_schedule)
8889
{
8990
if (unicast_schedule) {
9091
ptr += 2 + 6;
@@ -142,7 +143,7 @@ uint8_t *ws_wp_nested_gtkhash_write(uint8_t *ptr, uint8_t *gtkhash, uint8_t gtkh
142143
return ptr;
143144
}
144145

145-
uint16_t ws_wp_nested_hopping_schedule_length(struct ws_hoopping_schedule_s *hopping_schedule, bool unicast_schedule)
146+
uint16_t ws_wp_nested_hopping_schedule_length(struct ws_hopping_schedule_s *hopping_schedule, bool unicast_schedule)
146147
{
147148
if (unicast_schedule) {
148149
return 8;
@@ -188,3 +189,8 @@ uint8_t * ws_wp_nested_gtkhash_read(uint8_t *data, uint16_t length)
188189
{
189190
return NULL;
190191
}
192+
193+
bool ws_wp_nested_network_name_read(uint8_t *data, uint16_t length, ws_wp_network_name_t *network_name)
194+
{
195+
return false;
196+
}

0 commit comments

Comments
 (0)