summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2026-02-23 14:37:48 +0200
committerGitHub <noreply@github.com>2026-02-23 14:37:48 +0200
commit662b45c159393aa9451c93b168da415021949857 (patch)
tree23fc7e5dbcaf84c237c9c7c5c0707d76e77742a8
parent61ba7ee632fd2ee8fe58b636087e539da89c6e65 (diff)
parentd73eda6c858af3d266fb1755d566864ad977e7ab (diff)
downloadvyos-1x-662b45c159393aa9451c93b168da415021949857.tar.gz
vyos-1x-662b45c159393aa9451c93b168da415021949857.zip
Merge pull request #5005 from c-po/igmp-proxy
igmp-proxy: T8295: render appropriate systemd unit file
-rw-r--r--op-mode-definitions/monitor-log.xml.in6
-rwxr-xr-xop-mode-definitions/show-log.xml.in6
-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.py17
-rw-r--r--src/systemd/igmpproxy.service10
6 files changed, 34 insertions, 9 deletions
diff --git a/op-mode-definitions/monitor-log.xml.in b/op-mode-definitions/monitor-log.xml.in
index 0195e89b6..fe9fa0051 100644
--- a/op-mode-definitions/monitor-log.xml.in
+++ b/op-mode-definitions/monitor-log.xml.in
@@ -129,6 +129,12 @@
</properties>
<command>journalctl --no-hostname --boot --follow --unit haproxy.service</command>
</leafNode>
+ <leafNode name="igmp-proxy">
+ <properties>
+ <help>Monitor last lines of IGMP multicast proxy</help>
+ </properties>
+ <command>journalctl --no-hostname --boot --follow --unit igmpproxy.service</command>
+ </leafNode>
<leafNode name="ipoe-server">
<properties>
<help>Monitor last lines of IP over Ethernet server log</help>
diff --git a/op-mode-definitions/show-log.xml.in b/op-mode-definitions/show-log.xml.in
index 1f28418e5..302188602 100755
--- a/op-mode-definitions/show-log.xml.in
+++ b/op-mode-definitions/show-log.xml.in
@@ -587,6 +587,12 @@
</properties>
<command>journalctl --no-hostname --boot --unit nginx.service</command>
</leafNode>
+ <leafNode name="igmp-proxy">
+ <properties>
+ <help>Show log for IGMP multicast proxy</help>
+ </properties>
+ <command>journalctl --no-hostname --boot --unit igmpproxy.service</command>
+ </leafNode>
<tagNode name="image">
<properties>
<help>Show contents of master log file for image</help>
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 c2d2fea5b..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:
@@ -87,18 +88,18 @@ def generate(igmp_proxy):
return None
render(config_file, 'igmp-proxy/igmpproxy.conf.j2', igmp_proxy)
-
return None
def apply(igmp_proxy):
+ service_name = 'igmpproxy.service'
if not igmp_proxy or 'disable' in igmp_proxy:
- # IGMP Proxy support is removed in the commit
- call('systemctl stop igmpproxy.service')
- if os.path.exists(config_file):
- os.unlink(config_file)
- else:
- call('systemctl restart igmpproxy.service')
+ # IGMP Proxy support is removed in the commit
+ call(f'systemctl stop {service_name}')
+ if os.path.exists(config_file):
+ os.unlink(config_file)
+ return None
+ call(f'systemctl restart {service_name}')
return None
if __name__ == '__main__':
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