extmod/modnetwork: Forward if.config(hostname) to network.hostname.

This removes the duplicate code in cyw43, esp32, esp8266 that implements
the same logic as network.hostname.

Renames the `mod_network_hostname` (where we store the hostname value in
`.data`) to `mod_network_hostname_data` to make way for calling the shared
function `mod_network_hostname`.

And uses memcpy for mod_network_hostname_data, because the length of source
is already known and removes reliance on string data being null-terminated.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
Jim Mussared
2023-10-03 13:32:48 +11:00
committed by Damien George
parent b329fdcb73
commit 65a3ce39a3
10 changed files with 28 additions and 37 deletions

View File

@@ -61,7 +61,12 @@ extern char mod_network_country_code[2];
#endif
// This is a null-terminated string.
extern char mod_network_hostname[MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN + 1];
extern char mod_network_hostname_data[MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN + 1];
// To support backwards-compatible (esp32, esp8266, cyw43)
// `if.config(hostname=...)` to forward directly to the implementation of
// `network.hostname(...)`.
mp_obj_t mod_network_hostname(size_t n_args, const mp_obj_t *args);
#if MICROPY_PY_LWIP
struct netif;