The smallest TCP/IP stack on the planet
Find a file
Daniele Lacamera ef84998c75
All checks were successful
/ unit_test (push) Successful in 37s
unit test: rename some IPPROTO_ constants
2024-12-22 15:40:35 +01:00
.forgejo/workflows Revert linux automated test in CI 2024-12-20 23:35:16 +01:00
src unit test: rename some IPPROTO_ constants 2024-12-22 15:40:35 +01:00
tools/certs Added TLS support + tests 2024-12-20 23:31:50 +01:00
.gitignore Added port for raspberry pi pico 2024-11-24 21:34:15 +01:00
config.h Add DNS client, DHCP fixes. 2024-12-15 17:05:37 +01:00
core.md Fix callbacks, added some design doc 2024-11-03 16:26:14 +01:00
femtotcp.h Added httpd library + https test server 2024-12-22 15:38:54 +01:00
LICENSE Initial import 2024-10-27 13:27:18 +01:00
Makefile Added httpd library + https test server 2024-12-22 15:38:54 +01:00
README.md Updated README.md 2024-12-16 08:55:45 +01:00

FemtoTCP

The smallest TCP/IP stack on the planet

Description and project goals

FemtoTCP is a TCP/IP stack with no dynamic memory allocations, designed to be used in resource-constrained embedded systems.

Endpoint only mode is supported, which means that femtotcp can be used to establish network connections but it does not route traffic between different network interfaces.

A single network interface can be associated with the device.

Features supported

  • ARP (RFC 826)
  • IPv4 (RFC 791)
  • ICMP (RFC 792): only ping replies
  • DHCP (RFC 2131): client only
  • DNS (RFC 1035): client only
  • UDP (RFC 768): unicast only
  • TCP (RFC 793)
    • TCP options supported: Timestamps, Maximum Segment Size
  • BSD-like, non blocking socket API, with custom callbacks
  • No dynamic memory allocation
    • Fixed number of concurrent sockets
    • Pre-allocated buffers for packet processing in static memory

FemtoTCP is licensed under the GPLv3 license. See the LICENSE file for details. Copyright (c) 2024 Daniele Lacamera. Some rights reserved.