Skip to content

Commit 5e8a0a8

Browse files
author
Cruz Monrreal
authored
Merge pull request #7097 from TeemuKultala/random_port
cellular: random socket port number
2 parents 10b8597 + d3a46eb commit 5e8a0a8

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

features/cellular/framework/common/CellularUtil.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
#include <string.h>
1919
#include <stdlib.h>
2020

21+
22+
#include "randLIB.h"
23+
#define RANDOM_PORT_NUMBER_START 49152
24+
#define RANDOM_PORT_NUMBER_END 65535
25+
#define RANDOM_PORT_NUMBER_COUNT (RANDOM_PORT_NUMBER_END - RANDOM_PORT_NUMBER_START + 1)
26+
#define RANDOM_PORT_NUMBER_MAX_STEP 100
27+
28+
2129
namespace mbed_cellular_util {
2230

2331
void convert_ipv6(char* ip)
@@ -315,12 +323,19 @@ int char_str_to_hex_str(const char* str, uint16_t len, char *buf, bool omit_lead
315323

316324
uint16_t get_dynamic_ip_port()
317325
{
318-
static uint16_t port;
319-
port++;
320-
if (port < 49152) {
321-
port = 49152;
326+
static uint16_t port_counter = RANDOM_PORT_NUMBER_COUNT;
327+
328+
if (port_counter == RANDOM_PORT_NUMBER_COUNT) {
329+
randLIB_seed_random();
330+
port_counter = randLIB_get_random_in_range(0, RANDOM_PORT_NUMBER_COUNT - 1);
331+
}
332+
333+
port_counter += randLIB_get_random_in_range(1, RANDOM_PORT_NUMBER_MAX_STEP);
334+
if (port_counter >= RANDOM_PORT_NUMBER_COUNT) {
335+
port_counter -= RANDOM_PORT_NUMBER_COUNT;
322336
}
323-
return port;
337+
338+
return (RANDOM_PORT_NUMBER_START + port_counter);
324339
}
325340

326341
} // namespace mbed_cellular_util

0 commit comments

Comments
 (0)