Cargo Features

[dependencies]
smoltcp = { version = "0.12.0", default-features = false, features = ["std", "alloc", "verbose", "defmt", "medium-ethernet", "medium-ip", "medium-ieee802154", "phy-raw_socket", "phy-tuntap_interface", "proto-ipv4", "proto-ipv4-fragmentation", "proto-dhcpv4", "proto-ipv6", "proto-ipv6-hbh", "proto-ipv6-fragmentation", "proto-ipv6-routing", "proto-rpl", "proto-sixlowpan", "proto-sixlowpan-fragmentation", "proto-dns", "proto-ipsec", "proto-ipsec-esp", "multicast", "socket", "socket-raw", "socket-udp", "socket-tcp", "socket-icmp", "socket-dhcpv4", "socket-dns", "socket-mdns", "socket-tcp-cubic", "socket-tcp-reno", "packetmeta-id", "async", "iface-max-addr-count-1", "iface-max-addr-count-2", "iface-max-addr-count-5", "iface-max-addr-count-8", "iface-max-multicast-group-count-2", "iface-max-multicast-group-count-3", "iface-max-multicast-group-count-4", "iface-max-multicast-group-count-6", "iface-max-multicast-group-count-8", "iface-max-multicast-group-count-32", "iface-max-multicast-group-count-128", "iface-max-multicast-group-count-512", "iface-max-multicast-group-count-1024", "iface-max-sixlowpan-address-context-count-1", "iface-max-sixlowpan-address-context-count-2", "iface-max-sixlowpan-address-context-count-3", "iface-max-sixlowpan-address-context-count-4", "iface-max-sixlowpan-address-context-count-5", "iface-max-sixlowpan-address-context-count-6", "iface-max-sixlowpan-address-context-count-7", "iface-max-sixlowpan-address-context-count-8", "iface-max-sixlowpan-address-context-count-16", "iface-max-sixlowpan-address-context-count-32", "iface-max-sixlowpan-address-context-count-64", "iface-max-sixlowpan-address-context-count-128", "iface-max-sixlowpan-address-context-count-256", "iface-max-sixlowpan-address-context-count-512", "iface-neighbor-cache-count-1", "iface-neighbor-cache-count-3", "iface-neighbor-cache-count-5", "iface-neighbor-cache-count-7", "iface-neighbor-cache-count-8", "iface-neighbor-cache-count-32", "iface-neighbor-cache-count-128", "iface-neighbor-cache-count-512", "iface-max-route-count-1", "iface-max-route-count-2", "iface-max-route-count-5", "iface-max-route-count-8", "iface-max-route-count-32", "iface-max-route-count-128", "iface-max-route-count-512", "fragmentation-buffer-size-256", "fragmentation-buffer-size-1024", "fragmentation-buffer-size-1500", "fragmentation-buffer-size-4096", "fragmentation-buffer-size-16384", "fragmentation-buffer-size-65536", "assembler-max-segment-count-2", "assembler-max-segment-count-3", "assembler-max-segment-count-4", "assembler-max-segment-count-16", "reassembly-buffer-size-256", "reassembly-buffer-size-1024", "reassembly-buffer-size-1500", "reassembly-buffer-size-4096", "reassembly-buffer-size-16384", "reassembly-buffer-size-65536", "reassembly-buffer-count-1", "reassembly-buffer-count-3", "reassembly-buffer-count-8", "reassembly-buffer-count-32", "ipv6-hbh-max-options-3", "ipv6-hbh-max-options-4", "ipv6-hbh-max-options-32", "dns-max-result-count-1", "dns-max-result-count-4", "dns-max-result-count-32", "dns-max-server-count-1", "dns-max-server-count-4", "dns-max-server-count-32", "dns-max-name-size-128", "dns-max-name-size-255", "rpl-relations-buffer-count-2", "rpl-relations-buffer-count-8", "rpl-relations-buffer-count-16", "rpl-relations-buffer-count-64", "rpl-parents-buffer-count-2", "rpl-parents-buffer-count-4", "rpl-parents-buffer-count-8", "rpl-parents-buffer-count-32", "log"] }
std default phy-raw_socket phy-tuntap_interface = alloc

Enables std of managed

alloc std

Enables alloc of optional defmt and managed

verbose
defmt

Enables defmt and defmt-03 of heapless

heapless:

Implement defmt::Format from defmt v0.3

medium-ethernet default phy-tuntap_interface socket-dhcpv4 = socket

Affects wire::RawHardwareAddress, smoltcp::iface, wire::HardwareAddress

medium-ip default = socket

Affects smoltcp::iface, wire::HardwareAddress

medium-ieee802154 default = proto-sixlowpan, socket

Affects interface::Config.pan_id, wire::ieee802154, wire::MAX_HARDWARE_ADDRESS_LEN, wire::RawHardwareAddress, smoltcp::iface, wire::HardwareAddress

phy-raw_socket default = libc, std

Affects sys::bpf, sys::raw_socket

phy-tuntap_interface default = libc, medium-ethernet, std

Affects sys::tuntap_interface

proto-ipv4 default proto-dhcpv4 proto-ipv4-fragmentation

Affects phy::ChecksumCapabilities.icmpv4, ip::checksum.pseudo_header_v4

proto-ipv4-fragmentation default = proto-ipv4
proto-dhcpv4 default socket-dhcpv4 = proto-ipv4
proto-ipv6 default proto-ipv6-fragmentation? proto-ipv6-hbh? proto-ipv6-routing? proto-sixlowpan?

Affects phy::ChecksumCapabilities.icmpv6, ip::checksum.pseudo_header_v6

proto-ipv6-hbh proto-rpl? = proto-ipv6
proto-ipv6-fragmentation = proto-ipv6
proto-ipv6-routing proto-rpl? = proto-ipv6
proto-rpl = proto-ipv6-hbh, proto-ipv6-routing
proto-sixlowpan medium-ieee802154 proto-sixlowpan-fragmentation = proto-ipv6
proto-sixlowpan-fragmentation default = proto-sixlowpan
proto-dns default socket-dns
proto-ipsec = proto-ipsec-ah, proto-ipsec-esp
proto-ipsec-ah proto-ipsec-esp proto-ipsec?
multicast default
socket medium-ethernet medium-ieee802154 medium-ip socket-dhcpv4 socket-dns socket-icmp socket-raw socket-tcp socket-udp

Affects smoltcp::socket

socket-raw default = socket

Affects socket::raw

socket-udp default = socket

Affects socket::udp

socket-tcp default = socket

Affects socket::tcp

socket-icmp default = socket

Affects socket::icmp

socket-dhcpv4 default = medium-ethernet, proto-dhcpv4, socket

Affects socket::dhcpv4

socket-dns default socket-mdns = proto-dns, socket

Affects socket::dns

socket-mdns default = socket-dns
socket-tcp-cubic

Enable Cubic TCP congestion control algorithm, and it is used as a default congestion controller.

Cubic relies on double precision (f64) floating point operations, which may cause issues in some contexts:

  • Small embedded processors (such as Cortex-M0, Cortex-M1, and Cortex-M3) do not have an FPU, and floating point operations consume significant amounts of CPU time and Flash space.
  • Interrupt handlers should almost always avoid floating-point operations.
  • Kernel-mode code on desktop processors usually avoids FPU operations to reduce the penalty of saving and restoring FPU registers.

In all these cases, CongestionControl::Reno is a better choice of congestion control algorithm.

socket-tcp-reno

Enable Reno TCP congestion control algorithm, and it is used as a default congestion controller.

default = async, log, medium-ethernet, medium-ieee802154, medium-ip, multicast, packetmeta-id, phy-raw_socket, phy-tuntap_interface, proto-dhcpv4, proto-dns, proto-ipv4, proto-ipv4-fragmentation, proto-ipv6, proto-sixlowpan-fragmentation, socket-dhcpv4, socket-dns, socket-icmp, socket-mdns, socket-raw, socket-tcp, socket-udp, std

These default features are set whenever smoltcp is added without default-features = false somewhere in the dependency tree.

packetmeta-id default

Affects phy::PacketMeta.id

async default
iface-max-addr-count-1

BEGIN AUTOGENERATED CONFIG FEATURES
Generated by gen_config.py. DO NOT EDIT.

iface-max-addr-count-2

Default

iface-max-addr-count-3 iface-max-addr-count-4 iface-max-addr-count-5
iface-max-addr-count-6 iface-max-addr-count-7 iface-max-addr-count-8
iface-max-multicast-group-count-1 iface-max-multicast-group-count-2
iface-max-multicast-group-count-3
iface-max-multicast-group-count-4

Default

