# SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: 2025 Yureka Lilian { lib, runCommand, stdenv, llvmPackages, libbpf, linux, bpftools }: stdenv.mkDerivation { pname = "xdp-forwarder"; version = "0"; src = lib.fileset.toSource { root = ./.; fileset = lib.fileset.fileFilter ({ hasExt, ... }: !(hasExt "nix") && !(hasExt "md")) ./.; }; buildInputs = [ libbpf ]; nativeBuildInputs = [ llvmPackages.clang-unwrapped bpftools ]; buildPhase = '' bpftool btf dump file ${linux.dev}/vmlinux format c > include/vmlinux.h for prog in physical router; do clang $NIX_CFLAGS_COMPILE -O2 -g -Wall -target bpf -I include -c prog_$prog.c -o prog_$prog.o substituteInPlace load_$prog --replace-fail prog_$prog.o $out/lib/prog_$prog.o done $CC -lbpf -I include -o set_router_iface set_router_iface.c ''; installPhase = '' for prog in physical router; do install -Dm644 prog_$prog.o $out/lib/prog_$prog.o install -Dm755 load_$prog $out/bin/load_$prog done install -Dm755 set_router_iface $out/bin/set_router_iface ''; }