Re: [PATCH v4 2/5] tools: add xdp-forwarder

Yureka
2025-09-24T09:53:05Z

On 9/23/25 17:16, Alyssa Ross wrote:
> Yureka Lilian <yureka@cyberchaos.dev> writes:
>
>> The xdp-forwarder's purpose is implementing the functionality needed
>> within the net-vm (a VM running the Linux drivers for any physical
>> interfaces on the spectrum system).
>>
>> In the future, the net-vm will load the included XDP programs on the
>> passed-through physical interfaces as well as the downstream virtio
>> interface going into the router (recognized by its special MAC address).
>>
>> The net-vm needs to multiplex between the physical interfaces, as there
>> might be several interfaces in the same IOMMU-group.
>>
>> For this, the XDP program loaded on the physical interfaces
>> (`prog_physical.o`) applies a VLAN tag corresponding to the interface id
>> and redirects the packets to the router interface (identified by the
>> `router_iface` bpf map). In the other direction the XDP program loaded on
>> the router interface (`prog_router.o`) removes one layer of VLAN tagging
>> and redirects the packets to the interface read from the VLAN tag.
>>
>> The helper program `set_router_iface` is used to update the `router_iface`
>> bpf map to point to the interface passed as argument to the program.
>>
>> Co-authored-by: Demi Marie Obenour <demiobenour@gmail.com>
>> Signed-off-by: Yureka Lilian <yureka@cyberchaos.dev>
>> ---
>> pkgs/default.nix | 4 +
>> release/checks/pkg-tests.nix | 1 +
>> tools/default.nix | 15 +-
>> tools/meson.build | 4 +
>> tools/meson_options.txt | 3 +
>> tools/xdp-forwarder/include/parsing_helpers.h | 274 ++++++++++++++++++
>> tools/xdp-forwarder/include/rewrite_helpers.h | 146 ++++++++++
>> tools/xdp-forwarder/meson.build | 48 +++
>> tools/xdp-forwarder/prog_physical.c | 39 +++
>> tools/xdp-forwarder/prog_router.c | 43 +++
>> tools/xdp-forwarder/set_router_iface.c | 30 ++
>> 11 files changed, 604 insertions(+), 3 deletions(-)
>> create mode 100644 tools/xdp-forwarder/include/parsing_helpers.h
>> create mode 100644 tools/xdp-forwarder/include/rewrite_helpers.h
>> create mode 100644 tools/xdp-forwarder/meson.build
>> create mode 100644 tools/xdp-forwarder/prog_physical.c
>> create mode 100644 tools/xdp-forwarder/prog_router.c
>> create mode 100644 tools/xdp-forwarder/set_router_iface.c
> release/checks/pkg-tests.nix fails with this patch applied, because
> clang-tidy can't find headers. I'm happy to look into why that is, but
> if you feel like having a look or already know what's happening, please
> let me know!

I found out that the clang-tidy failure is partially because of clang_21
being added to the nativeBuildInputs. But it is _not_ because of a
version mismatch of clang_21 and clang-tools. Using the matching
llvmPackages_21.clang-tools still yields the same error.