Cargo.toml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. [package]
  2. name = "smoltcp"
  3. version = "0.11.0"
  4. edition = "2021"
  5. rust-version = "1.80"
  6. authors = ["whitequark <[email protected]>"]
  7. description = "A TCP/IP stack designed for bare-metal, real-time systems without a heap."
  8. documentation = "https://docs.rs/smoltcp/"
  9. homepage = "https://github.com/smoltcp-rs/smoltcp"
  10. repository = "https://github.com/smoltcp-rs/smoltcp.git"
  11. readme = "README.md"
  12. keywords = ["ip", "tcp", "udp", "ethernet", "network"]
  13. categories = ["embedded", "network-programming"]
  14. license = "0BSD"
  15. # Each example should have an explicit `[[example]]` section here to
  16. # ensure that the correct features are enabled.
  17. autoexamples = false
  18. [lints.rust]
  19. unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
  20. [dependencies]
  21. managed = { version = "0.8", default-features = false, features = ["map"] }
  22. byteorder = { version = "1.0", default-features = false }
  23. log = { version = "0.4.4", default-features = false, optional = true }
  24. libc = { version = "0.2.18", optional = true }
  25. bitflags = { version = "1.0", default-features = false }
  26. defmt = { version = "0.3.8", optional = true, features = ["ip_in_core"] }
  27. cfg-if = "1.0.0"
  28. heapless = "0.8"
  29. [dev-dependencies]
  30. env_logger = "0.10"
  31. getopts = "0.2"
  32. rand = "0.8"
  33. url = "2.0"
  34. rstest = "0.17"
  35. [features]
  36. std = ["managed/std", "alloc"]
  37. alloc = ["managed/alloc", "defmt?/alloc"]
  38. verbose = []
  39. defmt = ["dep:defmt", "heapless/defmt-03"]
  40. "medium-ethernet" = ["socket"]
  41. "medium-ip" = ["socket"]
  42. "medium-ieee802154" = ["socket", "proto-sixlowpan"]
  43. "phy-raw_socket" = ["std", "libc"]
  44. "phy-tuntap_interface" = ["std", "libc", "medium-ethernet"]
  45. "proto-ipv4" = []
  46. "proto-ipv4-fragmentation" = ["proto-ipv4", "_proto-fragmentation"]
  47. "proto-dhcpv4" = ["proto-ipv4"]
  48. "proto-ipv6" = []
  49. "proto-ipv6-hbh" = ["proto-ipv6"]
  50. "proto-ipv6-fragmentation" = ["proto-ipv6", "_proto-fragmentation"]
  51. "proto-ipv6-routing" = ["proto-ipv6"]
  52. "proto-rpl" = ["proto-ipv6-hbh", "proto-ipv6-routing"]
  53. "proto-sixlowpan" = ["proto-ipv6"]
  54. "proto-sixlowpan-fragmentation" = ["proto-sixlowpan", "_proto-fragmentation"]
  55. "proto-dns" = []
  56. "proto-ipsec" = ["proto-ipsec-ah", "proto-ipsec-esp"]
  57. "proto-ipsec-ah" = []
  58. "proto-ipsec-esp" = []
  59. "multicast" = []
  60. "socket" = []
  61. "socket-raw" = ["socket"]
  62. "socket-udp" = ["socket"]
  63. "socket-tcp" = ["socket"]
  64. "socket-icmp" = ["socket"]
  65. "socket-dhcpv4" = ["socket", "medium-ethernet", "proto-dhcpv4"]
  66. "socket-dns" = ["socket", "proto-dns"]
  67. "socket-mdns" = ["socket-dns"]
  68. # Enable Cubic TCP congestion control algorithm, and it is used as a default congestion controller.
  69. #
  70. # Cubic relies on double precision (`f64`) floating point operations, which may cause issues in some contexts:
  71. #
  72. # * Small embedded processors (such as Cortex-M0, Cortex-M1, and Cortex-M3) do not have an FPU,
  73. # and floating point operations consume significant amounts of CPU time and Flash space.
  74. # * Interrupt handlers should almost always avoid floating-point operations.
  75. # * Kernel-mode code on desktop processors usually avoids FPU operations to reduce the penalty of saving and restoring FPU registers.
  76. #
  77. # In all these cases, `CongestionControl::Reno` is a better choice of congestion control algorithm.
  78. "socket-tcp-cubic" = []
  79. # Enable Reno TCP congestion control algorithm, and it is used as a default congestion controller.
  80. "socket-tcp-reno" = []
  81. "packetmeta-id" = []
  82. "async" = []
  83. default = [
  84. "std", "log", # needed for `cargo test --no-default-features --features default` :/
  85. "medium-ethernet", "medium-ip", "medium-ieee802154",
  86. "phy-raw_socket", "phy-tuntap_interface",
  87. "proto-ipv4", "proto-dhcpv4", "proto-ipv6", "proto-dns",
  88. "proto-ipv4-fragmentation", "proto-sixlowpan-fragmentation",
  89. "socket-raw", "socket-icmp", "socket-udp", "socket-tcp", "socket-dhcpv4", "socket-dns", "socket-mdns",
  90. "packetmeta-id", "async", "multicast"
  91. ]
  92. # Private features
  93. # Features starting with "_" are considered private. They should not be enabled by
  94. # other crates, and they are not considered semver-stable.
  95. "_proto-fragmentation" = []
  96. # BEGIN AUTOGENERATED CONFIG FEATURES
  97. # Generated by gen_config.py. DO NOT EDIT.
  98. iface-max-addr-count-1 = []
  99. iface-max-addr-count-2 = [] # Default
  100. iface-max-addr-count-3 = []
  101. iface-max-addr-count-4 = []
  102. iface-max-addr-count-5 = []
  103. iface-max-addr-count-6 = []
  104. iface-max-addr-count-7 = []
  105. iface-max-addr-count-8 = []
  106. iface-max-multicast-group-count-1 = []
  107. iface-max-multicast-group-count-2 = []
  108. iface-max-multicast-group-count-3 = []
  109. iface-max-multicast-group-count-4 = [] # Default
  110. iface-max-multicast-group-count-5 = []
  111. iface-max-multicast-group-count-6 = []
  112. iface-max-multicast-group-count-7 = []
  113. iface-max-multicast-group-count-8 = []
  114. iface-max-multicast-group-count-16 = []
  115. iface-max-multicast-group-count-32 = []
  116. iface-max-multicast-group-count-64 = []
  117. iface-max-multicast-group-count-128 = []
  118. iface-max-multicast-group-count-256 = []
  119. iface-max-multicast-group-count-512 = []
  120. iface-max-multicast-group-count-1024 = []
  121. iface-max-sixlowpan-address-context-count-1 = []
  122. iface-max-sixlowpan-address-context-count-2 = []
  123. iface-max-sixlowpan-address-context-count-3 = []
  124. iface-max-sixlowpan-address-context-count-4 = [] # Default
  125. iface-max-sixlowpan-address-context-count-5 = []
  126. iface-max-sixlowpan-address-context-count-6 = []
  127. iface-max-sixlowpan-address-context-count-7 = []
  128. iface-max-sixlowpan-address-context-count-8 = []
  129. iface-max-sixlowpan-address-context-count-16 = []
  130. iface-max-sixlowpan-address-context-count-32 = []
  131. iface-max-sixlowpan-address-context-count-64 = []
  132. iface-max-sixlowpan-address-context-count-128 = []
  133. iface-max-sixlowpan-address-context-count-256 = []
  134. iface-max-sixlowpan-address-context-count-512 = []
  135. iface-max-sixlowpan-address-context-count-1024 = []
  136. iface-neighbor-cache-count-1 = []
  137. iface-neighbor-cache-count-2 = []
  138. iface-neighbor-cache-count-3 = []
  139. iface-neighbor-cache-count-4 = []
  140. iface-neighbor-cache-count-5 = []
  141. iface-neighbor-cache-count-6 = []
  142. iface-neighbor-cache-count-7 = []
  143. iface-neighbor-cache-count-8 = [] # Default
  144. iface-neighbor-cache-count-16 = []
  145. iface-neighbor-cache-count-32 = []
  146. iface-neighbor-cache-count-64 = []
  147. iface-neighbor-cache-count-128 = []
  148. iface-neighbor-cache-count-256 = []
  149. iface-neighbor-cache-count-512 = []
  150. iface-neighbor-cache-count-1024 = []
  151. iface-max-route-count-1 = []
  152. iface-max-route-count-2 = [] # Default
  153. iface-max-route-count-3 = []
  154. iface-max-route-count-4 = []
  155. iface-max-route-count-5 = []
  156. iface-max-route-count-6 = []
  157. iface-max-route-count-7 = []
  158. iface-max-route-count-8 = []
  159. iface-max-route-count-16 = []
  160. iface-max-route-count-32 = []
  161. iface-max-route-count-64 = []
  162. iface-max-route-count-128 = []
  163. iface-max-route-count-256 = []
  164. iface-max-route-count-512 = []
  165. iface-max-route-count-1024 = []
  166. fragmentation-buffer-size-256 = []
  167. fragmentation-buffer-size-512 = []
  168. fragmentation-buffer-size-1024 = []
  169. fragmentation-buffer-size-1500 = [] # Default
  170. fragmentation-buffer-size-2048 = []
  171. fragmentation-buffer-size-4096 = []
  172. fragmentation-buffer-size-8192 = []
  173. fragmentation-buffer-size-16384 = []
  174. fragmentation-buffer-size-32768 = []
  175. fragmentation-buffer-size-65536 = []
  176. assembler-max-segment-count-1 = []
  177. assembler-max-segment-count-2 = []
  178. assembler-max-segment-count-3 = []
  179. assembler-max-segment-count-4 = [] # Default
  180. assembler-max-segment-count-8 = []
  181. assembler-max-segment-count-16 = []
  182. assembler-max-segment-count-32 = []
  183. reassembly-buffer-size-256 = []
  184. reassembly-buffer-size-512 = []
  185. reassembly-buffer-size-1024 = []
  186. reassembly-buffer-size-1500 = [] # Default
  187. reassembly-buffer-size-2048 = []
  188. reassembly-buffer-size-4096 = []
  189. reassembly-buffer-size-8192 = []
  190. reassembly-buffer-size-16384 = []
  191. reassembly-buffer-size-32768 = []
  192. reassembly-buffer-size-65536 = []
  193. reassembly-buffer-count-1 = [] # Default
  194. reassembly-buffer-count-2 = []
  195. reassembly-buffer-count-3 = []
  196. reassembly-buffer-count-4 = []
  197. reassembly-buffer-count-8 = []
  198. reassembly-buffer-count-16 = []
  199. reassembly-buffer-count-32 = []
  200. ipv6-hbh-max-options-1 = []
  201. ipv6-hbh-max-options-2 = []
  202. ipv6-hbh-max-options-3 = []
  203. ipv6-hbh-max-options-4 = [] # Default
  204. ipv6-hbh-max-options-8 = []
  205. ipv6-hbh-max-options-16 = []
  206. ipv6-hbh-max-options-32 = []
  207. dns-max-result-count-1 = [] # Default
  208. dns-max-result-count-2 = []
  209. dns-max-result-count-3 = []
  210. dns-max-result-count-4 = []
  211. dns-max-result-count-8 = []
  212. dns-max-result-count-16 = []
  213. dns-max-result-count-32 = []
  214. dns-max-server-count-1 = [] # Default
  215. dns-max-server-count-2 = []
  216. dns-max-server-count-3 = []
  217. dns-max-server-count-4 = []
  218. dns-max-server-count-8 = []
  219. dns-max-server-count-16 = []
  220. dns-max-server-count-32 = []
  221. dns-max-name-size-64 = []
  222. dns-max-name-size-128 = []
  223. dns-max-name-size-255 = [] # Default
  224. rpl-relations-buffer-count-1 = []
  225. rpl-relations-buffer-count-2 = []
  226. rpl-relations-buffer-count-4 = []
  227. rpl-relations-buffer-count-8 = []
  228. rpl-relations-buffer-count-16 = [] # Default
  229. rpl-relations-buffer-count-32 = []
  230. rpl-relations-buffer-count-64 = []
  231. rpl-relations-buffer-count-128 = []
  232. rpl-parents-buffer-count-2 = []
  233. rpl-parents-buffer-count-4 = []
  234. rpl-parents-buffer-count-8 = [] # Default
  235. rpl-parents-buffer-count-16 = []
  236. rpl-parents-buffer-count-32 = []
  237. # END AUTOGENERATED CONFIG FEATURES
  238. [[example]]
  239. name = "packet2pcap"
  240. path = "utils/packet2pcap.rs"
  241. required-features = ["std"]
  242. [[example]]
  243. name = "tcpdump"
  244. required-features = ["std", "phy-raw_socket", "proto-ipv4"]
  245. [[example]]
  246. name = "httpclient"
  247. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "proto-ipv6", "socket-tcp"]
  248. [[example]]
  249. name = "ping"
  250. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "proto-ipv6", "socket-icmp"]
  251. [[example]]
  252. name = "server"
  253. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "socket-tcp", "socket-udp"]
  254. [[example]]
  255. name = "client"
  256. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "socket-tcp", "socket-udp"]
  257. [[example]]
  258. name = "loopback"
  259. required-features = ["log", "medium-ethernet", "proto-ipv4", "socket-tcp"]
  260. [[example]]
  261. name = "loopback_benchmark"
  262. required-features = ["std", "log", "medium-ethernet", "proto-ipv4", "socket-tcp"]
  263. [[example]]
  264. name = "multicast"
  265. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "multicast", "socket-udp"]
  266. [[example]]
  267. name = "multicast6"
  268. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv6", "socket-udp"]
  269. [[example]]
  270. name = "benchmark"
  271. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "socket-raw", "socket-udp"]
  272. [[example]]
  273. name = "dhcp_client"
  274. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "proto-dhcpv4", "socket-raw"]
  275. [[example]]
  276. name = "sixlowpan"
  277. required-features = ["std", "medium-ieee802154", "phy-raw_socket", "proto-sixlowpan", "proto-sixlowpan-fragmentation", "socket-udp"]
  278. [[example]]
  279. name = "sixlowpan_benchmark"
  280. required-features = ["std", "medium-ieee802154", "phy-raw_socket", "proto-sixlowpan", "proto-sixlowpan-fragmentation", "socket-udp"]
  281. [[example]]
  282. name = "dns"
  283. required-features = ["std", "medium-ethernet", "medium-ip", "phy-tuntap_interface", "proto-ipv4", "socket-dns"]
  284. [profile.release]
  285. debug = 2