@@ -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