- scripts/in-namespace.sh set CARGO_TARGET_DIR to the empty string when it was unset, which cargo refuses, and dropped RUSTFLAGS, so the run in the namespace rebuilt what kernel-tests.sh had just built. Each is passed on only where set. - The README's list of unsupported features still had route reflection and graceful restart, both of which exist; the command-line reference lacked SIGUSR1 and exit status 75; the HTTP API reference did not say what errors look like. - The event stream said "missed 0 events" for the best-routes stream, which does not count what it missed; it leaves the count out now. - CI lints bgp-bench with its count-memory feature, which nothing built. - bgp-bench had two unused dev-dependencies; bgp-integration-tests had three dependencies that only its tests and examples use. - install.sh updates apt before installing; two-routers.sh loses an unused variable; small things in the web crate. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
25 lines
1.2 KiB
Bash
Executable File
25 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# Runs a command on Linux in a network namespace made for it, as the
|
|
# calling user with CAP_NET_ADMIN and nothing else: what the tests that
|
|
# change a kernel's routes need. For running one of them by hand, e.g.
|
|
#
|
|
# FERRIX_ROUTES=1000000 scripts/in-namespace.sh cargo test --release \
|
|
# -p bgp-fib --test kernel many -- --include-ignored --nocapture
|
|
set -eu
|
|
namespace="ferrix-ns-$$"
|
|
sudo modprobe dummy 2>/dev/null || true
|
|
sudo ip netns add "$namespace"
|
|
trap 'sudo ip netns del "$namespace"' EXIT
|
|
sudo ip netns exec "$namespace" ip link set lo up
|
|
# Only the variables that are set are passed on: cargo refuses an empty
|
|
# CARGO_TARGET_DIR, and the build settings have to be the same as the
|
|
# prebuild's in scripts/kernel-tests.sh for it to be reused.
|
|
sudo ip netns exec "$namespace" \
|
|
setpriv --reuid "$(id -u)" --regid "$(id -g)" --init-groups \
|
|
--inh-caps +net_admin --ambient-caps +net_admin \
|
|
env PATH="$PATH" HOME="$HOME" \
|
|
${CARGO_TARGET_DIR:+CARGO_TARGET_DIR="$CARGO_TARGET_DIR"} \
|
|
${RUSTFLAGS:+RUSTFLAGS="$RUSTFLAGS"} \
|
|
${CARGO_TERM_COLOR:+CARGO_TERM_COLOR="$CARGO_TERM_COLOR"} \
|
|
${FERRIX_ROUTES:+FERRIX_ROUTES="$FERRIX_ROUTES"} "$@"
|