This project plan details an overview of the programming project.
Note the MILESTONES section includes specific milestones/features with a tag. The tag does not reference the higher-level paragraph numbering, but instead uses a separate numbering scheme. This is done as the source code can reference these specific milestones as TODOs, but there is no risk of losing coherence between this documentation and source code. For example if a milestone of "Send TTL Exceeded Error Message" was referenced as 2.5.1.2, the paragraph it is part of cannot change or be moved. However if it is just referred to as ICMP.2, the higher layer organisation of the document can be changed.
This is important as the source code might have something like:
/** @todo: ICMP.2: Send TTL Exceeded error message here */
which allows someone reading the code to check the project plan for more details on that specific todo.
fip will provide an IPv6/6LoWPAN stack for our embedded systems. More about fip
List of some important features and use cases
- Supports minimal IPv6 processing, sufficient to perform basic ND and ping response
- No UDP, TCP, etc
- 6LoWPAN fragmentation support
- Support for only the static single-use buffer
- No IPv4 support
- May not support full ICMPv6 error messages
- STATUS: DONE (No official package)
- UDP Support added
- 6lowpan-nd added
- STATUS: DONE (No official package)
- Partial TCP support added
- STATUS: Not Started
- ROLL-RPL support
- CoAP Support
- STATUS: Not Started
- TCP Support
- ICMPv6 Error Messages Fully Supported
- Adds additional buffering modes
- Potentially passes IPv6 Ready Logo
- STATUS: Not Started
- AR.1: Plan for how the system works [IN PROGRESS]
- AR.2: Complete exception handling. [TODO]
-
PH.1: Complete structure which defines the packet [DONE]
-
PH.2: Implement static single-use buffer macros/functions [DONE]
-
PH.3: Implement dynamic (malloc) based macros/functions [DONE]
- PH.4: Improve performance for fixed LL header lengths [TODO]
-
PH.5: Add a state to the packet indicating for example: IPv6 destination is link-local, etc. These could be set in 6lowpan and make checks quicker in later functions [DONE]
-
HI.1: Host interface for timer [DONE]
-
IPV6.1: Check IPv6 header for structure and proper addresses [DONE]
-
IPV6.2: Support passing to routing code messages which are not destined to us but we should route [DONE]
-
IPV6.3: Support IPv6 extension/routing headers [DONE]
- IPV6.4: Only need one solicited node address per group of same lower 24 bits [TODO]
- IPV6.5: Perform next-hop determination [IN PROGRESS]
- IPv4.1: Add IPv4 Handling into headers etc [TODO]
- IPv4.2: Add IPv4 Handling into main task [TODO]
-
ICMPV6.1: Handle Echo Request [DONE]
-
ICMPV6.2: Pass ND messages on to ND Code [DONE]
- ICMPV6.3: Handle incoming error messages [TODO]
-
ICMPV6.4: Send error messages [DONE]
-
ICMPV6.5: Verify checksum on incoming packets [DONE]
-
ND6.1: Respond to NS with NA for our address [DONE]
- ND6.2: Add random delay per RFC4861/4862 [IN PROGRESS]
-
ND6.3: Fix isRouter to ensure it follows 4861 [DONE]
-
ND6.4: Add isOnLink prefix handling [DONE]
- TCP.1: Add TCP Code [TODO]
-
UDP.1: Add UDP Code [DONE]
- 6LOW.1: Support context > 0 [TODO]