Skip to content

Implement ICMPv6 and NDP#99

Draft
metcya wants to merge 52 commits intotrunkfrom
icmpv6
Draft

Implement ICMPv6 and NDP#99
metcya wants to merge 52 commits intotrunkfrom
icmpv6

Conversation

@metcya
Copy link
Copy Markdown
Contributor

@metcya metcya commented Mar 22, 2026

Blocked on #65.

june-fish and others added 30 commits March 21, 2026 11:12
TODO: finish header and like, implement ipv6

Signed-off-by: june-fish <git@june.fish>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: metcya <metcya@gmail.com>
* Adds a script that build-tests each commit since trunk.

Signed-off-by: Amy Ringo <me@remexre.com>

* Switches qemu-riscv64 target to RVA23.

Closes #90.

Note that this depends on GCC 15 (#82) as well. GCC 16 will let us
simplify the -march line to -march=rva23s64, but it's not released at
the time of writing.

Signed-off-by: Amy Ringo <me@remexre.com>

* Gives the qemu-riscv64 target a second hart.

This makes it easier to test concurrency-related code.

Signed-off-by: Amy Ringo <me@remexre.com>

* Bumps the Milk-V Duo S U-Boot to update Devicetree.

This adds support for the riscv,isa-base and riscv,isa-extensions
properties, which are more reliable than the deprecated riscv,isa
property.

Signed-off-by: Amy Ringo <me@remexre.com>

* Adds busybox to Nix flake devShell.

This is needed for busybox tftp.

Signed-off-by: Amy Ringo <me@remexre.com>

* Adds watchexec to the devcontainer and flake.

This is used by make watch.

Signed-off-by: Amy Ringo <me@remexre.com>

* Adds documentation for the bytes format directive, adds {bytes:?}.

The {bytes:?} behavior doesn't match what Rust does, but it's a
useful behavior for "typically a string" fields.

Signed-off-by: Amy Ringo <me@remexre.com>

* Adds the strnlen builtin.

Signed-off-by: Amy Ringo <me@remexre.com>

* Adds a page documenting lists.

Signed-off-by: Amy Ringo <me@remexre.com>

* Update tools/build-each-commit.sh

Co-authored-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: remexre <me@remexre.com>

---------

Signed-off-by: Amy Ringo <me@remexre.com>
Signed-off-by: remexre <me@remexre.com>
Co-authored-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: metcya <metcya@gmail.com>
* add editorconfig

Signed-off-by: june-fish <git@june.fish>

* spdx yay

Signed-off-by: june-fish <git@june.fish>

---------

Signed-off-by: june-fish <git@june.fish>
Adds a pci device and class that registers in
devicetree, along with pci_register to register
pci devices.

Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
In its current state, it also changed paging.c to
implement walkaddr, but this may be something that
can change later. Similarly there is another
hardcoded address that should be dynamically
assigned.

Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Does not actually make good ethernet packets, but
is just here to test the rtl8139 driver.

Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
KieranMusser and others added 20 commits March 21, 2026 21:45
Signed-off-by: KieranMusser <59939188+KieranMusser@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
we don't have 128 bit integers in the kernel instead we can treat the
addresses as  128 bit wide arrays.

static_assert to make sure the header is the required 40 octets.

comment out unusued structs, we don't have to worry about routing or
options as we are not routers or interacting with neighbors.

Signed-off-by: jastintime <130672671+jastintime@users.noreply.github.com>
Signed-off-by: june-fish <git@june.fish>
Signed-off-by: june-fish <git@june.fish>
Signed-off-by: june-fish <git@june.fish>
Signed-off-by: june-fish <git@june.fish>
pseudo_header.hop_limit = 255;
u16 packet[32];
memcpy(packet, &pseudo_header, sizeof(struct ipv6_header));
memcpy(packet, &data, len);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to offset, you are overriding your pseudo_header here

@metcya metcya force-pushed the icmpv6 branch 2 times, most recently from e0a01a8 to 14b576e Compare March 23, 2026 01:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants