# For virtual wlan interface.
instmods mac80211_hwsim
+ # for IPMasquerade=
+ instmods "=net/netfilter"
generate_module_dependencies
# Create a dummy container "template" with a minimal toolset, which we can
[[ -e "$libgcc_s" ]] && inst_library "$libgcc_s"
done < <(ldconfig -p | awk '/\/libgcc_s.so.1$/ { print $4 }')
- local lib path
+ local lib path libs
# A number of dependencies is now optional via dlopen, so the install
# script will not pick them up, since it looks at linkage.
- for lib in libcryptsetup libidn libidn2 pwquality libqrencode tss2-esys tss2-rc tss2-mu tss2-tcti-device libfido2 libbpf libelf libdw xkbcommon p11-kit-1 libarchive libgcrypt libkmod; do
+ libs=(
+ libarchive
+ libbpf
+ libcryptsetup
+ libdw
+ libelf
+ libfido2
+ libgcrypt
+ libidn
+ libidn2
+ libip4tc
+ libkmod
+ libqrencode
+ p11-kit-1
+ pwquality
+ tss2-esys
+ tss2-mu
+ tss2-rc
+ tss2-tcti-device
+ xkbcommon
+ )
+ for lib in "${libs[@]}"; do
ddebug "Searching for $lib via pkg-config"
if pkg-config --exists "$lib"; then
path="$(pkg-config --variable=libdir "$lib")"
rm -fr "$root"
}
+testcase_ip_masquerade() {
+ local root
+
+ if ! command -v networkctl >/dev/null; then
+ echo "This test requires systemd-networkd, skipping..."
+ return 0
+ fi
+
+ systemctl unmask systemd-networkd.service
+ systemctl edit --runtime --stdin systemd-networkd.service --drop-in=debug.conf <<EOF
+[Service]
+Environment=SYSTEMD_LOG_LEVEL=debug
+EOF
+ systemctl start systemd-networkd.service
+
+ root="$(mktemp -d /var/lib/machines/TEST-13-NSPAWN.ip_masquerade.XXX)"
+ create_dummy_container "$root"
+
+ systemd-run --unit=nspawn-hoge.service \
+ systemd-nspawn \
+ --register=no \
+ --directory="$root" \
+ --ephemeral \
+ --machine=hoge \
+ --network-veth \
+ bash -x -c "ip link set host0 up; sleep 30s"
+
+ /usr/lib/systemd/systemd-networkd-wait-online -i ve-hoge --timeout 30s
+
+ # Check IPMasquerade= for ve-* and friends enabled IP forwarding.
+ [[ "$(cat /proc/sys/net/ipv4/conf/all/forwarding)" == "1" ]]
+ [[ "$(cat /proc/sys/net/ipv4/conf/default/forwarding)" == "1" ]]
+ [[ "$(cat /proc/sys/net/ipv6/conf/all/forwarding)" == "1" ]]
+ [[ "$(cat /proc/sys/net/ipv6/conf/default/forwarding)" == "1" ]]
+
+ systemctl stop nspawn-hoge.service || :
+ systemctl stop systemd-networkd.service
+ systemctl mask systemd-networkd.service
+
+ rm -fr "$root"
+}
+
run_testcases