capsule-rs / capsule-rs/capsule

Extend suite of ICMPv4 Messages

Open
#104 3 comments 0 reactions 0 assignees View on GitHub
enhancement good first issue
Dominant language
Rust
Stars
443
Forks
42
PR merge metrics
No merged PRs in 30d

Description

## Background

[ICMP](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol) messages are used by network devices, including routers, to send error messages and operational information indicating success or failure when communicating with another IP address. Examples include errors indicating when a requested service is not available or when a host or router could not be reached. We've implemented a few ICMPv4 messages thus far in Capsule, but we'd like to include more.

## Solution

Implement *almost*1 all ICMPv4 message types in Capsule. For reference on how to handle these kinds of messages, please look at what's been implemented thus far @ https://github.com/capsule-rs/capsule/tree/master/core/src/packets/icmp/v4.

Format information for most messages can be found in [RFC 792](https://tools.ietf.org/html/rfc792) and [RFC 1256](https://tools.ietf.org/html/rfc1256) (Sorry, no anchor links!).

Another helpful resource is available via [IANA](https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml), including [RFC 2780](https://tools.ietf.org/html/rfc2780) for helpful considerations.

### Message Types

#### *Good First Issues* from [RFC 792](https://tools.ietf.org/html/rfc792):
- [X] [Echo Reply](https://github.com/capsule-rs/capsule/blob/master/core/src/packets/icmp/v4/echo_reply.rs)
- [ ] Destination Unreachable
- [ ] Source Quench
- [x] Redirect
- [X] [Echo (Request)](https://github.com/capsule-rs/capsule/blob/master/core/src/packets/icmp/v4/echo_request.rs)
- [X] [Time Exceeded](https://github.com/capsule-rs/capsule/blob/master/core/src/packets/icmp/v4/time_exceeded.rs)
- [ ] Parameter Problem
- [ ] Timestamp
- [ ] Timestamp Reply
- [ ] Information Request
- [ ] Information Reply

#### Others:
- [ ] Router Advertisement ~ [RFC 1256](https://tools.ietf.org/html/rfc1256)1
- [ ] Router Solicitation ~ [RFC 1256](https://tools.ietf.org/html/rfc1256)1
- [ ] Extended Echo Request ~ [RFC 8335](https://tools.ietf.org/html/rfc8335#section-2)
- [ ] Extended Echo Reply ~ [RFC 8335](https://tools.ietf.org/html/rfc8335#section-3)

1 Not including Mobile IP extensions here.

Contributor guide

Open the contributing guide

Research direction

Start in core/src/packets/icmp/v4 and compare the existing echo_reply.rs, echo_request.rs, redirect, and time_exceeded implementations with the unchecked message types in the issue. Read RFC 792 and RFC 1256 first, then consult RFC 2780, RFC 8335, and the IANA registry as needed. Done means the applicable unchecked ICMPv4 message types are implemented, with the Mobile IP extensions excluded.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.