micropython/extmod
Felix Dörre 1c6012b0b5 extmod/modnetwork: Implement IPv6 API to set and get NIC configuration.
This commit implements a new <AbstractNIC>.ipconfig() function for the NIC
classes that use lwIP, to set and retrieve network configuration for a NIC.
Currently this method supports:
- ipconfig("addr4"): obtain a tuple (addr, netmask) of the currently
  configured ipv4 address
- ipconfig("addr6"): obtain a list of tuples (addr, state,
  prefered_lifetime, valid_lifetime) of all currently active ipv6
  addresses; this includes static, slaac and link-local addresses
- ipconfig("has_dhcp4"): whether ipv4 dhcp has supplied an address
- ipconfig("has_autoconf6"): if there is a valid, non-static ipv6 address
- ipconfig(addr4="1.2.3.4/24"): to set the ipv4 address and netmask
- ipconfig(addr6="2a01::2"): to set a static ipv6 address; note that this
  does not configure an interface route, as this does not seem supported by
  lwIP
- ipconfig(autoconf6=True): to enable ipv6 network configuration with slaac
- ipconfig(gw4="1.2.3.1"): to set the ipv4 gateway
- ipconfig(dhcp4=True): enable ipv4 dhcp; this sets ipv4 address, netmask,
  gateway and a dns server
- ipconfig(dhcp4=False): stops dhcp, releases the ip, and clears the
  configured ipv4 address.
- ipconfig(dhcp6=True): enable stateless dhcpv6 to obtain a dns server

There is also a new global configuration function network.ipconfig() that
supports the following:
- network.ipconfig(dns="2a01::2"): set the primary dns server (can be a
  ipv4 or ipv6 address)
- network.ipconfig(prefer=6): to prefer ipv6 addresses to be returned as
  dns responses (falling back to ipv4 if the host does not have an ipv6
  address); note that this does not flush the dns cache, so if a host is
  already in the dns cache with its v4 address, subsequent lookups will
  return that address even if prefer=6 is set

This interface replaces NIC.ifconfig() completely, and ifconfig() should be
marked as deprecated and removed in a future version.

Signed-off-by: Felix Dörre <felix@dogcraft.de>
2024-03-19 16:42:10 +11:00
..
asyncio
axtls-include
berkeley-db all: Update extmod, ports, examples to build with new berkeley-db lib. 2024-03-16 12:19:12 +11:00
btstack
libmetal extmod/libmetal: Add MicroPython platform for libmetal. 2024-03-15 18:11:28 +11:00
lwip-include
mbedtls
nimble extmod/nimble: Check for active before setting address mode. 2024-03-15 12:59:58 +11:00
extmod.cmake all: Update extmod, ports, examples to build with new berkeley-db lib. 2024-03-16 12:19:12 +11:00
extmod.mk all: Update extmod, ports, examples to build with new berkeley-db lib. 2024-03-16 12:19:12 +11:00
font_petme128_8x8.h
machine_adc.c
machine_adc_block.c
machine_bitstream.c
machine_i2c.c
machine_i2s.c
machine_mem.c
machine_pinbase.c
machine_pulse.c
machine_pwm.c
machine_signal.c
machine_spi.c
machine_timer.c
machine_uart.c
machine_usb_device.c extmod/machine_usb_device: Add support for Python USB devices. 2024-03-15 14:22:11 +11:00
machine_wdt.c
misc.h
modasyncio.c
modbinascii.c
modbluetooth.c
modbluetooth.h
modbtree.c all: Update extmod, ports, examples to build with new berkeley-db lib. 2024-03-16 12:19:12 +11:00
modcryptolib.c
moddeflate.c
modframebuf.c
modhashlib.c
modheapq.c
modjson.c
modlwip.c extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
modmachine.c extmod/machine_usb_device: Add support for Python USB devices. 2024-03-15 14:22:11 +11:00
modmachine.h extmod/machine_usb_device: Add support for Python USB devices. 2024-03-15 14:22:11 +11:00
modnetwork.c extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
modnetwork.h extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
modonewire.c
modopenamp.c extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modopenamp.h extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modopenamp_remoteproc.c extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modopenamp_remoteproc.h extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modopenamp_remoteproc_store.c extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modos.c
modplatform.c
modplatform.h
modrandom.c
modre.c
modselect.c
modsocket.c
modtime.c
modtime.h
modtls_axtls.c
modtls_mbedtls.c
moductypes.c
modvfs.c
modwebrepl.c
modwebsocket.c
modwebsocket.h
mpbthci.c
mpbthci.h
network_cyw43.c extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
network_cyw43.h
network_esp_hosted.c extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
network_lwip.c extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
network_ninaw10.c
network_wiznet5k.c extmod/modnetwork: Implement IPv6 API to set and get NIC configuration. 2024-03-19 16:42:10 +11:00
os_dupterm.c extmod/os_dupterm: Handle exception properly when it occurs in parallel. 2024-03-16 10:59:03 +11:00
vfs.c
vfs.h
vfs_blockdev.c
vfs_fat.c
vfs_fat.h
vfs_fat_diskio.c
vfs_fat_file.c
vfs_lfs.c
vfs_lfs.h
vfs_lfsx.c
vfs_lfsx_file.c
vfs_posix.c
vfs_posix.h
vfs_posix_file.c
vfs_reader.c
virtpin.c
virtpin.h