Skip to content

Commit 34bee59

Browse files
committed
espressif: actually disable v6 support on select boards
1 parent 841850e commit 34bee59

File tree

6 files changed

+32
-15
lines changed

6 files changed

+32
-15
lines changed

ports/espressif/boards/lolin_c3_pico/sdkconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#
88
# LWIP
99
#
10+
# CONFIG_LWIP_IPV6 is not set
1011
CONFIG_LWIP_LOCAL_HOSTNAME="lolin-c3-pico"
1112
# end of LWIP
1213

ports/espressif/boards/waveshare_esp32_s3_tiny/sdkconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#
88
# LWIP
99
#
10+
# CONFIG_LWIP_IPV6 is not set
1011
CONFIG_LWIP_LOCAL_HOSTNAME="waveshare-esp32-s3-tiny"
1112
# end of LWIP
1213

ports/espressif/common-hal/socketpool/Socket.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ static bool _socketpool_socket(socketpool_socketpool_obj_t *self,
195195
if (family == SOCKETPOOL_AF_INET) {
196196
addr_family = AF_INET;
197197
ipproto = IPPROTO_IP;
198-
#if LWIP_IPV6
198+
#if CIRCUITPY_SOCKETPOOL_IPV6
199199
} else { // INET6
200200
addr_family = AF_INET6;
201201
ipproto = IPPROTO_IPV6;
@@ -345,14 +345,14 @@ socketpool_socket_obj_t *common_hal_socketpool_socket_accept(socketpool_socket_o
345345
}
346346
}
347347

348-
// TODO: ipv6
349348
size_t common_hal_socketpool_socket_bind(socketpool_socket_obj_t *self,
350349
const char *host, size_t hostlen, uint32_t port) {
351350
struct sockaddr_storage bind_addr;
352351
const char *broadcast = "<broadcast>";
353352

354353
bind_addr.ss_family = self->family;
355354

355+
#if CIRCUITPY_SOCKETPOOL_IPV6
356356
if (self->family == AF_INET6) {
357357
struct sockaddr_in6 *addr6 = (void *)&bind_addr;
358358
addr6->sin6_port = htons(port);
@@ -362,7 +362,9 @@ size_t common_hal_socketpool_socket_bind(socketpool_socket_obj_t *self,
362362
} else {
363363
socketpool_resolve_host_or_throw(self->family, self->type, host, &bind_addr, port);
364364
}
365-
} else {
365+
} else
366+
#endif
367+
{
366368
struct sockaddr_in *addr4 = (void *)&bind_addr;
367369
addr4->sin_port = htons(port);
368370
if (hostlen == 0) {

ports/espressif/common-hal/wifi/Radio.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,14 +461,20 @@ static mp_obj_t common_hal_wifi_radio_get_addresses_netif(wifi_radio_obj_t *self
461461
esp_netif_get_ip_info(netif, &ip_info);
462462
int n_addresses4 = ip_info.ip.addr != INADDR_NONE;
463463

464+
#if CIRCUITPY_SOCKETPOOL_IPV6
464465
esp_ip6_addr_t addresses[LWIP_IPV6_NUM_ADDRESSES];
465466
int n_addresses6 = esp_netif_get_all_ip6(netif, &addresses[0]);
467+
#else
468+
int n_addresses6 = 0;
469+
#endif
466470
int n_addresses = n_addresses4 + n_addresses6;
467-
468471
mp_obj_tuple_t *result = MP_OBJ_TO_PTR(mp_obj_new_tuple(n_addresses, NULL));
472+
473+
#if CIRCUITPY_SOCKETPOOL_IPV6
469474
for (int i = 0; i < n_addresses6; i++) {
470475
result->items[i] = espaddr6_to_str(&addresses[i]);
471476
}
477+
#endif
472478

473479
if (n_addresses4) {
474480
result->items[n_addresses6] = espaddr4_to_str(&ip_info.ip);

ports/espressif/common-hal/wifi/__init__.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,9 @@ void wifi_reset(void) {
241241
void ipaddress_ipaddress_to_esp_idf(mp_obj_t ip_address, ip_addr_t *esp_ip_address) {
242242
if (mp_obj_is_type(ip_address, &ipaddress_ipv4address_type)) {
243243
ipaddress_ipaddress_to_esp_idf_ip4(ip_address, (esp_ip4_addr_t *)esp_ip_address);
244+
#if LWIP_IPV6
244245
esp_ip_address->type = IPADDR_TYPE_V4;
246+
#endif
245247
} else {
246248
struct sockaddr_storage addr_storage;
247249
socketpool_resolve_host_or_throw(AF_UNSPEC, SOCK_STREAM, mp_obj_str_get_str(ip_address), &addr_storage, 1);
@@ -283,10 +285,13 @@ mp_obj_t espaddr6_to_str(const esp_ip6_addr_t *espaddr) {
283285

284286
mp_obj_t sockaddr_to_str(const struct sockaddr_storage *sockaddr) {
285287
char buf[IPADDR_STRLEN_MAX];
288+
#if CIRCUITPY_SOCKETPOOL_IPV6
286289
if (sockaddr->ss_family == AF_INET6) {
287290
const struct sockaddr_in6 *addr6 = (const void *)sockaddr;
288291
inet_ntop(AF_INET6, &addr6->sin6_addr, buf, sizeof(buf));
289-
} else {
292+
} else
293+
#endif
294+
{
290295
const struct sockaddr_in *addr = (const void *)sockaddr;
291296
inet_ntop(AF_INET, &addr->sin_addr, buf, sizeof(buf));
292297
}
@@ -298,20 +303,24 @@ mp_obj_t sockaddr_to_tuple(const struct sockaddr_storage *sockaddr) {
298303
sockaddr_to_str(sockaddr),
299304
};
300305
int n = 2;
306+
#if CIRCUITPY_SOCKETPOOL_IPV6
301307
if (sockaddr->ss_family == AF_INET6) {
302308
const struct sockaddr_in6 *addr6 = (const void *)sockaddr;
303309
args[1] = MP_OBJ_NEW_SMALL_INT(htons(addr6->sin6_port));
304310
args[2] = MP_OBJ_NEW_SMALL_INT(addr6->sin6_flowinfo);
305311
args[3] = MP_OBJ_NEW_SMALL_INT(addr6->sin6_scope_id);
306312
n = 4;
307-
} else {
313+
} else
314+
#endif
315+
{
308316
const struct sockaddr_in *addr = (const void *)sockaddr;
309317
args[1] = MP_OBJ_NEW_SMALL_INT(htons(addr->sin_port));
310318
}
311319
return mp_obj_new_tuple(n, args);
312320
}
313321

314322
void sockaddr_to_espaddr(const struct sockaddr_storage *sockaddr, esp_ip_addr_t *espaddr) {
323+
#if CIRCUITPY_SOCKETPOOL_IPV6
315324
MP_STATIC_ASSERT(IPADDR_TYPE_V4 == ESP_IPADDR_TYPE_V4);
316325
MP_STATIC_ASSERT(IPADDR_TYPE_V6 == ESP_IPADDR_TYPE_V6);
317326
MP_STATIC_ASSERT(sizeof(ip_addr_t) == sizeof(esp_ip_addr_t));
@@ -323,7 +332,9 @@ void sockaddr_to_espaddr(const struct sockaddr_storage *sockaddr, esp_ip_addr_t
323332
memcpy(&espaddr->u_addr.ip6.addr, &addr6->sin6_addr, sizeof(espaddr->u_addr.ip6.addr));
324333
espaddr->u_addr.ip6.zone = addr6->sin6_scope_id;
325334
espaddr->type = ESP_IPADDR_TYPE_V6;
326-
} else {
335+
} else
336+
#endif
337+
{
327338
const struct sockaddr_in *addr = (const void *)sockaddr;
328339
MP_STATIC_ASSERT(sizeof(espaddr->u_addr.ip4.addr) == sizeof(addr->sin_addr));
329340
memcpy(&espaddr->u_addr.ip4.addr, &addr->sin_addr, sizeof(espaddr->u_addr.ip4.addr));
@@ -332,11 +343,14 @@ void sockaddr_to_espaddr(const struct sockaddr_storage *sockaddr, esp_ip_addr_t
332343
}
333344

334345
void espaddr_to_sockaddr(const esp_ip_addr_t *espaddr, struct sockaddr_storage *sockaddr, int port) {
346+
#if CIRCUITPY_SOCKETPOOL_IPV6
335347
if (espaddr->type == ESP_IPADDR_TYPE_V6) {
336348
struct sockaddr_in6 *addr6 = (void *)sockaddr;
337349
memcpy(&addr6->sin6_addr, &espaddr->u_addr.ip6.addr, sizeof(espaddr->u_addr.ip6.addr));
338350
addr6->sin6_scope_id = espaddr->u_addr.ip6.zone;
339-
} else {
351+
} else
352+
#endif
353+
{
340354
struct sockaddr_in *addr = (void *)sockaddr;
341355
memcpy(&addr->sin_addr, &espaddr->u_addr.ip4.addr, sizeof(espaddr->u_addr.ip4.addr));
342356
}

shared-bindings/wifi/Radio.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -616,13 +616,6 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_addresses_ap_obj, _wifi_radio_get_addre
616616
MP_PROPERTY_GETTER(wifi_radio_addresses_ap_obj,
617617
(mp_obj_t)&wifi_radio_get_addresses_ap_obj);
618618

619-
620-
#if 0
621-
MP_WEAK mp_obj_t common_hal_wifi_radio_get_addresses(wifi_radio_obj_t *self) {
622-
return mp_const_none;
623-
}
624-
#endif
625-
626619
//| ipv4_address: Optional[ipaddress.IPv4Address]
627620
//| """IP v4 Address of the station when connected to an access point. None otherwise. (read-only)"""
628621
static mp_obj_t _wifi_radio_get_ipv4_address(mp_obj_t self) {

0 commit comments

Comments
 (0)