Skip to content

Commit a327210

Browse files
author
Mika Leppänen
committed
RADIUS shared secret .json parameter set correction
1 parent 86b27bf commit a327210

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,10 @@ class WisunBorderRouter {
264264
mesh_error_t configure();
265265
mesh_error_t apply_configuration(int8_t mesh_if_id);
266266
mesh_error_t set_bbr_radius_address(void);
267+
mesh_error_t set_bbr_radius_shared_secret();
267268
char _radius_ipv6_addr[40];
269+
char *_shared_secret = NULL;
270+
uint16_t _shared_secret_len = 0;
268271
int8_t _mesh_if_id = -1;
269272
bool _radius_ipv6_addr_set = false;
270273
bool _configured = false;

features/nanostack/mbed-mesh-api/source/WisunBorderRouter.cpp

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ mesh_error_t WisunBorderRouter::configure()
130130
status = set_radius_shared_secret(radius_shared_secret_len, (uint8_t *) radius_shared_secret);
131131
if (status != MESH_ERROR_NONE) {
132132
tr_error("Failed to set RADIUS shared secret!");
133-
return status;
134133
}
135134
#endif
136135

@@ -139,7 +138,6 @@ mesh_error_t WisunBorderRouter::configure()
139138
status = set_radius_server_ipv6_address(radius_server_ipv6_addr);
140139
if (status != MESH_ERROR_NONE) {
141140
tr_error("Failed to set RADIUS server IPv6 address!");
142-
return status;
143141
}
144142
#endif
145143

@@ -153,6 +151,13 @@ mesh_error_t WisunBorderRouter::apply_configuration(int8_t mesh_if_id)
153151
tr_error("Failed to apply RADIUS server IPv6 address!");
154152
return MESH_ERROR_PARAM;
155153
}
154+
155+
status = set_bbr_radius_shared_secret();
156+
if (status != MESH_ERROR_NONE) {
157+
tr_error("Failed to apply RADIUS server IPv6 address!");
158+
return MESH_ERROR_PARAM;
159+
}
160+
156161
return MESH_ERROR_NONE;
157162
}
158163

@@ -303,11 +308,37 @@ mesh_error_t WisunBorderRouter::set_radius_shared_secret(uint16_t shared_secret_
303308
return MESH_ERROR_PARAM;
304309
}
305310

311+
if (_shared_secret != NULL) {
312+
delete[] _shared_secret;
313+
}
314+
315+
_shared_secret = new (std::nothrow) char[shared_secret_len];
316+
if (_shared_secret == NULL) {
317+
return MESH_ERROR_MEMORY;
318+
}
319+
320+
memcpy(_shared_secret, shared_secret, shared_secret_len);
321+
_shared_secret_len = shared_secret_len;
322+
306323
int status = ws_bbr_radius_shared_secret_set(_mesh_if_id, shared_secret_len, shared_secret);
307324
if (status != 0) {
308325
return MESH_ERROR_UNKNOWN;
309326
}
310327

328+
return set_bbr_radius_shared_secret();
329+
}
330+
331+
mesh_error_t WisunBorderRouter::set_bbr_radius_shared_secret()
332+
{
333+
if (_shared_secret_len == 0 || _shared_secret == NULL) {
334+
return MESH_ERROR_UNKNOWN;
335+
}
336+
337+
int status = ws_bbr_radius_shared_secret_set(_mesh_if_id, _shared_secret_len, (uint8_t *) _shared_secret);
338+
if (status != 0) {
339+
return MESH_ERROR_UNKNOWN;
340+
}
341+
311342
return MESH_ERROR_NONE;
312343
}
313344

0 commit comments

Comments
 (0)