Merge pull request #288 from Vaso73/fix/fwbr-udev-rule-order

fix(post-install): run fwbr udev rule after systemd
This commit is contained in:
MacRimi
2026-08-10 17:16:43 +02:00
committed by GitHub
4 changed files with 63 additions and 9 deletions
@@ -0,0 +1,49 @@
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[3]
AUTO_POST_INSTALL = REPO_ROOT / "scripts/post_install/auto_post_install.sh"
CUSTOM_POST_INSTALL = REPO_ROOT / "scripts/post_install/customizable_post_install.sh"
UNINSTALL_TOOLS = REPO_ROOT / "scripts/post_install/uninstall-tools.sh"
OLD_RULE = "99-proxmenux-fwbr-tune.rules"
NEW_RULE = "99-zz-proxmenux-fwbr-tune.rules"
SYSTEMD_RULE = "99-systemd.rules"
def network_optimization_block(path: Path) -> str:
source = path.read_text()
start = source.index("apply_network_optimizations()")
end = source.index('register_tool "network_optimization"', start)
return source[start:end]
class FwbrUdevRuleOrderTests(unittest.TestCase):
def test_new_rule_sorts_after_systemd_rule(self):
self.assertGreater(NEW_RULE, SYSTEMD_RULE)
def test_auto_post_install_uses_late_rule_and_removes_legacy_rule(self):
source = network_optimization_block(AUTO_POST_INSTALL)
self.assertIn('local FUNC_VERSION="1.2"', source)
self.assertIn(f"rm -f /etc/udev/rules.d/{OLD_RULE}", source)
self.assertIn(f"cat > /etc/udev/rules.d/{NEW_RULE}", source)
self.assertIn(f"chmod 0644 /etc/udev/rules.d/{NEW_RULE}", source)
self.assertNotIn(f"cat > /etc/udev/rules.d/{OLD_RULE}", source)
def test_customizable_post_install_uses_late_rule_and_removes_legacy_rule(self):
source = network_optimization_block(CUSTOM_POST_INSTALL)
self.assertIn('local FUNC_VERSION="1.2"', source)
self.assertIn(f"rm -f /etc/udev/rules.d/{OLD_RULE}", source)
self.assertIn(f"cat > /etc/udev/rules.d/{NEW_RULE}", source)
self.assertIn(f"chmod 0644 /etc/udev/rules.d/{NEW_RULE}", source)
self.assertNotIn(f"cat > /etc/udev/rules.d/{OLD_RULE}", source)
def test_uninstall_removes_new_and_legacy_rule_names(self):
source = UNINSTALL_TOOLS.read_text()
self.assertIn(f"/etc/udev/rules.d/{OLD_RULE}", source)
self.assertIn(f"/etc/udev/rules.d/{NEW_RULE}", source)
if __name__ == "__main__":
unittest.main()
+6 -4
View File
@@ -497,7 +497,7 @@ force_apt_ipv4() {
# ========================================================== # ==========================================================
apply_network_optimizations() { apply_network_optimizations() {
local FUNC_VERSION="1.1" local FUNC_VERSION="1.2"
# description: Tune TCP buffers, somaxconn, IPv4 hardening and disable rp_filter on fw bridges (PVE 9 compatible). # description: Tune TCP buffers, somaxconn, IPv4 hardening and disable rp_filter on fw bridges (PVE 9 compatible).
msg_info "$(translate "Optimizing network settings...")" msg_info "$(translate "Optimizing network settings...")"
NECESSARY_REBOOT=1 NECESSARY_REBOOT=1
@@ -594,14 +594,16 @@ RemainAfterExit=yes
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
cat > /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules <<'EOF' rm -f /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules
cat > /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules <<'EOF'
ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwbr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwbr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwln*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwln*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwpr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwpr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="tap*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="tap*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
EOF EOF
chmod 0644 /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules chmod 0644 /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules
chown root:root /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules chown root:root /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules
systemctl daemon-reload >/dev/null 2>&1 || true systemctl daemon-reload >/dev/null 2>&1 || true
udevadm control --reload-rules >/dev/null 2>&1 || true udevadm control --reload-rules >/dev/null 2>&1 || true
@@ -778,7 +778,7 @@ force_apt_ipv4() {
apply_network_optimizations() { apply_network_optimizations() {
local FUNC_VERSION="1.1" local FUNC_VERSION="1.2"
# description: Tune TCP buffers, somaxconn, IPv4 hardening and disable rp_filter on fw bridges (PVE 9 compatible). # description: Tune TCP buffers, somaxconn, IPv4 hardening and disable rp_filter on fw bridges (PVE 9 compatible).
msg_info "$(translate "Optimizing network settings...")" msg_info "$(translate "Optimizing network settings...")"
NECESSARY_REBOOT=1 NECESSARY_REBOOT=1
@@ -885,14 +885,16 @@ RemainAfterExit=yes
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
cat > /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules <<'EOF' rm -f /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules
cat > /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules <<'EOF'
ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwbr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwbr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwln*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwln*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwpr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="fwpr*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
ACTION=="add", SUBSYSTEM=="net", KERNEL=="tap*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k" ACTION=="add", SUBSYSTEM=="net", KERNEL=="tap*", RUN+="/usr/local/sbin/proxmenux-fwbr-tune %k"
EOF EOF
chmod 0644 /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules chmod 0644 /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules
chown root:root /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules chown root:root /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules
systemctl daemon-reload >/dev/null 2>&1 || true systemctl daemon-reload >/dev/null 2>&1 || true
udevadm control --reload-rules >/dev/null 2>&1 || true udevadm control --reload-rules >/dev/null 2>&1 || true
+2 -1
View File
@@ -456,7 +456,8 @@ uninstall_network_optimization() {
systemctl disable --now proxmenux-fwbr-tune.service >/dev/null 2>&1 || true systemctl disable --now proxmenux-fwbr-tune.service >/dev/null 2>&1 || true
rm -f /etc/systemd/system/proxmenux-fwbr-tune.service rm -f /etc/systemd/system/proxmenux-fwbr-tune.service
rm -f /usr/local/sbin/proxmenux-fwbr-tune rm -f /usr/local/sbin/proxmenux-fwbr-tune
rm -f /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules rm -f /etc/udev/rules.d/99-proxmenux-fwbr-tune.rules \
/etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules
udevadm control --reload-rules >/dev/null 2>&1 || true udevadm control --reload-rules >/dev/null 2>&1 || true
systemctl daemon-reload >/dev/null 2>&1 || true systemctl daemon-reload >/dev/null 2>&1 || true