iface-max-multicast-group-count-5 iface-max-multicast-group-count-6
iface-max-multicast-group-count-7 iface-max-multicast-group-count-8
iface-max-multicast-group-count-16 iface-max-multicast-group-count-32
iface-max-multicast-group-count-64 iface-max-multicast-group-count-128
iface-max-multicast-group-count-256 iface-max-multicast-group-count-512
iface-max-multicast-group-count-1024
iface-max-sixlowpan-address-context-count-1
iface-max-sixlowpan-address-context-count-2
iface-max-sixlowpan-address-context-count-3
iface-max-sixlowpan-address-context-count-4

Default

iface-max-sixlowpan-address-context-count-5
iface-max-sixlowpan-address-context-count-6
iface-max-sixlowpan-address-context-count-7
iface-max-sixlowpan-address-context-count-8
iface-max-sixlowpan-address-context-count-16
iface-max-sixlowpan-address-context-count-32
iface-max-sixlowpan-address-context-count-64
iface-max-sixlowpan-address-context-count-128
iface-max-sixlowpan-address-context-count-256
iface-max-sixlowpan-address-context-count-512
iface-max-sixlowpan-address-context-count-1024 iface-neighbor-cache-count-1
iface-neighbor-cache-count-2 iface-neighbor-cache-count-3
iface-neighbor-cache-count-4 iface-neighbor-cache-count-5
iface-neighbor-cache-count-6 iface-neighbor-cache-count-7
iface-neighbor-cache-count-8

Default

iface-neighbor-cache-count-16 iface-neighbor-cache-count-32
iface-neighbor-cache-count-64 iface-neighbor-cache-count-128
iface-neighbor-cache-count-256 iface-neighbor-cache-count-512
iface-neighbor-cache-count-1024 iface-max-route-count-1
iface-max-route-count-2

Default

iface-max-route-count-3 iface-max-route-count-4 iface-max-route-count-5
iface-max-route-count-6 iface-max-route-count-7 iface-max-route-count-8
iface-max-route-count-16 iface-max-route-count-32
iface-max-route-count-64 iface-max-route-count-128
iface-max-route-count-256 iface-max-route-count-512
iface-max-route-count-1024 fragmentation-buffer-size-256
fragmentation-buffer-size-512 fragmentation-buffer-size-1024
fragmentation-buffer-size-1500

Default

fragmentation-buffer-size-2048 fragmentation-buffer-size-4096
fragmentation-buffer-size-8192 fragmentation-buffer-size-16384
fragmentation-buffer-size-32768 fragmentation-buffer-size-65536
assembler-max-segment-count-1 assembler-max-segment-count-2
assembler-max-segment-count-3
assembler-max-segment-count-4

Default

assembler-max-segment-count-8 assembler-max-segment-count-16
assembler-max-segment-count-32 reassembly-buffer-size-256
reassembly-buffer-size-512 reassembly-buffer-size-1024
reassembly-buffer-size-1500

Default

reassembly-buffer-size-2048 reassembly-buffer-size-4096
reassembly-buffer-size-8192 reassembly-buffer-size-16384
reassembly-buffer-size-32768 reassembly-buffer-size-65536
reassembly-buffer-count-1

Default

reassembly-buffer-count-2 reassembly-buffer-count-3
reassembly-buffer-count-4 reassembly-buffer-count-8
reassembly-buffer-count-16 reassembly-buffer-count-32
ipv6-hbh-max-options-1 ipv6-hbh-max-options-2 ipv6-hbh-max-options-3
ipv6-hbh-max-options-4

Default

ipv6-hbh-max-options-8 ipv6-hbh-max-options-16 ipv6-hbh-max-options-32
dns-max-result-count-1

Default

dns-max-result-count-2 dns-max-result-count-3 dns-max-result-count-4
dns-max-result-count-8 dns-max-result-count-16 dns-max-result-count-32
dns-max-server-count-1

Default

dns-max-server-count-2 dns-max-server-count-3 dns-max-server-count-4
dns-max-server-count-8 dns-max-server-count-16 dns-max-server-count-32
dns-max-name-size-64 dns-max-name-size-128
dns-max-name-size-255

Default

rpl-relations-buffer-count-1 rpl-relations-buffer-count-2
rpl-relations-buffer-count-4 rpl-relations-buffer-count-8
rpl-relations-buffer-count-16

Default

rpl-relations-buffer-count-32 rpl-relations-buffer-count-64
rpl-relations-buffer-count-128 rpl-parents-buffer-count-2
rpl-parents-buffer-count-4
rpl-parents-buffer-count-8

Default

rpl-parents-buffer-count-16 rpl-parents-buffer-count-32

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

log default
libc phy-raw_socket phy-tuntap_interface