Flexible IP (FIP) Main Documentation
Flexible IP (fip) is an IP stack designed to run on small devices. It's unique design also allows it to be used on larger devices as well though.
You may be interested in looking at the following general documentation:
Or to jump straight to the code documentation, it's worth starting at the fip_task()
function. If you want to poke at the source code check out the 'Files' tab at the top.
- IPv6 & IPv4 Support in One Stack
- There are users of both IPv6 and IPv4. Handling both types of IP in one stack means that higher-layer developments can be used by both IPv6 and IPv4.
- Developers may be more interested in IPv6 or IPv4. If the software stack is unified, much progress can be made since improvements on the IPv4 side can be easily used by the IPv6 side (for the most part!). Initially, IPv6 support will be targeted. However the stack should be designed such that IPv6 or IPv4 can be processed.
- Multiple Interfaces
- Multiple interfaces will be supported natively. Most likely interfaces are defined at compile time, run-time adding/removing of interfaces is not supported.
- 32-Bit Support
- Support for 32-bit is present in the source code. This means unaligned pointers have hooks where you can tell the compiler it is unaligned etc.
- Dynamic Memory Allocation
- The stack will support the use of dynamic memory for the main IP buffers. This means properly dealing with mallocing()/freeing() memory as required. Note that the stack should also work with static buffers for constrained devices.
- RTOS Support
- The stack should work with any RTOS. TBD: will it work with just cooperative style RTOS, or pre-emptive as well?
- Good architecture, Documentation, and Static Analysis
- The stack should be well documented with Doxygen, have a flexible architecture, and pass static analysis tools. PC-Lint is used, see PC-Lint Support.