Create helper to build the ebpf programs

This commit is contained in:
Pim Kunis 2024-12-25 11:56:27 +01:00
parent 6e8387a0a4
commit 95cf4c4270
5 changed files with 15 additions and 35 deletions

View file

@ -1,16 +0,0 @@
{clangStdenv, libbpf, ...}: clangStdenv.mkDerivation {
name = "dropworld";
src = ./.;
hardeningDisable = [ "stackprotector" "zerocallusedregs" ];
dontFixup = true;
buildInputs = [ libbpf ];
buildPhase = ''
clang -O2 -target bpf -g -c dropworld.c -o dropworld.o
'';
installPhase = ''
mkdir $out
cp dropworld.o $out
'';
}

View file

@ -1,5 +1,5 @@
{
description = "A very basic flake";
description = "eBPF sandbox";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
@ -9,11 +9,23 @@
outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem (system:
let
pkgs = inputs.nixpkgs.legacyPackages.${system};
mkEbpfProg = name: src: pkgs.clangStdenv.mkDerivation {
name = "ebpf-${name}";
inherit src;
hardeningDisable = [ "stackprotector" "zerocallusedregs" ];
dontFixup = true;
buildInputs = with pkgs; [ libbpf ];
buildPhase = ''
clang -O2 -target bpf -g -c ${src}/main.c -o $out
'';
};
in
{
packages = {
dropworld = pkgs.callPackage ./dropworld {};
tcpfilter = pkgs.callPackage ./tcpfilter {};
dropworld = mkEbpfProg "dropworld" ./dropworld;
tcpfilter = mkEbpfProg "tcpfilter" ./tcpfilter;
};
devShells.default = pkgs.mkShell {

View file

@ -1,16 +0,0 @@
{clangStdenv, libbpf, ...}: clangStdenv.mkDerivation {
name = "tcpfilter";
src = ./.;
hardeningDisable = [ "stackprotector" "zerocallusedregs" ];
dontFixup = true;
buildInputs = [ libbpf ];
buildPhase = ''
clang -O2 -target bpf -g -c tcpfilter.c -o tcpfilter.o
'';
installPhase = ''
mkdir $out
cp tcpfilter.o $out
'';
}