kopia lustrzana https://github.com/micropython/micropython
extmod/network_lwip.c: Allow using the CIDR notation for addr4.
There was a little omisssion in the code. Signed-off-by: robert-hh <robert@hammelrath.com>pull/14199/head
rodzic
29bdcc3ff5
commit
329ecf9130
|
@ -297,20 +297,23 @@ mp_obj_t mod_network_nic_ipconfig(struct netif *netif, size_t n_args, const mp_o
|
|||
char plain_ip[IPADDR_STRLEN_MAX];
|
||||
char *split = strchr(input_str, '/');
|
||||
const char *addr_str = input_str;
|
||||
int to_copy = MIN(sizeof(plain_ip) - 1, addr_len);
|
||||
memcpy(plain_ip, addr_str, to_copy);
|
||||
if (split) {
|
||||
int to_copy = sizeof(plain_ip) - 1;
|
||||
if (split - addr_str < to_copy) {
|
||||
to_copy = split - addr_str;
|
||||
}
|
||||
memcpy(plain_ip, addr_str, to_copy);
|
||||
mp_obj_t prefix_obj = mp_parse_num_integer(split + 1, strlen(split + 1), 10, NULL);
|
||||
prefix_bits = mp_obj_get_int(prefix_obj);
|
||||
if (mp_obj_str_get_qstr(args[0]) == MP_QSTR_addr4) {
|
||||
uint32_t mask = -(1u << (32 - prefix_bits));
|
||||
ip_addr_set_ip4_u32_val(netmask, ((mask & 0xFF) << 24) | ((mask & 0xFF00) << 8) | ((mask >> 8) & 0xFF00) | ((mask >> 24) & 0xFF));
|
||||
}
|
||||
} else {
|
||||
netmask = netif->netmask;
|
||||
}
|
||||
if (mp_obj_str_get_qstr(args[0]) == MP_QSTR_addr4) {
|
||||
uint32_t mask = -(1u << (32 - prefix_bits));
|
||||
ip_addr_set_ip4_u32_val(netmask, ((mask & 0xFF) << 24) | ((mask & 0xFF00) << 8) | ((mask >> 8) & 0xFF00) | ((mask >> 24) & 0xFF));
|
||||
}
|
||||
if (!ipaddr_aton(addr_str, &ip_addr)) {
|
||||
plain_ip[to_copy] = '\0';
|
||||
if (!ipaddr_aton(plain_ip, &ip_addr)) {
|
||||
mp_raise_ValueError(MP_ERROR_TEXT("invalid arguments"));
|
||||
}
|
||||
if ((mp_obj_str_get_qstr(args[0]) == MP_QSTR_addr6) != IP_IS_V6(&ip_addr)
|
||||
|
|
Ładowanie…
Reference in New Issue