summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-02-22 20:27:59 +0100
committerChristian Breunig <christian@breunig.cc>2026-02-22 20:32:35 +0100
commit167c8c7a2f9220c55462d6ff7b076a0f72b2a1de (patch)
treec553979b0d330a09a6ec6750743db36cda7ef65d
parentea8aa399c520e129f0a4e7e88b6eedad2cef55c9 (diff)
downloadvyos-1x-167c8c7a2f9220c55462d6ff7b076a0f72b2a1de.tar.gz
vyos-1x-167c8c7a2f9220c55462d6ff7b076a0f72b2a1de.zip
igmp-proxy: T8295: provide native systemd unit to enable restart/backoff
The igmpproxy service was started via a SysV init script, causing systemd-sysv-generator to create a transient unit without restart policies. When igmpproxy failed on first start, systemd did not retry, leading to intermittent service availability. This change replaces the auto‑generated unit with a native systemd service file that defines proper restart settings.
-rw-r--r--python/vyos/defaults.py1
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_igmp-proxy.py3
-rwxr-xr-xsrc/conf_mode/protocols_igmp-proxy.py3
-rw-r--r--src/systemd/igmpproxy.service10
4 files changed, 15 insertions, 2 deletions
diff --git a/python/vyos/defaults.py b/python/vyos/defaults.py
index fbaf18919..c584ddd77 100644
--- a/python/vyos/defaults.py
+++ b/python/vyos/defaults.py
@@ -57,6 +57,7 @@ internal_ports = {
config_files = {
'sshd_user_ca' : '/run/sshd/trusted_user_ca',
+ 'igmp_proxy' : '/run/igmpproxy/igmpproxy.conf',
}
config_status = '/tmp/vyos-config-status'
diff --git a/smoketest/scripts/cli/test_protocols_igmp-proxy.py b/smoketest/scripts/cli/test_protocols_igmp-proxy.py
index 799d20252..64244ec38 100755
--- a/smoketest/scripts/cli/test_protocols_igmp-proxy.py
+++ b/smoketest/scripts/cli/test_protocols_igmp-proxy.py
@@ -19,11 +19,12 @@ import unittest
from base_vyostest_shim import VyOSUnitTestSHIM
from vyos.configsession import ConfigSessionError
+from vyos.defaults import config_files
from vyos.utils.file import read_file
from vyos.utils.process import process_named_running
PROCESS_NAME = 'igmpproxy'
-IGMP_PROXY_CONF = '/etc/igmpproxy.conf'
+IGMP_PROXY_CONF = config_files['igmp_proxy']
base_path = ['protocols', 'igmp-proxy']
upstream_if = 'eth1'
downstream_if = 'eth2'
diff --git a/src/conf_mode/protocols_igmp-proxy.py b/src/conf_mode/protocols_igmp-proxy.py
index 67ff8a3f0..7f53882b0 100755
--- a/src/conf_mode/protocols_igmp-proxy.py
+++ b/src/conf_mode/protocols_igmp-proxy.py
@@ -21,6 +21,7 @@ from sys import exit
from vyos.base import Warning
from vyos.config import Config
from vyos.configverify import verify_interface_exists
+from vyos.defaults import config_files
from vyos.template import render
from vyos.utils.process import call
from vyos.utils.dict import dict_search
@@ -28,7 +29,7 @@ from vyos import ConfigError
from vyos import airbag
airbag.enable()
-config_file = r'/etc/igmpproxy.conf'
+config_file = config_files['igmp_proxy']
def get_config(config=None):
if config:
diff --git a/src/systemd/igmpproxy.service b/src/systemd/igmpproxy.service
new file mode 100644
index 000000000..55ab14beb
--- /dev/null
+++ b/src/systemd/igmpproxy.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=IGMP multicast proxy
+After=vyos-router.service
+ConditionPathExists=/run/igmpproxy/igmpproxy.conf
+
+[Service]
+Type=simple
+Restart=on-failure
+RestartSec=10
+ExecStart=/usr/sbin/igmpproxy -n /run/igmpproxy/igmpproxy.conf