From 395e3cb72c521ea9d62c0efd1620e679fc709cda Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 8 Jan 2025 20:41:03 +0100 Subject: syslog: T6989: remove "file" logging destination --- src/migration-scripts/system/28-to-29 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/migration-scripts/system/28-to-29 (limited to 'src/migration-scripts/system') diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 new file mode 100644 index 000000000..e12063fc4 --- /dev/null +++ b/src/migration-scripts/system/28-to-29 @@ -0,0 +1,29 @@ +# Copyright 2025 VyOS maintainers and contributors +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see . + +# T6989: +# - remove syslog arbitrary file logging +# - remove syslog user console logging + +from vyos.configtree import ConfigTree + +base = ['system', 'syslog'] + +def migrate(config: ConfigTree) -> None: + if not config.exists(base): + return + + if config.exists(base + ['file']): + config.delete(base + ['file']) -- cgit v1.2.3 From 196797346b973d1eba3f3d000321786c54e3bdbf Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 8 Jan 2025 20:41:36 +0100 Subject: syslog: T6989: remove CLI option for user terminal logging Should be added as runtime option similar to "terminal monitor" known from other vendors. --- data/templates/rsyslog/rsyslog.conf.j2 | 13 ------------- interface-definitions/system_syslog.xml.in | 19 ------------------- src/migration-scripts/system/28-to-29 | 3 +++ 3 files changed, 3 insertions(+), 32 deletions(-) (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index 67c062ab9..21bfbf822 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -49,16 +49,3 @@ $outchannel global,/var/log/messages,262144,/usr/sbin/logrotate {{ logrotate }} {% endif %} {% endfor %} {% endif %} - -{% if user is defined and user is not none %} -# Log to user terminal -{% for username, user_options in user.items() %} -{% set tmp = [] %} -{% if user_options.facility is vyos_defined %} -{% for facility, facility_options in user_options.facility.items() %} -{% set _ = tmp.append(facility.replace('all', '*') + '.' + facility_options.level.replace('all', '*')) %} -{% endfor %} -{% endif %} -{{ tmp | join(';') }} :omusrmsg:{{ username }} -{% endfor %} -{% endif %} diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index 1d5b3635f..df9536c3b 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -8,25 +8,6 @@ 400 - - - Logging to specific terminal of given user - - system login user - - - txt - Local user account - - - #include - - illegal characters in user - - - #include - - Logging to remote host diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index e12063fc4..b8439100a 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -27,3 +27,6 @@ def migrate(config: ConfigTree) -> None: if config.exists(base + ['file']): config.delete(base + ['file']) + + if config.exists(base + ['user']): + config.delete(base + ['user']) -- cgit v1.2.3 From 8784aaa6fbec978aa97cab09cfbf9894163a2b1b Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 8 Jan 2025 21:46:50 +0100 Subject: syslog: T6989: rename "host" to "remote" --- data/templates/rsyslog/rsyslog.conf.j2 | 14 +-- interface-definitions/system_syslog.xml.in | 2 +- smoketest/config-tests/basic-vyos | 8 +- smoketest/config-tests/bgp-azure-ipsec-gateway | 4 +- smoketest/config-tests/dialup-router-complex | 2 +- smoketest/config-tests/dialup-router-medium-vpn | 4 +- .../config-tests/dialup-router-wireguard-ipv6 | 2 +- smoketest/scripts/cli/test_system_syslog.py | 103 +++++++++++++-------- src/migration-scripts/system/28-to-29 | 9 ++ 9 files changed, 90 insertions(+), 58 deletions(-) (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index 21bfbf822..2e3d19afd 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -33,19 +33,19 @@ $outchannel global,/var/log/messages,262144,/usr/sbin/logrotate {{ logrotate }} {{ tmp | join(';') }} /dev/console {% endif %} -{% if host is vyos_defined %} +{% if remote is vyos_defined %} # Remote logging -{% for host_name, host_options in host.items() %} +{% for remote_name, remote_options in remote.items() %} {% set tmp = [] %} -{% if host_options.facility is vyos_defined %} -{% for facility, facility_options in host_options.facility.items() %} +{% if remote_options.facility is vyos_defined %} +{% for facility, facility_options in remote_options.facility.items() %} {% set _ = tmp.append(facility.replace('all', '*') + '.' + facility_options.level.replace('all', '*')) %} {% endfor %} {% endif %} -{% if host_options.protocol is vyos_defined('tcp') %} -{{ tmp | join(';') }} @@{{ '(o)' if host_options.format.octet_counted is vyos_defined }}{{ host_name | bracketize_ipv6 }}:{{ host_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if host_options.format.include_timezone is vyos_defined }} +{% if remote_options.protocol is vyos_defined('tcp') %} +{{ tmp | join(';') }} @@{{ '(o)' if remote_options.format.octet_counted is vyos_defined }}{{ remote_name | bracketize_ipv6 }}:{{ remote_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if remote_options.format.include_timezone is vyos_defined }} {% else %} -{{ tmp | join(';') }} @{{ host_name | bracketize_ipv6 }}:{{ host_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if host_options.format.include_timezone is vyos_defined }} +{{ tmp | join(';') }} @{{ remote_name | bracketize_ipv6 }}:{{ remote_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if remote_options.format.include_timezone is vyos_defined }} {% endif %} {% endfor %} {% endif %} diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index df9536c3b..68cb11423 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -8,7 +8,7 @@ 400 - + Logging to remote host diff --git a/smoketest/config-tests/basic-vyos b/smoketest/config-tests/basic-vyos index 6ff28ec2e..b6bb6ac67 100644 --- a/smoketest/config-tests/basic-vyos +++ b/smoketest/config-tests/basic-vyos @@ -96,8 +96,8 @@ set system syslog global facility all level 'info' set system syslog global facility auth level 'info' set system syslog global facility local7 level 'debug' set system syslog global preserve-fqdn -set system syslog host syslog.vyos.net facility auth level 'warning' -set system syslog host syslog.vyos.net facility local7 level 'notice' -set system syslog host syslog.vyos.net format octet-counted -set system syslog host syslog.vyos.net port '8000' +set system syslog remote syslog.vyos.net facility auth level 'warning' +set system syslog remote syslog.vyos.net facility local7 level 'notice' +set system syslog remote syslog.vyos.net format octet-counted +set system syslog remote syslog.vyos.net port '8000' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/bgp-azure-ipsec-gateway b/smoketest/config-tests/bgp-azure-ipsec-gateway index bbd7b961f..91ec057a9 100644 --- a/smoketest/config-tests/bgp-azure-ipsec-gateway +++ b/smoketest/config-tests/bgp-azure-ipsec-gateway @@ -137,8 +137,8 @@ set system logs logrotate messages rotate '10' set system name-server '192.0.2.254' set system syslog global facility all level 'info' set system syslog global facility local7 level 'debug' -set system syslog host 10.0.9.188 facility all level 'info' -set system syslog host 10.0.9.188 protocol 'udp' +set system syslog remote 10.0.9.188 facility all level 'info' +set system syslog remote 10.0.9.188 protocol 'udp' set system time-zone 'Europe/Berlin' set vpn ipsec authentication psk peer_51-105-0-1 id '51.105.0.1' set vpn ipsec authentication psk peer_51-105-0-1 id '192.0.2.189' diff --git a/smoketest/config-tests/dialup-router-complex b/smoketest/config-tests/dialup-router-complex index c693cc382..404bf342c 100644 --- a/smoketest/config-tests/dialup-router-complex +++ b/smoketest/config-tests/dialup-router-complex @@ -736,5 +736,5 @@ set system option reboot-on-panic set system option startup-beep set system syslog global facility all level 'debug' set system syslog global facility local7 level 'debug' -set system syslog host 172.16.100.1 facility all level 'warning' +set system syslog remote 172.16.100.1 facility all level 'warning' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/dialup-router-medium-vpn b/smoketest/config-tests/dialup-router-medium-vpn index d6b00c678..b7187887b 100644 --- a/smoketest/config-tests/dialup-router-medium-vpn +++ b/smoketest/config-tests/dialup-router-medium-vpn @@ -315,8 +315,8 @@ set system static-host-mapping host-name host109.vyos.net inet '192.168.0.109' set system sysctl parameter net.core.default_qdisc value 'fq' set system sysctl parameter net.ipv4.tcp_congestion_control value 'bbr' set system syslog global facility all level 'info' -set system syslog host 192.168.0.252 facility all level 'debug' -set system syslog host 192.168.0.252 protocol 'udp' +set system syslog remote 192.168.0.252 facility all level 'debug' +set system syslog remote 192.168.0.252 protocol 'udp' set system task-scheduler task Update-Blacklists executable path '/config/scripts/vyos-foo-update.script' set system task-scheduler task Update-Blacklists interval '3h' set system time-zone 'Pacific/Auckland' diff --git a/smoketest/config-tests/dialup-router-wireguard-ipv6 b/smoketest/config-tests/dialup-router-wireguard-ipv6 index 3e298fb82..e4b8bcac4 100644 --- a/smoketest/config-tests/dialup-router-wireguard-ipv6 +++ b/smoketest/config-tests/dialup-router-wireguard-ipv6 @@ -693,5 +693,5 @@ set system option reboot-on-panic set system option startup-beep set system syslog global facility all level 'debug' set system syslog global facility local7 level 'debug' -set system syslog host 172.16.100.1 facility all level 'warning' +set system syslog remote 172.16.100.1 facility all level 'warning' set system time-zone 'Europe/Berlin' diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index a86711119..961b7a6f4 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -53,31 +53,10 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): # Check for running process self.assertFalse(process_named_running(PROCESS_NAME)) - def test_syslog_basic(self): - host1 = '127.0.0.10' - host2 = '127.0.0.20' - - self.cli_set(base_path + ['host', host1, 'port', '999']) - self.cli_set(base_path + ['host', host1, 'facility', 'all', 'level', 'all']) - self.cli_set(base_path + ['host', host2, 'facility', 'kern', 'level', 'err']) + def test_syslog_console(self): self.cli_set(base_path + ['console', 'facility', 'all', 'level', 'warning']) - self.cli_commit() - # verify log level and facilities in config file - # *.warning /dev/console - # *.* @198.51.100.1:999 - # kern.err @192.0.2.1:514 - config = [ - get_config_value('\*.\*'), - get_config_value('kern.err'), - get_config_value('\*.warning'), - ] - expected = [f'@{host1}:999', f'@{host2}:514', '/dev/console'] - - for i in range(0, 3): - self.assertIn(expected[i], config[i]) - # Check for running process - self.assertTrue(process_named_running(PROCESS_NAME)) + self.assertIn('/dev/console', get_config_value('\*.warning')) def test_syslog_global(self): hostname = 'vyos123' @@ -100,32 +79,76 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): for e in expected: self.assertIn(e, config) - # Check for running process - self.assertTrue(process_named_running(PROCESS_NAME)) def test_syslog_remote(self): - rhost = '169.254.0.1' - default_port = default_value(base_path + ['host', rhost, 'port']) - - self.cli_set(base_path + ['global', 'facility', 'all', 'level', 'info']) - self.cli_set(base_path + ['global', 'facility', 'local7', 'level', 'debug']) - self.cli_set(base_path + ['host', rhost, 'facility', 'all', 'level', 'all']) - self.cli_set(base_path + ['host', rhost, 'protocol', 'tcp']) + rhosts = { + '169.254.0.1': { + 'facility': {'name' : 'auth', 'level': 'info'}, + 'protocol': 'udp', + }, + '169.254.0.2': { + 'port': '1514', + 'protocol': 'udp', + }, + '169.254.0.3': { + 'format': ['include-timezone', 'octet-counted'], + 'protocol': 'tcp', + }, + } + default_port = default_value(base_path + ['remote', next(iter(rhosts)), 'port']) + + for remote, remote_options in rhosts.items(): + remote_base = base_path + ['remote', remote] + + if 'port' in remote_options: + self.cli_set(remote_base + ['port', remote_options['port']]) + + if ('facility' in remote_options and + 'name' in remote_options['facility'] and + 'level' in remote_options['facility'] + ): + facility = remote_options['facility']['name'] + level = remote_options['facility']['level'] + self.cli_set(remote_base + ['facility', facility, 'level', level]) + + if 'format' in remote_options: + for format in remote_options['format']: + self.cli_set(remote_base + ['format', format]) + + if 'protocol' in remote_options: + protocol = remote_options['protocol'] + self.cli_set(remote_base + ['protocol', protocol]) self.cli_commit() config = read_file(RSYSLOG_CONF) - self.assertIn(f'*.* @@{rhost}:{default_port}', config) + for remote, remote_options in rhosts.items(): + tmp = ' ' + if ('facility' in remote_options and + 'name' in remote_options['facility'] and + 'level' in remote_options['facility'] + ): + facility = remote_options['facility']['name'] + level = remote_options['facility']['level'] + tmp = f'{facility}.{level} ' - # Change default port and enable "octet-counting" mode - port = '10514' - self.cli_set(base_path + ['host', rhost, 'port', port]) - self.cli_set(base_path + ['host', rhost, 'format', 'octet-counted']) - self.cli_commit() + tmp += '@' + if 'protocol' in remote_options and remote_options['protocol'] == 'tcp': + tmp += '@' - config = read_file(RSYSLOG_CONF) - self.assertIn(f'*.* @@(o){rhost}:{port}', config) + if 'format' in remote_options and 'octet-counted' in remote_options['format']: + tmp += '(o)' + + port = default_port + if 'port' in remote_options: + port = remote_options['port'] + + tmp += f'{remote}:{port}' + + if 'format' in remote_options and 'include-timezone' in remote_options['format']: + tmp += ';RSYSLOG_SyslogProtocol23Format' + self.assertIn(tmp, config) if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index b8439100a..2f55d425a 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -30,3 +30,12 @@ def migrate(config: ConfigTree) -> None: if config.exists(base + ['user']): config.delete(base + ['user']) + + # rename host -> remote + if config.exists(base + ['host']): + config.set(base + ['remote']) + config.set_tag(base + ['remote']) + for remote in config.list_nodes(base + ['host']): + config.copy(base + ['host', remote], base + ['remote', remote]) + config.set_tag(base + ['remote']) + config.delete(base + ['host']) -- cgit v1.2.3 From e143e496e28b9d6d5803278fa76a14bf2bc2304e Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Mon, 13 Jan 2025 19:36:41 +0100 Subject: syslog: T6989: convert old configuration format to "advanced" --- data/templates/rsyslog/override.conf.j2 | 11 -- data/templates/rsyslog/rsyslog.conf.j2 | 125 +++++++++++++---- debian/vyos-1x.install | 1 - interface-definitions/system_syslog.xml.in | 17 ++- smoketest/scripts/cli/test_system_syslog.py | 151 ++++++++++++++------- src/conf_mode/system_option.py | 2 +- src/conf_mode/system_syslog.py | 14 +- src/etc/rsyslog.conf | 67 --------- .../systemd/system/rsyslog.service.d/override.conf | 10 ++ src/migration-scripts/system/28-to-29 | 7 +- 10 files changed, 235 insertions(+), 170 deletions(-) delete mode 100644 data/templates/rsyslog/override.conf.j2 delete mode 100644 src/etc/rsyslog.conf create mode 100644 src/etc/systemd/system/rsyslog.service.d/override.conf (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/override.conf.j2 b/data/templates/rsyslog/override.conf.j2 deleted file mode 100644 index 5f6a87edf..000000000 --- a/data/templates/rsyslog/override.conf.j2 +++ /dev/null @@ -1,11 +0,0 @@ -{% set vrf_command = 'ip vrf exec ' ~ vrf ~ ' ' if vrf is vyos_defined else '' %} -[Unit] -StartLimitIntervalSec=0 - -[Service] -ExecStart= -ExecStart={{ vrf_command }}/usr/sbin/rsyslogd -n -iNONE -Restart=always -RestartPreventExitStatus= -RestartSec=10 -RuntimeDirectoryPreserve=yes diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index 2e3d19afd..efb23ca7d 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -1,51 +1,126 @@ ### Autogenerated by system_syslog.py ### +#### MODULES #### +# Load input modules for local logging and kernel logging + +# Old-style log file format with low-precision timestamps +# A modern-style logfile format with high-precision timestamps and timezone info +# RSYSLOG_FileFormat +module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") +module(load="imuxsock") # provides support for local system logging +module(load="imklog") # provides kernel logging support + +# Import logs from journald +module( + load="imjournal" + StateFile="/var/spool/rsyslog/imjournal.state" # Persistent state file to track the journal cursor + Ratelimit.Interval="0" # Disable rate limiting (set to "0" for no limit) + RateLimit.Burst="0" +) + +#### GLOBAL DIRECTIVES #### +### TODO - remove +# Filter duplicated messages +# https://www.rsyslog.com/doc/configuration/action/rsconf1_repeatedmsgreduction.html +$RepeatedMsgReduction on + +########################################## +#### AUTH.LOG CHANNEL AND LOGGING RULES #### +########################################## + +# Log specific programs to auth.log, then stop further processing +if ( + $programname == "CRON" or + $programname == "sudo" or + $programname == "su" +) then { + action(type="omfile" file="/var/log/auth.log") + stop +} + +global(workDirectory="/var/spool/rsyslog") + +############### +#### RULES #### +############### + +# Send emergency messages to all logged-in users +*.emerg action(type="omusrmsg" users="*") + {% if global.marker is vyos_defined %} -$ModLoad immark -{% if global.marker.interval is vyos_defined %} -$MarkMessagePeriod {{ global.marker.interval }} -{% endif %} +# Load the immark module for periodic --MARK-- message capability +module(load="immark" interval="{{ global.marker.interval }}") {% endif %} {% if global.preserve_fqdn is vyos_defined %} -$PreserveFQDN on +# Preserve the fully qualified domain name (FQDN) in log messages +global(preserveFQDN="on") {% endif %} - {% if global.local_host_name is vyos_defined %} -$LocalHostName {{ global.local_host_name }} +# Set the local hostname for log messages +global(localHostname="{{ global.local_host_name }}") {% endif %} -# We always log to /var/log/messages -$outchannel global,/var/log/messages,262144,/usr/sbin/logrotate {{ logrotate }} +#### GLOBAL LOGGING #### {% if global.facility is vyos_defined %} {% set tmp = [] %} -{% for facility, facility_options in global.facility.items() %} -{% set _ = tmp.append(facility.replace('all', '*') + '.' + facility_options.level.replace('all', '*')) %} -{% endfor %} -{{ tmp | join(';') }} :omfile:$global +{% if global.facility is vyos_defined %} +{% for facility, facility_options in global.facility.items() %} +{% set _ = tmp.append(facility.replace('all', '*') ~ "." ~ facility_options.level.replace('all', 'debug')) %} +{% endfor %} +if prifilt("{{ tmp | join(',') }}") then { + action( + type="omfile" + file="/var/log/messages" + queue.size="262144" + rotation.sizeLimitCommand="/usr/sbin/logrotate {{ logrotate }}" + ) +} +{% endif %} {% endif %} +#### CONSOLE LOGGING #### {% if console.facility is vyos_defined %} -# Console logging {% set tmp = [] %} -{% for facility, facility_options in console.facility.items() %} -{% set _ = tmp.append(facility.replace('all', '*') + '.' + facility_options.level.replace('all', '*')) %} -{% endfor %} -{{ tmp | join(';') }} /dev/console +{% if console.facility is vyos_defined %} +{% for facility, facility_options in console.facility.items() %} +{% set _ = tmp.append(facility.replace('all', '*') ~ "." ~ facility_options.level.replace('all', 'debug')) %} +{% endfor %} +if prifilt("{{ tmp | join(',') }}") then { + action(type="omfile" file="/dev/console") +} +{% endif %} {% endif %} +#### REMOTE LOGGING #### {% if remote is vyos_defined %} -# Remote logging {% for remote_name, remote_options in remote.items() %} {% set tmp = [] %} {% if remote_options.facility is vyos_defined %} {% for facility, facility_options in remote_options.facility.items() %} -{% set _ = tmp.append(facility.replace('all', '*') + '.' + facility_options.level.replace('all', '*')) %} +{% set _ = tmp.append(facility.replace('all', '*') ~ "." ~ facility_options.level.replace('all', 'debug')) %} {% endfor %} -{% endif %} -{% if remote_options.protocol is vyos_defined('tcp') %} -{{ tmp | join(';') }} @@{{ '(o)' if remote_options.format.octet_counted is vyos_defined }}{{ remote_name | bracketize_ipv6 }}:{{ remote_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if remote_options.format.include_timezone is vyos_defined }} -{% else %} -{{ tmp | join(';') }} @{{ remote_name | bracketize_ipv6 }}:{{ remote_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if remote_options.format.include_timezone is vyos_defined }} +{% set _ = tmp.sort() %} +# Remote syslog to {{ remote_name }} +if prifilt("{{ tmp | join(',') }}") then { + action( + type="omfwd" + # Remote syslog server where we send our logs to + target="{{ remote_name | bracketize_ipv6 }}" + # Port on the remote syslog server + port="{{ remote_options.port }}" + protocol="{{ remote_options.protocol }}" +{% if remote_options.format.include_timezone is vyos_defined %} + template="SyslogProtocol23Format" +{% endif %} + TCP_Framing="{{ 'octed-counted' if remote_options.format.octet_counted is vyos_defined else 'traditional' }}" +{% if vrf is vyos_defined %} + Device="{{ vrf }}" +{% endif %} + ) +} {% endif %} {% endfor %} {% endif %} + +# Include all configuration files in /etc/rsyslog.d/ +include(file="/etc/rsyslog.d/*.conf") diff --git a/debian/vyos-1x.install b/debian/vyos-1x.install index 5fcff959a..4e312a648 100644 --- a/debian/vyos-1x.install +++ b/debian/vyos-1x.install @@ -9,7 +9,6 @@ etc/netplug etc/opennhrp etc/modprobe.d etc/ppp -etc/rsyslog.conf etc/securetty etc/security etc/skel diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index 68cb11423..acc7b4747 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -10,7 +10,7 @@ - Logging to remote host + Log to remote host @@ -59,21 +59,26 @@ - Logging to system standard location + Log to standard system location /var/log/messages #include - mark messages sent to syslog + Mark messages sent to syslog - time interval how often a mark message is being sent in seconds + Mark message interval + + u32:1-65535 + Time in seconds + - + + Port number must be in range 1 to 86400 1200 @@ -89,7 +94,7 @@ - logging to serial console + Log to system console (/dev/console) #include diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index 961b7a6f4..de2e9b260 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2019-2024 VyOS maintainers and contributors +# Copyright (C) 2019-2025 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as @@ -20,18 +20,24 @@ import unittest from base_vyostest_shim import VyOSUnitTestSHIM from vyos.utils.file import read_file +from vyos.utils.process import cmd from vyos.utils.process import process_named_running from vyos.xml_ref import default_value PROCESS_NAME = 'rsyslogd' -RSYSLOG_CONF = '/etc/rsyslog.d/00-vyos.conf' +RSYSLOG_CONF = '/run/rsyslog/rsyslog.conf' base_path = ['system', 'syslog'] -def get_config_value(key): - tmp = read_file(RSYSLOG_CONF) - tmp = re.findall(r'\n?{}\s+(.*)'.format(key), tmp) - return tmp[0] +def get_config(string=''): + """ + Retrieve current "running configuration" from FRR + string: search for a specific start string in the configuration + """ + command = 'cat /run/rsyslog/rsyslog.conf' + if string: + command += f' | sed -n "/^{string}$/,/}}/p"' # }} required to escape } in f-string + return cmd(command) class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): @classmethod @@ -53,37 +59,72 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): # Check for running process self.assertFalse(process_named_running(PROCESS_NAME)) - def test_syslog_console(self): - self.cli_set(base_path + ['console', 'facility', 'all', 'level', 'warning']) + def test_console(self): + level = 'warning' + self.cli_set(base_path + ['console', 'facility', 'all', 'level', level]) self.cli_commit() - self.assertIn('/dev/console', get_config_value('\*.warning')) - def test_syslog_global(self): + rsyslog_conf = get_config() + config = [ + f'if prifilt("*.{level}") then {{', # {{ required to escape { in f-string + 'action(type="omfile" file="/dev/console")', + ] + for tmp in config: + self.assertIn(tmp, rsyslog_conf) + + def test_global(self): hostname = 'vyos123' - domainname = 'example.local' + domain_name = 'example.local' + default_marker_interval = default_value(base_path + ['global', + 'marker', 'interval']) + + facility = { + 'auth': {'level': 'info'}, + 'kern': {'level': 'debug'}, + 'all': {'level': 'notice'}, + } + self.cli_set(['system', 'host-name', hostname]) - self.cli_set(['system', 'domain-name', domainname]) - self.cli_set(base_path + ['global', 'marker', 'interval', '600']) + self.cli_set(['system', 'domain-name', domain_name]) self.cli_set(base_path + ['global', 'preserve-fqdn']) - self.cli_set(base_path + ['global', 'facility', 'kern', 'level', 'err']) + + for tmp, tmp_options in facility.items(): + level = tmp_options['level'] + self.cli_set(base_path + ['global', 'facility', tmp, 'level', level]) self.cli_commit() - config = read_file(RSYSLOG_CONF) + config = get_config('') expected = [ - '$MarkMessagePeriod 600', - '$PreserveFQDN on', - 'kern.err', - f'$LocalHostName {hostname}.{domainname}', + f'module(load="immark" interval="{default_marker_interval}")', + 'global(preserveFQDN="on")', + f'global(localHostname="{hostname}.{domain_name}")', ] - for e in expected: self.assertIn(e, config) - def test_syslog_remote(self): + config = get_config('#### GLOBAL LOGGING ####') + prifilt = [] + for tmp, tmp_options in facility.items(): + if tmp == 'all': + tmp = '*' + level = tmp_options['level'] + prifilt.append(f'{tmp}.{level}') + + prifilt.sort() + prifilt = ','.join(prifilt) + + self.assertIn(f'if prifilt("{prifilt}") then {{', config) + self.assertIn( ' action(', config) + self.assertIn( ' type="omfile"', config) + self.assertIn( ' file="/var/log/messages"', config) + self.assertIn( ' queue.size="262144"', config) + self.assertIn( ' rotation.sizeLimitCommand="/usr/sbin/logrotate /etc/logrotate.d/vyos-rsyslog"', config) + + def test_remote(self): rhosts = { '169.254.0.1': { - 'facility': {'name' : 'auth', 'level': 'info'}, + 'facility': {'auth' : {'level': 'info'}}, 'protocol': 'udp', }, '169.254.0.2': { @@ -91,11 +132,17 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): 'protocol': 'udp', }, '169.254.0.3': { + 'facility': {'auth' : {'level': 'info'}, + 'kern' : {'level': 'debug'}, + 'all' : {'level': 'notice'}, + }, 'format': ['include-timezone', 'octet-counted'], 'protocol': 'tcp', + 'port': '10514', }, } default_port = default_value(base_path + ['remote', next(iter(rhosts)), 'port']) + default_protocol = default_value(base_path + ['remote', next(iter(rhosts)), 'protocol']) for remote, remote_options in rhosts.items(): remote_base = base_path + ['remote', remote] @@ -103,13 +150,10 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): if 'port' in remote_options: self.cli_set(remote_base + ['port', remote_options['port']]) - if ('facility' in remote_options and - 'name' in remote_options['facility'] and - 'level' in remote_options['facility'] - ): - facility = remote_options['facility']['name'] - level = remote_options['facility']['level'] - self.cli_set(remote_base + ['facility', facility, 'level', level]) + if 'facility' in remote_options: + for facility, facility_options in remote_options['facility'].items(): + level = facility_options['level'] + self.cli_set(remote_base + ['facility', facility, 'level', level]) if 'format' in remote_options: for format in remote_options['format']: @@ -123,32 +167,43 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): config = read_file(RSYSLOG_CONF) for remote, remote_options in rhosts.items(): - tmp = ' ' - if ('facility' in remote_options and - 'name' in remote_options['facility'] and - 'level' in remote_options['facility'] - ): - facility = remote_options['facility']['name'] - level = remote_options['facility']['level'] - tmp = f'{facility}.{level} ' - - tmp += '@' - if 'protocol' in remote_options and remote_options['protocol'] == 'tcp': - tmp += '@' - - if 'format' in remote_options and 'octet-counted' in remote_options['format']: - tmp += '(o)' + config = get_config(f'# Remote syslog to {remote}') + prifilt = [] + if 'facility' in remote_options: + for facility, facility_options in remote_options['facility'].items(): + level = facility_options['level'] + if facility == 'all': + facility = '*' + prifilt.append(f'{facility}.{level}') + + prifilt.sort() + prifilt = ','.join(prifilt) + if not prifilt: + # Skip test - as we do not render anything if no facility is set + continue + + self.assertIn(f'if prifilt("{prifilt}") then {{', config) + self.assertIn( ' type="omfwd"', config) + self.assertIn(f' target="{remote}"', config) port = default_port if 'port' in remote_options: port = remote_options['port'] + self.assertIn(f'port="{port}"', config) - tmp += f'{remote}:{port}' + protocol = default_protocol + if 'protocol' in remote_options: + protocol = remote_options['protocol'] + self.assertIn(f'protocol="{protocol}"', config) - if 'format' in remote_options and 'include-timezone' in remote_options['format']: - tmp += ';RSYSLOG_SyslogProtocol23Format' + if 'format' in remote_options: + if 'include-timezone' in remote_options['format']: + self.assertIn( ' template="SyslogProtocol23Format"', config) - self.assertIn(tmp, config) + if 'octet-counted' in remote_options['format']: + self.assertIn( ' TCP_Framing="octed-counted"', config) + else: + self.assertIn( ' TCP_Framing="traditional"', config) if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/src/conf_mode/system_option.py b/src/conf_mode/system_option.py index e2832cde6..064a1aa91 100755 --- a/src/conf_mode/system_option.py +++ b/src/conf_mode/system_option.py @@ -86,7 +86,7 @@ def verify(options): if 'source_address' in config: if not is_addr_assigned(config['source_address']): - raise ConfigError('No interface with give address specified!') + raise ConfigError('No interface with given address specified!') if 'ssh_client' in options: config = options['ssh_client'] diff --git a/src/conf_mode/system_syslog.py b/src/conf_mode/system_syslog.py index eb2f02eb3..78840a5f5 100755 --- a/src/conf_mode/system_syslog.py +++ b/src/conf_mode/system_syslog.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2018-2024 VyOS maintainers and contributors +# Copyright (C) 2018-2025 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as @@ -22,15 +22,15 @@ from vyos.base import Warning from vyos.config import Config from vyos.configdict import is_node_changed from vyos.configverify import verify_vrf +from vyos.utils.network import is_addr_assigned from vyos.utils.process import call from vyos.template import render from vyos import ConfigError from vyos import airbag airbag.enable() -rsyslog_conf = '/etc/rsyslog.d/00-vyos.conf' +rsyslog_conf = '/run/rsyslog/rsyslog.conf' logrotate_conf = '/etc/logrotate.d/vyos-rsyslog' -systemd_override = r'/run/systemd/system/rsyslog.service.d/override.conf' def get_config(config=None): if config: @@ -70,8 +70,8 @@ def verify(syslog): if not syslog: return None - if 'host' in syslog: - for host, host_options in syslog['host'].items(): + if 'remote' in syslog: + for host, host_options in syslog['remote'].items(): if 'protocol' in host_options and host_options['protocol'] == 'udp': if 'format' in host_options and 'octet_counted' in host_options['format']: Warning(f'Syslog UDP transport for "{host}" should not use octet-counted format!') @@ -88,11 +88,7 @@ def generate(syslog): return None render(rsyslog_conf, 'rsyslog/rsyslog.conf.j2', syslog) - render(systemd_override, 'rsyslog/override.conf.j2', syslog) render(logrotate_conf, 'rsyslog/logrotate.j2', syslog) - - # Reload systemd manager configuration - call('systemctl daemon-reload') return None def apply(syslog): diff --git a/src/etc/rsyslog.conf b/src/etc/rsyslog.conf deleted file mode 100644 index b3f41acb6..000000000 --- a/src/etc/rsyslog.conf +++ /dev/null @@ -1,67 +0,0 @@ -################# -#### MODULES #### -################# - -$ModLoad imuxsock # provides support for local system logging -$ModLoad imklog # provides kernel logging support (previously done by rklogd) -#$ModLoad immark # provides --MARK-- message capability - -$OmitLocalLogging off -$SystemLogSocketName /run/systemd/journal/syslog - -$KLogPath /proc/kmsg - -########################### -#### GLOBAL DIRECTIVES #### -########################### - -# Use traditional timestamp format. -# To enable high precision timestamps, comment out the following line. -# A modern-style logfile format similar to TraditionalFileFormat, buth with high-precision timestamps and timezone information -#$ActionFileDefaultTemplate RSYSLOG_FileFormat -# The "old style" default log file format with low-precision timestamps -$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat - -# Filter duplicated messages -$RepeatedMsgReduction on - -# -# Set the default permissions for all log files. -# -$FileOwner root -$FileGroup adm -$FileCreateMode 0640 -$DirCreateMode 0755 -$Umask 0022 - -# -# Stop excessive logging of sudo -# -:msg, contains, " pam_unix(sudo:session): session opened for user root(uid=0) by" stop -:msg, contains, "pam_unix(sudo:session): session closed for user root" stop - -# -# Include all config files in /etc/rsyslog.d/ -# -$IncludeConfig /etc/rsyslog.d/*.conf - -# The lines below cause all listed daemons/processes to be logged into -# /var/log/auth.log, then drops the message so it does not also go to the -# regular syslog so that messages are not duplicated - -$outchannel auth_log,/var/log/auth.log -if $programname == 'CRON' or - $programname == 'sudo' or - $programname == 'su' - then :omfile:$auth_log - -if $programname == 'CRON' or - $programname == 'sudo' or - $programname == 'su' - then stop - -############### -#### RULES #### -############### -# Emergencies are sent to everybody logged in. -*.emerg :omusrmsg:* \ No newline at end of file diff --git a/src/etc/systemd/system/rsyslog.service.d/override.conf b/src/etc/systemd/system/rsyslog.service.d/override.conf new file mode 100644 index 000000000..665b994d9 --- /dev/null +++ b/src/etc/systemd/system/rsyslog.service.d/override.conf @@ -0,0 +1,10 @@ +[Unit] +StartLimitIntervalSec=0 + +[Service] +ExecStart= +ExecStart=/usr/sbin/rsyslogd -n -iNONE -f /run/rsyslog/rsyslog.conf +Restart=always +RestartPreventExitStatus= +RestartSec=10 +RuntimeDirectoryPreserve=yes diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index 2f55d425a..1addad035 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -16,6 +16,7 @@ # T6989: # - remove syslog arbitrary file logging # - remove syslog user console logging +# - rename "host" to "remote" from vyos.configtree import ConfigTree @@ -24,14 +25,16 @@ base = ['system', 'syslog'] def migrate(config: ConfigTree) -> None: if not config.exists(base): return - + # Drop support for custom file logging if config.exists(base + ['file']): config.delete(base + ['file']) + # Drop support for logging to a user tty + # This should be dynamically added via an op-mode command like "terminal monitor" if config.exists(base + ['user']): config.delete(base + ['user']) - # rename host -> remote + # Rename host x.x.x.x -> remote x.x.x.x if config.exists(base + ['host']): config.set(base + ['remote']) config.set_tag(base + ['remote']) -- cgit v1.2.3 From 20ab585a68982c4635c4e5a1ee5bbcc219feaebc Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 15 Jan 2025 20:38:43 +0100 Subject: syslog: T6989: move up "global preserve-fqdn" one level in CLI Move "global preserve-fqdn" one CLI level up, as it relates to all logging targets (console, global and remote). --- data/templates/rsyslog/rsyslog.conf.j2 | 8 ++++---- interface-definitions/system_syslog.xml.in | 24 ++++++++++++------------ smoketest/config-tests/basic-vyos | 2 +- smoketest/config-tests/bgp-big-as-cloud | 2 +- smoketest/scripts/cli/test_system_syslog.py | 2 +- src/conf_mode/system_syslog.py | 23 +++++++++++++---------- src/migration-scripts/system/28-to-29 | 7 +++++++ 7 files changed, 39 insertions(+), 29 deletions(-) (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index 779ae8d04..bc98329b2 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -51,13 +51,13 @@ global(workDirectory="/var/spool/rsyslog") # Load the immark module for periodic --MARK-- message capability module(load="immark" interval="{{ global.marker.interval }}") {% endif %} -{% if global.preserve_fqdn is vyos_defined %} +{% if preserve_fqdn is vyos_defined %} # Preserve the fully qualified domain name (FQDN) in log messages global(preserveFQDN="on") -{% endif %} -{% if global.local_host_name is vyos_defined %} +{% if preserve_fqdn.host_name is vyos_defined and preserve_fqdn.domain_name is vyos_defined %} # Set the local hostname for log messages -global(localHostname="{{ global.local_host_name }}") +global(localHostname="{{ preserve_fqdn.host_name }}.{{ preserve_fqdn.domain_name }}") +{% endif %} {% endif %} #### GLOBAL LOGGING #### diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index f47a95f09..09cfd3dd4 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -8,6 +8,14 @@ 400 + + + Log to system console (/dev/console) + + + #include + + Log to remote host @@ -84,22 +92,14 @@ - - - uses FQDN for logging - - - - + - Log to system console (/dev/console) + Always include domain portion in hostname + - - #include - - + #include #include diff --git a/smoketest/config-tests/basic-vyos b/smoketest/config-tests/basic-vyos index b6bb6ac67..eaa61c56d 100644 --- a/smoketest/config-tests/basic-vyos +++ b/smoketest/config-tests/basic-vyos @@ -95,7 +95,7 @@ set system syslog console facility mail level 'info' set system syslog global facility all level 'info' set system syslog global facility auth level 'info' set system syslog global facility local7 level 'debug' -set system syslog global preserve-fqdn +set system syslog preserve-fqdn set system syslog remote syslog.vyos.net facility auth level 'warning' set system syslog remote syslog.vyos.net facility local7 level 'notice' set system syslog remote syslog.vyos.net format octet-counted diff --git a/smoketest/config-tests/bgp-big-as-cloud b/smoketest/config-tests/bgp-big-as-cloud index d6c17b3d2..ff7549957 100644 --- a/smoketest/config-tests/bgp-big-as-cloud +++ b/smoketest/config-tests/bgp-big-as-cloud @@ -848,5 +848,5 @@ set system sflow interface 'eth0.4088' set system sflow interface 'eth0.4089' set system sflow server 1.2.3.4 port '1234' set system syslog global facility all level 'all' -set system syslog global preserve-fqdn +set system syslog preserve-fqdn set system time-zone 'Europe/Zurich' diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index de2e9b260..b1aaa53a5 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -86,7 +86,7 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): self.cli_set(['system', 'host-name', hostname]) self.cli_set(['system', 'domain-name', domain_name]) - self.cli_set(base_path + ['global', 'preserve-fqdn']) + self.cli_set(base_path + ['preserve-fqdn']) for tmp, tmp_options in facility.items(): level = tmp_options['level'] diff --git a/src/conf_mode/system_syslog.py b/src/conf_mode/system_syslog.py index ce806a540..6f6546fd1 100755 --- a/src/conf_mode/system_syslog.py +++ b/src/conf_mode/system_syslog.py @@ -53,16 +53,13 @@ def get_config(config=None): if syslog.from_defaults(['global']): del syslog['global'] - if ( - 'global' in syslog - and 'preserve_fqdn' in syslog['global'] - and conf.exists(['system', 'host-name']) - and conf.exists(['system', 'domain-name']) - ): - hostname = conf.return_value(['system', 'host-name']) - domain = conf.return_value(['system', 'domain-name']) - fqdn = f'{hostname}.{domain}' - syslog['global']['local_host_name'] = fqdn + if 'preserve_fqdn' in syslog: + if conf.exists(['system', 'host-name']): + tmp = conf.return_value(['system', 'host-name']) + syslog['preserve_fqdn']['host_name'] = tmp + if conf.exists(['system', 'domain-name']): + tmp = conf.return_value(['system', 'domain-name']) + syslog['preserve_fqdn']['domain_name'] = tmp return syslog @@ -70,6 +67,12 @@ def verify(syslog): if not syslog: return None + if 'preserve_fqdn' in syslog: + if 'host_name' not in syslog['preserve_fqdn']: + Warning('No "system host-name" defined - cannot set syslog FQDN!') + if 'domain_name' not in syslog['preserve_fqdn']: + Warning('No "system domain-name" defined - cannot set syslog FQDN!') + if 'remote' in syslog: for host, host_options in syslog['remote'].items(): if 'protocol' in host_options and host_options['protocol'] == 'udp': diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index 1addad035..dadfc994a 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -16,6 +16,7 @@ # T6989: # - remove syslog arbitrary file logging # - remove syslog user console logging +# - move "global preserve-fqdn" one CLI level up # - rename "host" to "remote" from vyos.configtree import ConfigTree @@ -34,6 +35,12 @@ def migrate(config: ConfigTree) -> None: if config.exists(base + ['user']): config.delete(base + ['user']) + # Move "global preserve-fqdn" one CLI level up, as it relates to all + # logging targets (console, global and remote) + if config.exists(base + ['global', 'preserve-fqdn']): + config.delete(base + ['global', 'preserve-fqdn']) + config.set(base + ['preserve-fqdn']) + # Rename host x.x.x.x -> remote x.x.x.x if config.exists(base + ['host']): config.set(base + ['remote']) -- cgit v1.2.3 From b9c43b19acb6f649bb6f64c75ab63df768e360c9 Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 15 Jan 2025 20:45:42 +0100 Subject: syslog: T6989: move up "global marker" one level in CLI --- data/templates/rsyslog/rsyslog.conf.j2 | 4 +-- interface-definitions/system_syslog.xml.in | 38 ++++++++++++++--------------- smoketest/config-tests/basic-vyos | 1 + smoketest/configs/basic-vyos | 3 +++ smoketest/scripts/cli/test_system_syslog.py | 3 +-- src/migration-scripts/system/28-to-29 | 7 ++++++ 6 files changed, 33 insertions(+), 23 deletions(-) (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index bc98329b2..26d62a23f 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -47,9 +47,9 @@ global(workDirectory="/var/spool/rsyslog") # Send emergency messages to all logged-in users *.emerg action(type="omusrmsg" users="*") -{% if global.marker is vyos_defined %} +{% if marker is vyos_defined %} # Load the immark module for periodic --MARK-- message capability -module(load="immark" interval="{{ global.marker.interval }}") +module(load="immark" interval="{{ marker.interval }}") {% endif %} {% if preserve_fqdn is vyos_defined %} # Preserve the fully qualified domain name (FQDN) in log messages diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index 09cfd3dd4..1ee5a7687 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -71,27 +71,27 @@ #include - + + + + + Mark messages sent to syslog + + + - Mark messages sent to syslog + Mark message interval + + u32:1-65535 + Time in seconds + + + + + Port number must be in range 1 to 86400 - - - - Mark message interval - - u32:1-65535 - Time in seconds - - - - - Port number must be in range 1 to 86400 - - 1200 - - - + 1200 + diff --git a/smoketest/config-tests/basic-vyos b/smoketest/config-tests/basic-vyos index eaa61c56d..94a4d139e 100644 --- a/smoketest/config-tests/basic-vyos +++ b/smoketest/config-tests/basic-vyos @@ -95,6 +95,7 @@ set system syslog console facility mail level 'info' set system syslog global facility all level 'info' set system syslog global facility auth level 'info' set system syslog global facility local7 level 'debug' +set system syslog marker interval '1000' set system syslog preserve-fqdn set system syslog remote syslog.vyos.net facility auth level 'warning' set system syslog remote syslog.vyos.net facility local7 level 'notice' diff --git a/smoketest/configs/basic-vyos b/smoketest/configs/basic-vyos index 242f3d1de..527e620da 100644 --- a/smoketest/configs/basic-vyos +++ b/smoketest/configs/basic-vyos @@ -236,6 +236,9 @@ system { facility security { level info } + marker { + interval 1000 + } preserve-fqdn } host syslog.vyos.net { diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index b1aaa53a5..1233bf12b 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -75,8 +75,7 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): def test_global(self): hostname = 'vyos123' domain_name = 'example.local' - default_marker_interval = default_value(base_path + ['global', - 'marker', 'interval']) + default_marker_interval = default_value(base_path + ['marker', 'interval']) facility = { 'auth': {'level': 'info'}, diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index dadfc994a..9716e9e90 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -41,6 +41,13 @@ def migrate(config: ConfigTree) -> None: config.delete(base + ['global', 'preserve-fqdn']) config.set(base + ['preserve-fqdn']) + # Move "global marker" one CLI level up, as it relates to all + # logging targets (console, global and remote) + marker_base = base + ['global', 'marker'] + if config.exists(marker_base): + config.copy(marker_base, base + ['marker']) + config.delete(marker_base) + # Rename host x.x.x.x -> remote x.x.x.x if config.exists(base + ['host']): config.set(base + ['remote']) -- cgit v1.2.3 From 211bc4a767564d1eb28b431e1529eb719bb721a9 Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 22 Jan 2025 20:52:52 +0100 Subject: syslog: T6989: rename "global" to "local" The previously "global" options actually were only relevant for the local logging to /var/log/messages. --- data/templates/rsyslog/rsyslog.conf.j2 | 6 +++--- interface-definitions/system_syslog.xml.in | 2 +- smoketest/config-tests/basic-api-service | 4 ++-- smoketest/config-tests/basic-vyos | 7 ++++--- smoketest/config-tests/basic-vyos-no-ntp | 4 ++-- smoketest/config-tests/bgp-azure-ipsec-gateway | 4 ++-- smoketest/config-tests/bgp-bfd-communities | 4 ++-- smoketest/config-tests/bgp-big-as-cloud | 2 +- smoketest/config-tests/bgp-dmvpn-hub | 4 ++-- smoketest/config-tests/bgp-dmvpn-spoke | 4 ++-- smoketest/config-tests/bgp-evpn-l2vpn-leaf | 4 ++-- smoketest/config-tests/bgp-evpn-l2vpn-spine | 4 ++-- smoketest/config-tests/bgp-evpn-l3vpn-pe-router | 4 ++-- smoketest/config-tests/bgp-medium-confederation | 4 ++-- smoketest/config-tests/bgp-rpki | 4 ++-- smoketest/config-tests/bgp-small-internet-exchange | 4 ++-- smoketest/config-tests/bgp-small-ipv4-unicast | 4 ++-- smoketest/config-tests/cluster-basic | 4 ++-- smoketest/config-tests/dialup-router-complex | 4 ++-- smoketest/config-tests/dialup-router-medium-vpn | 2 +- smoketest/config-tests/dialup-router-wireguard-ipv6 | 4 ++-- smoketest/config-tests/egp-igp-route-maps | 2 +- smoketest/config-tests/igmp-pim-small | 4 ++-- smoketest/config-tests/ipoe-server | 4 ++-- smoketest/config-tests/ipv6-disable | 4 ++-- smoketest/config-tests/isis-small | 4 ++-- smoketest/config-tests/nat-basic | 4 ++-- smoketest/config-tests/ospf-simple | 4 ++-- smoketest/config-tests/ospf-small | 4 ++-- smoketest/config-tests/pppoe-server | 4 ++-- smoketest/config-tests/qos-basic | 4 ++-- smoketest/config-tests/rip-router | 4 ++-- smoketest/config-tests/rpki-only | 4 ++-- smoketest/config-tests/static-route-basic | 4 ++-- smoketest/config-tests/tunnel-broker | 4 ++-- smoketest/config-tests/vpn-openconnect-sstp | 4 ++-- smoketest/config-tests/vrf-basic | 4 ++-- smoketest/config-tests/vrf-bgp-pppoe-underlay | 4 ++-- smoketest/config-tests/vrf-ospf | 4 ++-- smoketest/config-tests/wireless-basic | 4 ++-- smoketest/configs/basic-vyos | 1 + smoketest/scripts/cli/test_system_syslog.py | 2 +- src/conf_mode/system_syslog.py | 4 ++-- src/migration-scripts/system/28-to-29 | 10 ++++++++-- 44 files changed, 91 insertions(+), 83 deletions(-) (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index 26d62a23f..c2cb8a1ca 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -61,10 +61,10 @@ global(localHostname="{{ preserve_fqdn.host_name }}.{{ preserve_fqdn.domain_name {% endif %} #### GLOBAL LOGGING #### -{% if global.facility is vyos_defined %} +{% if local.facility is vyos_defined %} {% set tmp = [] %} -{% if global.facility is vyos_defined %} -{% for facility, facility_options in global.facility.items() %} +{% if local.facility is vyos_defined %} +{% for facility, facility_options in local.facility.items() %} {% set _ = tmp.append(facility.replace('all', '*') ~ "." ~ facility_options.level.replace('all', 'debug')) %} {% endfor %} if prifilt("{{ tmp | join(',') }}") then { diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index 1ee5a7687..0dbf5d497 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -65,7 +65,7 @@ - + Log to standard system location /var/log/messages diff --git a/smoketest/config-tests/basic-api-service b/smoketest/config-tests/basic-api-service index 3f796f35d..ca10cf4e9 100644 --- a/smoketest/config-tests/basic-api-service +++ b/smoketest/config-tests/basic-api-service @@ -24,5 +24,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX0x9kexCimeOcYK1MfhMpITF9ELxHcaBU/znBq.X2ukQOj61fVI2UYP/xBzP4QtiTcdkgs7WOQMHWsRymO/' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/basic-vyos b/smoketest/config-tests/basic-vyos index 94a4d139e..4793e069e 100644 --- a/smoketest/config-tests/basic-vyos +++ b/smoketest/config-tests/basic-vyos @@ -92,13 +92,14 @@ set system login user vyos authentication plaintext-password '' set system name-server '192.168.0.1' set system syslog console facility all level 'emerg' set system syslog console facility mail level 'info' -set system syslog global facility all level 'info' -set system syslog global facility auth level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility auth level 'info' +set system syslog local facility local7 level 'debug' set system syslog marker interval '1000' set system syslog preserve-fqdn set system syslog remote syslog.vyos.net facility auth level 'warning' set system syslog remote syslog.vyos.net facility local7 level 'notice' set system syslog remote syslog.vyos.net format octet-counted set system syslog remote syslog.vyos.net port '8000' +set system syslog remote syslog.vyos.net protocol 'tcp' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/basic-vyos-no-ntp b/smoketest/config-tests/basic-vyos-no-ntp index a18260108..f00dea5d4 100644 --- a/smoketest/config-tests/basic-vyos-no-ntp +++ b/smoketest/config-tests/basic-vyos-no-ntp @@ -48,6 +48,6 @@ set system host-name 'no-ntp' set system login user vyos authentication encrypted-password '$6$r/Yw/07NXNY$/ZB.Rjf9jxEV.BYoDyLdH.kH14rU52pOBtrX.4S34qlPt77chflCHvpTCq9a6huLzwaMR50rEICzA5GoIRZlM0' set system login user vyos authentication plaintext-password '' set system name-server '172.16.254.30' -set system syslog global facility all level 'debug' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'debug' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/bgp-azure-ipsec-gateway b/smoketest/config-tests/bgp-azure-ipsec-gateway index 91ec057a9..0d683c921 100644 --- a/smoketest/config-tests/bgp-azure-ipsec-gateway +++ b/smoketest/config-tests/bgp-azure-ipsec-gateway @@ -135,8 +135,8 @@ set system login user vyos authentication plaintext-password '' set system logs logrotate messages max-size '20' set system logs logrotate messages rotate '10' set system name-server '192.0.2.254' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system syslog remote 10.0.9.188 facility all level 'info' set system syslog remote 10.0.9.188 protocol 'udp' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/bgp-bfd-communities b/smoketest/config-tests/bgp-bfd-communities index 6eee0137e..06e412c55 100644 --- a/smoketest/config-tests/bgp-bfd-communities +++ b/smoketest/config-tests/bgp-bfd-communities @@ -196,6 +196,6 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX0x9kexCimeOcYK1MfhMpITF9ELxHcaBU/znBq.X2ukQOj61fVI2UYP/xBzP4QtiTcdkgs7WOQMHWsRymO/' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/bgp-big-as-cloud b/smoketest/config-tests/bgp-big-as-cloud index ff7549957..f71a51be3 100644 --- a/smoketest/config-tests/bgp-big-as-cloud +++ b/smoketest/config-tests/bgp-big-as-cloud @@ -847,6 +847,6 @@ set system name-server '192.0.2.2' set system sflow interface 'eth0.4088' set system sflow interface 'eth0.4089' set system sflow server 1.2.3.4 port '1234' -set system syslog global facility all level 'all' +set system syslog local facility all level 'all' set system syslog preserve-fqdn set system time-zone 'Europe/Zurich' diff --git a/smoketest/config-tests/bgp-dmvpn-hub b/smoketest/config-tests/bgp-dmvpn-hub index 99f3799a4..f9ceba11c 100644 --- a/smoketest/config-tests/bgp-dmvpn-hub +++ b/smoketest/config-tests/bgp-dmvpn-hub @@ -50,8 +50,8 @@ set system login user vyos authentication plaintext-password '' set system name-server '1.1.1.1' set system name-server '8.8.8.8' set system name-server '9.9.9.9' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set vpn ipsec esp-group ESP-DMVPN lifetime '1800' set vpn ipsec esp-group ESP-DMVPN mode 'transport' set vpn ipsec esp-group ESP-DMVPN pfs 'dh-group2' diff --git a/smoketest/config-tests/bgp-dmvpn-spoke b/smoketest/config-tests/bgp-dmvpn-spoke index e4fb82a0e..a98275ba4 100644 --- a/smoketest/config-tests/bgp-dmvpn-spoke +++ b/smoketest/config-tests/bgp-dmvpn-spoke @@ -56,8 +56,8 @@ set system login user vyos authentication plaintext-password '' set system name-server '1.1.1.1' set system name-server '8.8.8.8' set system name-server '9.9.9.9' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set vpn ipsec esp-group ESP-DMVPN lifetime '1800' set vpn ipsec esp-group ESP-DMVPN mode 'transport' set vpn ipsec esp-group ESP-DMVPN pfs 'dh-group2' diff --git a/smoketest/config-tests/bgp-evpn-l2vpn-leaf b/smoketest/config-tests/bgp-evpn-l2vpn-leaf index 315cb9e06..5e42a269e 100644 --- a/smoketest/config-tests/bgp-evpn-l2vpn-leaf +++ b/smoketest/config-tests/bgp-evpn-l2vpn-leaf @@ -48,8 +48,8 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set vrf name MGMT protocols static route 0.0.0.0/0 next-hop 192.0.2.62 set vrf name MGMT protocols static route6 ::/0 next-hop 2001:db8::1 set vrf name MGMT table '1000' diff --git a/smoketest/config-tests/bgp-evpn-l2vpn-spine b/smoketest/config-tests/bgp-evpn-l2vpn-spine index dee29e021..e6d876af6 100644 --- a/smoketest/config-tests/bgp-evpn-l2vpn-spine +++ b/smoketest/config-tests/bgp-evpn-l2vpn-spine @@ -41,8 +41,8 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set vrf name MGMT protocols static route 0.0.0.0/0 next-hop 192.0.2.62 set vrf name MGMT protocols static route6 ::/0 next-hop 2001:db8::1 set vrf name MGMT table '1000' diff --git a/smoketest/config-tests/bgp-evpn-l3vpn-pe-router b/smoketest/config-tests/bgp-evpn-l3vpn-pe-router index 7a2ec9f91..f867c221e 100644 --- a/smoketest/config-tests/bgp-evpn-l3vpn-pe-router +++ b/smoketest/config-tests/bgp-evpn-l3vpn-pe-router @@ -101,8 +101,8 @@ set system login user vyos authentication plaintext-password '' set system name-server '192.0.2.251' set system name-server '192.0.2.252' set system name-server '2001:db8::1' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set vrf name blue protocols bgp address-family ipv4-unicast redistribute connected set vrf name blue protocols bgp address-family l2vpn-evpn advertise ipv4 unicast set vrf name blue protocols bgp system-as '100' diff --git a/smoketest/config-tests/bgp-medium-confederation b/smoketest/config-tests/bgp-medium-confederation index 582e28047..71797fe93 100644 --- a/smoketest/config-tests/bgp-medium-confederation +++ b/smoketest/config-tests/bgp-medium-confederation @@ -69,5 +69,5 @@ set system host-name 'vyos' set system ip protocol bgp route-map 'DEFAULT-ZEBRA-IN' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'notice' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'notice' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/bgp-rpki b/smoketest/config-tests/bgp-rpki index 44e95ae98..587de67c6 100644 --- a/smoketest/config-tests/bgp-rpki +++ b/smoketest/config-tests/bgp-rpki @@ -39,5 +39,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX0x9kexCimeOcYK1MfhMpITF9ELxHcaBU/znBq.X2ukQOj61fVI2UYP/xBzP4QtiTcdkgs7WOQMHWsRymO/' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/bgp-small-internet-exchange b/smoketest/config-tests/bgp-small-internet-exchange index a9dce4dd5..2adb3fbb5 100644 --- a/smoketest/config-tests/bgp-small-internet-exchange +++ b/smoketest/config-tests/bgp-small-internet-exchange @@ -205,5 +205,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX0x9kexCimeOcYK1MfhMpITF9ELxHcaBU/znBq.X2ukQOj61fVI2UYP/xBzP4QtiTcdkgs7WOQMHWsRymO/' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/bgp-small-ipv4-unicast b/smoketest/config-tests/bgp-small-ipv4-unicast index b8c0e1246..f8820cb3c 100644 --- a/smoketest/config-tests/bgp-small-ipv4-unicast +++ b/smoketest/config-tests/bgp-small-ipv4-unicast @@ -28,5 +28,5 @@ set system domain-name 'vyos.net' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'notice' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'notice' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/cluster-basic b/smoketest/config-tests/cluster-basic index 744c117eb..871b40bbb 100644 --- a/smoketest/config-tests/cluster-basic +++ b/smoketest/config-tests/cluster-basic @@ -16,6 +16,6 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Antarctica/South_Pole' diff --git a/smoketest/config-tests/dialup-router-complex b/smoketest/config-tests/dialup-router-complex index 404bf342c..c356c73c0 100644 --- a/smoketest/config-tests/dialup-router-complex +++ b/smoketest/config-tests/dialup-router-complex @@ -734,7 +734,7 @@ set system name-server '172.16.254.30' set system option ctrl-alt-delete 'ignore' set system option reboot-on-panic set system option startup-beep -set system syslog global facility all level 'debug' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'debug' +set system syslog local facility local7 level 'debug' set system syslog remote 172.16.100.1 facility all level 'warning' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/dialup-router-medium-vpn b/smoketest/config-tests/dialup-router-medium-vpn index b7187887b..ba3ed29f4 100644 --- a/smoketest/config-tests/dialup-router-medium-vpn +++ b/smoketest/config-tests/dialup-router-medium-vpn @@ -314,7 +314,7 @@ set system static-host-mapping host-name host107.vyos.net inet '192.168.0.107' set system static-host-mapping host-name host109.vyos.net inet '192.168.0.109' set system sysctl parameter net.core.default_qdisc value 'fq' set system sysctl parameter net.ipv4.tcp_congestion_control value 'bbr' -set system syslog global facility all level 'info' +set system syslog local facility all level 'info' set system syslog remote 192.168.0.252 facility all level 'debug' set system syslog remote 192.168.0.252 protocol 'udp' set system task-scheduler task Update-Blacklists executable path '/config/scripts/vyos-foo-update.script' diff --git a/smoketest/config-tests/dialup-router-wireguard-ipv6 b/smoketest/config-tests/dialup-router-wireguard-ipv6 index e4b8bcac4..269e9d722 100644 --- a/smoketest/config-tests/dialup-router-wireguard-ipv6 +++ b/smoketest/config-tests/dialup-router-wireguard-ipv6 @@ -691,7 +691,7 @@ set system option ctrl-alt-delete 'ignore' set system option performance 'network-latency' set system option reboot-on-panic set system option startup-beep -set system syslog global facility all level 'debug' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'debug' +set system syslog local facility local7 level 'debug' set system syslog remote 172.16.100.1 facility all level 'warning' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/egp-igp-route-maps b/smoketest/config-tests/egp-igp-route-maps index fc46d25ff..222325cd7 100644 --- a/smoketest/config-tests/egp-igp-route-maps +++ b/smoketest/config-tests/egp-igp-route-maps @@ -42,5 +42,5 @@ set system login user vyos authentication plaintext-password '' set system logs logrotate messages max-size '1' set system logs logrotate messages rotate '5' set system name-server '192.168.0.1' -set system syslog global facility all level 'info' +set system syslog local facility all level 'info' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/igmp-pim-small b/smoketest/config-tests/igmp-pim-small index 909c3d67b..06051af41 100644 --- a/smoketest/config-tests/igmp-pim-small +++ b/smoketest/config-tests/igmp-pim-small @@ -32,6 +32,6 @@ set system domain-name 'vyos.io' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX0x9kexCimeOcYK1MfhMpITF9ELxHcaBU/znBq.X2ukQOj61fVI2UYP/xBzP4QtiTcdkgs7WOQMHWsRymO/' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/ipoe-server b/smoketest/config-tests/ipoe-server index f4a12f502..c21495ab2 100644 --- a/smoketest/config-tests/ipoe-server +++ b/smoketest/config-tests/ipoe-server @@ -44,5 +44,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/ipv6-disable b/smoketest/config-tests/ipv6-disable index 40e34fa0c..5f906b5f7 100644 --- a/smoketest/config-tests/ipv6-disable +++ b/smoketest/config-tests/ipv6-disable @@ -27,5 +27,5 @@ set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX set system login user vyos authentication plaintext-password '' set system name-server '172.16.254.20' set system name-server '172.16.254.30' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/isis-small b/smoketest/config-tests/isis-small index b322f4e29..e61d0362e 100644 --- a/smoketest/config-tests/isis-small +++ b/smoketest/config-tests/isis-small @@ -39,6 +39,6 @@ set system login user vyos authentication plaintext-password '' set service ntp server time1.vyos.net set service ntp server time2.vyos.net set service ntp server time3.vyos.net -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/nat-basic b/smoketest/config-tests/nat-basic index 471add3b3..ba2b1b838 100644 --- a/smoketest/config-tests/nat-basic +++ b/smoketest/config-tests/nat-basic @@ -84,5 +84,5 @@ set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX set system login user vyos authentication plaintext-password '' set system name-server '1.1.1.1' set system name-server '9.9.9.9' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/ospf-simple b/smoketest/config-tests/ospf-simple index 355709448..4273e4b8f 100644 --- a/smoketest/config-tests/ospf-simple +++ b/smoketest/config-tests/ospf-simple @@ -20,5 +20,5 @@ set system console device ttyS0 speed '115200' set system host-name 'lab-vyos-r1' set system login user vyos authentication encrypted-password '$6$R.OnGzfXSfl6J$Iba/hl9bmjBs0VPtZ2zdW.Snh/nHuvxUwi0R6ruypgW63iKEbicJH.uUst8xZCyByURblxRtjAC1lAnYfIt.b0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/ospf-small b/smoketest/config-tests/ospf-small index a7f8b682c..af69e5702 100644 --- a/smoketest/config-tests/ospf-small +++ b/smoketest/config-tests/ospf-small @@ -77,6 +77,6 @@ set system sysctl parameter net.ipv4.igmp_max_memberships value '5' set system sysctl parameter net.ipv4.ipfrag_time value '4' set system sysctl parameter net.mpls.default_ttl value '10' set system sysctl parameter net.mpls.ip_ttl_propagate value '0' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' diff --git a/smoketest/config-tests/pppoe-server b/smoketest/config-tests/pppoe-server index 34fbea215..e488fc746 100644 --- a/smoketest/config-tests/pppoe-server +++ b/smoketest/config-tests/pppoe-server @@ -43,5 +43,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/qos-basic b/smoketest/config-tests/qos-basic index 0e198b80c..655a5794e 100644 --- a/smoketest/config-tests/qos-basic +++ b/smoketest/config-tests/qos-basic @@ -71,5 +71,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$r/Yw/07NXNY$/ZB.Rjf9jxEV.BYoDyLdH.kH14rU52pOBtrX.4S34qlPt77chflCHvpTCq9a6huLzwaMR50rEICzA5GoIRZlM0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/rip-router b/smoketest/config-tests/rip-router index 829aafbd5..d22f424a5 100644 --- a/smoketest/config-tests/rip-router +++ b/smoketest/config-tests/rip-router @@ -79,5 +79,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/rpki-only b/smoketest/config-tests/rpki-only index dcbc7673d..f3e2a74b9 100644 --- a/smoketest/config-tests/rpki-only +++ b/smoketest/config-tests/rpki-only @@ -38,5 +38,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$r/Yw/07NXNY$/ZB.Rjf9jxEV.BYoDyLdH.kH14rU52pOBtrX.4S34qlPt77chflCHvpTCq9a6huLzwaMR50rEICzA5GoIRZlM0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'debug' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'debug' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/static-route-basic b/smoketest/config-tests/static-route-basic index d2d33d043..a6135d2c4 100644 --- a/smoketest/config-tests/static-route-basic +++ b/smoketest/config-tests/static-route-basic @@ -32,6 +32,6 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Asia/Macau' diff --git a/smoketest/config-tests/tunnel-broker b/smoketest/config-tests/tunnel-broker index ee6301c85..5518c303b 100644 --- a/smoketest/config-tests/tunnel-broker +++ b/smoketest/config-tests/tunnel-broker @@ -71,5 +71,5 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' diff --git a/smoketest/config-tests/vpn-openconnect-sstp b/smoketest/config-tests/vpn-openconnect-sstp index 28d7d5daa..e7969f633 100644 --- a/smoketest/config-tests/vpn-openconnect-sstp +++ b/smoketest/config-tests/vpn-openconnect-sstp @@ -16,8 +16,8 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX0x9kexCimeOcYK1MfhMpITF9ELxHcaBU/znBq.X2ukQOj61fVI2UYP/xBzP4QtiTcdkgs7WOQMHWsRymO/' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set vpn openconnect authentication local-users username test password 'test' set vpn openconnect authentication mode local 'password' set vpn openconnect network-settings client-ip-settings subnet '192.168.160.0/24' diff --git a/smoketest/config-tests/vrf-basic b/smoketest/config-tests/vrf-basic index 1d2874a60..0c4e49c52 100644 --- a/smoketest/config-tests/vrf-basic +++ b/smoketest/config-tests/vrf-basic @@ -35,8 +35,8 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' set vrf name green protocols static route 20.0.0.0/8 next-hop 1.1.1.1 interface 'eth1' set vrf name green protocols static route 20.0.0.0/8 next-hop 1.1.1.1 vrf 'default' diff --git a/smoketest/config-tests/vrf-bgp-pppoe-underlay b/smoketest/config-tests/vrf-bgp-pppoe-underlay index bd64c914a..e3c765a9a 100644 --- a/smoketest/config-tests/vrf-bgp-pppoe-underlay +++ b/smoketest/config-tests/vrf-bgp-pppoe-underlay @@ -143,8 +143,8 @@ set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' set system name-server '192.168.0.1' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' set vrf bind-to-all set vrf name vyos-test-01 protocols bgp address-family ipv4-unicast network 100.64.50.0/23 diff --git a/smoketest/config-tests/vrf-ospf b/smoketest/config-tests/vrf-ospf index fd14615e0..53207d565 100644 --- a/smoketest/config-tests/vrf-ospf +++ b/smoketest/config-tests/vrf-ospf @@ -28,8 +28,8 @@ set system console device ttyS0 speed '115200' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' set system login user vyos authentication plaintext-password '' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system time-zone 'Europe/Berlin' set vrf name blue protocols ospf area 0 network '172.18.201.0/24' set vrf name blue protocols ospf interface eth2 authentication md5 key-id 30 md5-key 'vyoskey456' diff --git a/smoketest/config-tests/wireless-basic b/smoketest/config-tests/wireless-basic index d9e6c8fac..e424b2b0f 100644 --- a/smoketest/config-tests/wireless-basic +++ b/smoketest/config-tests/wireless-basic @@ -20,6 +20,6 @@ set system console device ttyS0 speed '115200' set system domain-name 'dev.vyos.net' set system host-name 'WR1' set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' -set system syslog global facility all level 'info' -set system syslog global facility local7 level 'debug' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' set system wireless country-code 'es' diff --git a/smoketest/configs/basic-vyos b/smoketest/configs/basic-vyos index 527e620da..a6cd3b6e1 100644 --- a/smoketest/configs/basic-vyos +++ b/smoketest/configs/basic-vyos @@ -254,6 +254,7 @@ system { format { octet-counted } + protocol tcp port 8000 } } diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index 1233bf12b..5a09fab18 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -89,7 +89,7 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): for tmp, tmp_options in facility.items(): level = tmp_options['level'] - self.cli_set(base_path + ['global', 'facility', tmp, 'level', level]) + self.cli_set(base_path + ['local', 'facility', tmp, 'level', level]) self.cli_commit() diff --git a/src/conf_mode/system_syslog.py b/src/conf_mode/system_syslog.py index 6f6546fd1..f27c27e0b 100755 --- a/src/conf_mode/system_syslog.py +++ b/src/conf_mode/system_syslog.py @@ -50,8 +50,8 @@ def get_config(config=None): if tmp: syslog.update({'restart_required': {}}) syslog = conf.merge_defaults(syslog, recursive=True) - if syslog.from_defaults(['global']): - del syslog['global'] + if syslog.from_defaults(['local']): + del syslog['local'] if 'preserve_fqdn' in syslog: if conf.exists(['system', 'host-name']): diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index 9716e9e90..2ccd4b9c0 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -37,8 +37,9 @@ def migrate(config: ConfigTree) -> None: # Move "global preserve-fqdn" one CLI level up, as it relates to all # logging targets (console, global and remote) - if config.exists(base + ['global', 'preserve-fqdn']): - config.delete(base + ['global', 'preserve-fqdn']) + preserve_fqdn_base = base + ['global', 'preserve-fqdn'] + if config.exists(preserve_fqdn_base): + config.delete(preserve_fqdn_base) config.set(base + ['preserve-fqdn']) # Move "global marker" one CLI level up, as it relates to all @@ -48,6 +49,11 @@ def migrate(config: ConfigTree) -> None: config.copy(marker_base, base + ['marker']) config.delete(marker_base) + # Rename "global" -> "local" as this describes what is logged locally + # on the router to a file on the filesystem + if config.exists(base + ['global']): + config.rename(base + ['global'], 'local') + # Rename host x.x.x.x -> remote x.x.x.x if config.exists(base + ['host']): config.set(base + ['remote']) -- cgit v1.2.3 From 5a7a9f3a20e19a52572ce1b9b214528b6ce958ce Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Sat, 18 Jan 2025 20:28:16 +0100 Subject: syslog: T6989: add possibility to define VRF per remote Rsyslog supports individual VRFs per omfwd remote entry - so we should support this, too. --- data/templates/rsyslog/rsyslog.conf.j2 | 10 ++--- interface-definitions/system_syslog.xml.in | 14 +++--- smoketest/config-tests/basic-syslog | 25 +++++++++++ smoketest/configs/basic-syslog | 70 +++++++++++++++++++++++++++++ smoketest/scripts/cli/test_system_syslog.py | 65 ++++++++++++++++++++++++++- src/conf_mode/system_syslog.py | 46 +++++++++---------- src/migration-scripts/system/28-to-29 | 7 +++ 7 files changed, 201 insertions(+), 36 deletions(-) create mode 100644 smoketest/config-tests/basic-syslog create mode 100644 smoketest/configs/basic-syslog (limited to 'src/migration-scripts/system') diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index daaafa6d1..45742b073 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -106,12 +106,11 @@ if prifilt("{{ tmp | join(',') }}") then { template="SyslogProtocol23Format" {% endif %} TCP_Framing="{{ 'octed-counted' if remote_options.format.octet_counted is vyos_defined else 'traditional' }}" -{% if source_address is vyos_defined %} - # Sender IP address - Address="{{ source_address }}" +{% if remote_options.source_address is vyos_defined %} + Address="{{ remote_options.source_address }}" {% endif %} -{% if vrf is vyos_defined %} - Device="{{ vrf }}" +{% if remote_options.vrf is vyos_defined %} + Device="{{ remote_options.vrf }}" {% endif %} ) } @@ -121,3 +120,4 @@ if prifilt("{{ tmp | join(',') }}") then { # Include all configuration files in /etc/rsyslog.d/ include(file="/etc/rsyslog.d/*.conf") + diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index 0dbf5d497..91fb680e0 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -38,11 +38,6 @@ - #include - - 514 - - #include #include @@ -63,6 +58,13 @@ + #include + + 514 + + #include + #include + #include @@ -100,8 +102,6 @@ - #include - #include diff --git a/smoketest/config-tests/basic-syslog b/smoketest/config-tests/basic-syslog new file mode 100644 index 000000000..349d642fd --- /dev/null +++ b/smoketest/config-tests/basic-syslog @@ -0,0 +1,25 @@ +set interfaces ethernet eth0 duplex 'auto' +set interfaces ethernet eth0 speed 'auto' +set interfaces ethernet eth1 address '172.16.33.154/24' +set interfaces ethernet eth1 duplex 'auto' +set interfaces ethernet eth1 speed 'auto' +set interfaces ethernet eth1 vrf 'red' +set system console device ttyS0 speed '115200' +set system domain-name 'vyos-ci-test.net' +set system host-name 'vyos' +set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' +set system login user vyos authentication plaintext-password '' +set system syslog local facility all level 'info' +set system syslog local facility local7 level 'debug' +set system syslog marker interval '999' +set system syslog preserve-fqdn +set system syslog remote syslog01.vyos.net facility local7 level 'notice' +set system syslog remote syslog01.vyos.net port '8000' +set system syslog remote syslog01.vyos.net vrf 'red' +set system syslog remote syslog02.vyos.net facility all level 'debug' +set system syslog remote syslog02.vyos.net format include-timezone +set system syslog remote syslog02.vyos.net format octet-counted +set system syslog remote syslog02.vyos.net port '8001' +set system syslog remote syslog02.vyos.net protocol 'tcp' +set system syslog remote syslog02.vyos.net vrf 'red' +set vrf name red table '12321' diff --git a/smoketest/configs/basic-syslog b/smoketest/configs/basic-syslog new file mode 100644 index 000000000..9336b73bc --- /dev/null +++ b/smoketest/configs/basic-syslog @@ -0,0 +1,70 @@ +interfaces { + ethernet eth0 { + duplex "auto" + speed "auto" + } + ethernet eth1 { + address 172.16.33.154/24 + duplex auto + speed auto + vrf red + } +} +system { + console { + device ttyS0 { + speed 115200 + } + } + domain-name vyos-ci-test.net + host-name vyos + login { + user vyos { + authentication { + encrypted-password $6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0 + plaintext-password "" + } + } + } + syslog { + global { + facility all { + level info + } + facility local7 { + level debug + } + marker { + interval 999 + } + preserve-fqdn + } + host syslog01.vyos.net { + facility local7 { + level notice + } + port 8000 + } + host syslog02.vyos.net { + facility all { + level debug + } + format { + include-timezone + octet-counted + } + protocol tcp + port 8001 + } + vrf red + } +} +vrf { + name red { + table 12321 + } +} + +// Warning: Do not remove the following line. +// vyos-config-version: "bgp@5:broadcast-relay@1:cluster@2:config-management@1:conntrack@5:conntrack-sync@2:container@2:dhcp-relay@2:dhcp-server@8:dhcpv6-server@1:dns-dynamic@4:dns-forwarding@4:firewall@15:flow-accounting@1:https@6:ids@1:interfaces@32:ipoe-server@3:ipsec@13:isis@3:l2tp@9:lldp@2:mdns@1:monitoring@1:nat@8:nat66@3:ntp@3:openconnect@3:ospf@2:pim@1:policy@8:pppoe-server@10:pptp@5:qos@2:quagga@11:reverse-proxy@1:rip@1:rpki@2:salt@1:snmp@3:ssh@2:sstp@6:system@27:vrf@3:vrrp@4:vyos-accel-ppp@2:wanloadbalance@3:webproxy@2" +// Release version: 1.4.0 diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index 5a09fab18..bf6d3134d 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -import re import unittest from base_vyostest_shim import VyOSUnitTestSHIM @@ -47,6 +46,7 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): # ensure we can also run this test on a live system - so lets clean # out the current configuration :) cls.cli_delete(cls, base_path) + cls.cli_delete(cls, ['vrf']) def tearDown(self): # Check for running process @@ -204,5 +204,68 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): else: self.assertIn( ' TCP_Framing="traditional"', config) + def test_vrf_source_address(self): + rhosts = { + '169.254.0.10': { }, + '169.254.0.11': { + 'vrf': {'name' : 'red', 'table' : '12321'}, + 'source_address' : '169.254.0.11', + }, + '169.254.0.12': { + 'vrf': {'name' : 'green', 'table' : '12322'}, + 'source_address' : '169.254.0.12', + }, + '169.254.0.13': { + 'vrf': {'name' : 'blue', 'table' : '12323'}, + 'source_address' : '169.254.0.13', + }, + } + + for remote, remote_options in rhosts.items(): + remote_base = base_path + ['remote', remote] + self.cli_set(remote_base + ['facility', 'all']) + + vrf = None + if 'vrf' in remote_options: + vrf = remote_options['vrf']['name'] + self.cli_set(['vrf', 'name', vrf, 'table', remote_options['vrf']['table']]) + self.cli_set(remote_base + ['vrf', vrf]) + + if 'source_address' in remote_options: + source_address = remote_options['source_address'] + self.cli_set(remote_base + ['source-address', source_address]) + + idx = source_address.split('.')[-1] + self.cli_set(['interfaces', 'dummy', f'dum{idx}', 'address', f'{source_address}/32']) + if vrf: + self.cli_set(['interfaces', 'dummy', f'dum{idx}', 'vrf', vrf]) + + + self.cli_commit() + config = read_file(RSYSLOG_CONF) + + for remote, remote_options in rhosts.items(): + config = get_config(f'# Remote syslog to {remote}') + + self.assertIn(f'target="{remote}"', config) + if 'vrf' in remote_options: + vrf = remote_options['vrf']['name'] + self.assertIn(f'Device="{vrf}"', config) + + if 'source_address' in remote_options: + source_address = remote_options['source_address'] + self.assertIn(f'Address="{source_address}"', config) + + # Cleanup VRF/Dummy interfaces + for remote, remote_options in rhosts.items(): + if 'vrf' in remote_options: + vrf = remote_options['vrf']['name'] + self.cli_delete(['vrf', 'name', vrf]) + + if 'source_address' in remote_options: + source_address = remote_options['source_address'] + idx = source_address.split('.')[-1] + self.cli_delete(['interfaces', 'dummy', f'dum{idx}']) + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/src/conf_mode/system_syslog.py b/src/conf_mode/system_syslog.py index f27c27e0b..00c571ea9 100755 --- a/src/conf_mode/system_syslog.py +++ b/src/conf_mode/system_syslog.py @@ -20,11 +20,12 @@ from sys import exit from vyos.base import Warning from vyos.config import Config -from vyos.configdict import is_node_changed from vyos.configverify import verify_vrf from vyos.utils.network import is_addr_assigned from vyos.utils.process import call from vyos.template import render +from vyos.template import is_ipv4 +from vyos.template import is_ipv6 from vyos import ConfigError from vyos import airbag airbag.enable() @@ -46,9 +47,6 @@ def get_config(config=None): syslog.update({ 'logrotate' : logrotate_conf }) - tmp = is_node_changed(conf, base + ['vrf']) - if tmp: syslog.update({'restart_required': {}}) - syslog = conf.merge_defaults(syslog, recursive=True) if syslog.from_defaults(['local']): del syslog['local'] @@ -74,19 +72,26 @@ def verify(syslog): Warning('No "system domain-name" defined - cannot set syslog FQDN!') if 'remote' in syslog: - for host, host_options in syslog['remote'].items(): - if 'protocol' in host_options and host_options['protocol'] == 'udp': - if 'format' in host_options and 'octet_counted' in host_options['format']: - Warning(f'Syslog UDP transport for "{host}" should not use octet-counted format!') - - verify_vrf(syslog) - - if 'source_address' in syslog: - syslog_vrf = None - if 'vrf' in syslog: - syslog_vrf = syslog['vrf'] - if not is_addr_assigned(syslog['source_address'], syslog_vrf): - raise ConfigError('No interface with given address specified!') + for remote, remote_options in syslog['remote'].items(): + if 'protocol' in remote_options and remote_options['protocol'] == 'udp': + if 'format' in remote_options and 'octet_counted' in remote_options['format']: + Warning(f'Syslog UDP transport for "{remote}" should not use octet-counted format!') + + if 'vrf' in remote_options: + verify_vrf(remote_options) + + if 'source_address' in remote_options: + vrf = None + if 'vrf' in remote_options: + vrf = remote_options['vrf'] + if not is_addr_assigned(remote_options['source_address'], vrf): + raise ConfigError('No interface with given address specified!') + + source_address = remote_options['source_address'] + if ((is_ipv4(remote) and is_ipv6(source_address)) or + (is_ipv6(remote) and is_ipv4(source_address))): + raise ConfigError(f'Source-address "{source_address}" does not match '\ + f'address-family of remote "{remote}"!') def generate(syslog): if not syslog: @@ -108,12 +113,7 @@ def apply(syslog): call(f'systemctl stop {systemd_service} {systemd_socket}') return None - # we need to restart the service if e.g. the VRF name changed - systemd_action = 'reload-or-restart' - if 'restart_required' in syslog: - systemd_action = 'restart' - - call(f'systemctl {systemd_action} {systemd_service}') + call(f'systemctl reload-or-restart {systemd_service}') return None if __name__ == '__main__': diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index 2ccd4b9c0..ccf7056c4 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -54,6 +54,11 @@ def migrate(config: ConfigTree) -> None: if config.exists(base + ['global']): config.rename(base + ['global'], 'local') + vrf = '' + if config.exists(base + ['vrf']): + vrf = config.return_value(base + ['vrf']) + config.delete(base + ['vrf']) + # Rename host x.x.x.x -> remote x.x.x.x if config.exists(base + ['host']): config.set(base + ['remote']) @@ -61,4 +66,6 @@ def migrate(config: ConfigTree) -> None: for remote in config.list_nodes(base + ['host']): config.copy(base + ['host', remote], base + ['remote', remote]) config.set_tag(base + ['remote']) + if vrf: + config.set(base + ['remote', remote, 'vrf'], value=vrf) config.delete(base + ['host']) -- cgit v1.2.3 From 1478516ae437f19ebeb7d6ff9b83dd74f8e76758 Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Sat, 28 Jun 2025 20:51:21 +0200 Subject: T7591: remove copyright years from source files The legal team says years are not necessary so we can go ahead with it, since it will simplify backporting. Automatically removed using: git ls-files | grep -v libvyosconfig | xargs sed -i -E \ 's/^# Copyright (19|20)[0-9]{2}(-[0-9]{4})? VyOS maintainers.*/# Copyright VyOS maintainers and contributors /g' In addition we will error-out during "make" if someone re-adds a legacy copyright notice --- Makefile | 9 ++++++++- debian/copyright | 6 +++--- python/vyos/accel_ppp.py | 2 +- python/vyos/accel_ppp_util.py | 2 +- python/vyos/airbag.py | 2 +- python/vyos/base.py | 2 +- python/vyos/component_version.py | 2 +- python/vyos/compose_config.py | 2 +- python/vyos/config.py | 2 +- python/vyos/config_mgmt.py | 2 +- python/vyos/configdep.py | 2 +- python/vyos/configdict.py | 2 +- python/vyos/configdiff.py | 2 +- python/vyos/configquery.py | 2 +- python/vyos/configsession.py | 2 +- python/vyos/configsource.py | 2 +- python/vyos/configtree.py | 2 +- python/vyos/configverify.py | 2 +- python/vyos/debug.py | 2 +- python/vyos/defaults.py | 2 +- python/vyos/ethtool.py | 2 +- python/vyos/firewall.py | 2 +- python/vyos/frrender.py | 2 +- python/vyos/ifconfig/__init__.py | 2 +- python/vyos/ifconfig/afi.py | 2 +- python/vyos/ifconfig/bond.py | 2 +- python/vyos/ifconfig/bridge.py | 2 +- python/vyos/ifconfig/control.py | 2 +- python/vyos/ifconfig/dummy.py | 2 +- python/vyos/ifconfig/ethernet.py | 2 +- python/vyos/ifconfig/geneve.py | 2 +- python/vyos/ifconfig/input.py | 2 +- python/vyos/ifconfig/interface.py | 2 +- python/vyos/ifconfig/l2tpv3.py | 2 +- python/vyos/ifconfig/loopback.py | 2 +- python/vyos/ifconfig/macsec.py | 2 +- python/vyos/ifconfig/macvlan.py | 2 +- python/vyos/ifconfig/operational.py | 2 +- python/vyos/ifconfig/pppoe.py | 2 +- python/vyos/ifconfig/section.py | 2 +- python/vyos/ifconfig/sstpc.py | 2 +- python/vyos/ifconfig/tunnel.py | 2 +- python/vyos/ifconfig/veth.py | 2 +- python/vyos/ifconfig/vrrp.py | 2 +- python/vyos/ifconfig/vti.py | 2 +- python/vyos/ifconfig/vtun.py | 2 +- python/vyos/ifconfig/vxlan.py | 2 +- python/vyos/ifconfig/wireguard.py | 2 +- python/vyos/ifconfig/wireless.py | 2 +- python/vyos/ifconfig/wwan.py | 2 +- python/vyos/iflag.py | 2 +- python/vyos/include/__init__.py | 2 +- python/vyos/include/uapi/__init__.py | 2 +- python/vyos/include/uapi/linux/__init__.py | 2 +- python/vyos/include/uapi/linux/fib_rules.py | 2 +- python/vyos/include/uapi/linux/icmpv6.py | 2 +- python/vyos/include/uapi/linux/if_arp.py | 2 +- python/vyos/include/uapi/linux/lwtunnel.py | 2 +- python/vyos/include/uapi/linux/neighbour.py | 2 +- python/vyos/include/uapi/linux/rtnetlink.py | 2 +- python/vyos/initialsetup.py | 2 +- python/vyos/ioctl.py | 2 +- python/vyos/ipsec.py | 2 +- python/vyos/kea.py | 2 +- python/vyos/limericks.py | 2 +- python/vyos/load_config.py | 2 +- python/vyos/logger.py | 2 +- python/vyos/migrate.py | 2 +- python/vyos/nat.py | 2 +- python/vyos/opmode.py | 2 +- python/vyos/pki.py | 2 +- python/vyos/priority.py | 2 +- python/vyos/progressbar.py | 2 +- python/vyos/proto/generate_dataclass.py | 2 +- python/vyos/proto/vyconf_client.py | 2 +- python/vyos/qos/__init__.py | 2 +- python/vyos/qos/base.py | 2 +- python/vyos/qos/cake.py | 2 +- python/vyos/qos/droptail.py | 2 +- python/vyos/qos/fairqueue.py | 2 +- python/vyos/qos/fqcodel.py | 2 +- python/vyos/qos/limiter.py | 2 +- python/vyos/qos/netem.py | 2 +- python/vyos/qos/priority.py | 2 +- python/vyos/qos/randomdetect.py | 2 +- python/vyos/qos/ratelimiter.py | 2 +- python/vyos/qos/roundrobin.py | 2 +- python/vyos/qos/trafficshaper.py | 2 +- python/vyos/raid.py | 2 +- python/vyos/remote.py | 2 +- python/vyos/snmpv3_hashgen.py | 2 +- python/vyos/system/__init__.py | 2 +- python/vyos/system/compat.py | 2 +- python/vyos/system/disk.py | 2 +- python/vyos/system/grub.py | 2 +- python/vyos/system/grub_util.py | 2 +- python/vyos/system/image.py | 2 +- python/vyos/system/raid.py | 2 +- python/vyos/template.py | 2 +- python/vyos/tpm.py | 2 +- python/vyos/utils/__init__.py | 2 +- python/vyos/utils/assertion.py | 2 +- python/vyos/utils/auth.py | 2 +- python/vyos/utils/backend.py | 2 +- python/vyos/utils/boot.py | 2 +- python/vyos/utils/commit.py | 2 +- python/vyos/utils/config.py | 2 +- python/vyos/utils/configfs.py | 2 +- python/vyos/utils/convert.py | 2 +- python/vyos/utils/cpu.py | 2 +- python/vyos/utils/dict.py | 2 +- python/vyos/utils/disk.py | 2 +- python/vyos/utils/error.py | 2 +- python/vyos/utils/file.py | 2 +- python/vyos/utils/io.py | 2 +- python/vyos/utils/kernel.py | 2 +- python/vyos/utils/list.py | 2 +- python/vyos/utils/locking.py | 2 +- python/vyos/utils/misc.py | 2 +- python/vyos/utils/network.py | 2 +- python/vyos/utils/permission.py | 2 +- python/vyos/utils/process.py | 2 +- python/vyos/utils/serial.py | 2 +- python/vyos/utils/session.py | 2 +- python/vyos/utils/strip_config.py | 2 +- python/vyos/utils/system.py | 2 +- python/vyos/utils/vti_updown_db.py | 2 +- python/vyos/version.py | 2 +- python/vyos/vyconf_session.py | 2 +- python/vyos/wanloadbalance.py | 2 +- python/vyos/xml_ref/__init__.py | 2 +- python/vyos/xml_ref/definition.py | 2 +- python/vyos/xml_ref/generate_cache.py | 2 +- python/vyos/xml_ref/generate_op_cache.py | 2 +- python/vyos/xml_ref/op_definition.py | 2 +- python/vyos/xml_ref/update_cache.py | 2 +- schema/interface_definition.rnc | 2 +- schema/interface_definition.rng | 10 +++++----- schema/op-mode-definition.rnc | 2 +- schema/op-mode-definition.rng | 10 +++++----- scripts/build-command-op-templates | 2 +- scripts/build-command-templates | 2 +- scripts/generate-configd-include-json.py | 2 +- scripts/override-default | 2 +- scripts/transclude-template | 2 +- smoketest/bin/vyos-configtest | 2 +- smoketest/bin/vyos-configtest-pki | 2 +- smoketest/bin/vyos-smoketest | 2 +- smoketest/scripts/cli/base_accel_ppp_test.py | 2 +- smoketest/scripts/cli/base_interfaces_test.py | 2 +- smoketest/scripts/cli/base_vyostest_shim.py | 2 +- smoketest/scripts/cli/test_backslash_escape.py | 2 +- smoketest/scripts/cli/test_cgnat.py | 2 +- smoketest/scripts/cli/test_config_dependency.py | 2 +- smoketest/scripts/cli/test_configd_init.py | 2 +- smoketest/scripts/cli/test_container.py | 2 +- smoketest/scripts/cli/test_firewall.py | 2 +- smoketest/scripts/cli/test_high-availability_virtual-server.py | 2 +- smoketest/scripts/cli/test_high-availability_vrrp.py | 2 +- smoketest/scripts/cli/test_interfaces_bonding.py | 2 +- smoketest/scripts/cli/test_interfaces_bridge.py | 2 +- smoketest/scripts/cli/test_interfaces_dummy.py | 2 +- smoketest/scripts/cli/test_interfaces_ethernet.py | 2 +- smoketest/scripts/cli/test_interfaces_geneve.py | 2 +- smoketest/scripts/cli/test_interfaces_input.py | 2 +- smoketest/scripts/cli/test_interfaces_l2tpv3.py | 2 +- smoketest/scripts/cli/test_interfaces_loopback.py | 2 +- smoketest/scripts/cli/test_interfaces_macsec.py | 2 +- smoketest/scripts/cli/test_interfaces_openvpn.py | 2 +- smoketest/scripts/cli/test_interfaces_pppoe.py | 2 +- smoketest/scripts/cli/test_interfaces_pseudo-ethernet.py | 2 +- smoketest/scripts/cli/test_interfaces_tunnel.py | 2 +- smoketest/scripts/cli/test_interfaces_virtual-ethernet.py | 2 +- smoketest/scripts/cli/test_interfaces_vti.py | 2 +- smoketest/scripts/cli/test_interfaces_vxlan.py | 2 +- smoketest/scripts/cli/test_interfaces_wireguard.py | 2 +- smoketest/scripts/cli/test_interfaces_wireless.py | 2 +- smoketest/scripts/cli/test_load-balancing_haproxy.py | 2 +- smoketest/scripts/cli/test_load-balancing_wan.py | 2 +- smoketest/scripts/cli/test_nat.py | 2 +- smoketest/scripts/cli/test_nat64.py | 2 +- smoketest/scripts/cli/test_nat66.py | 2 +- smoketest/scripts/cli/test_netns.py | 2 +- smoketest/scripts/cli/test_op-mode_show.py | 2 +- smoketest/scripts/cli/test_pki.py | 2 +- smoketest/scripts/cli/test_policy.py | 2 +- smoketest/scripts/cli/test_policy_local-route.py | 2 +- smoketest/scripts/cli/test_policy_route.py | 2 +- smoketest/scripts/cli/test_protocols_babel.py | 2 +- smoketest/scripts/cli/test_protocols_bfd.py | 2 +- smoketest/scripts/cli/test_protocols_bgp.py | 2 +- smoketest/scripts/cli/test_protocols_igmp-proxy.py | 2 +- smoketest/scripts/cli/test_protocols_isis.py | 2 +- smoketest/scripts/cli/test_protocols_mpls.py | 2 +- smoketest/scripts/cli/test_protocols_nhrp.py | 2 +- smoketest/scripts/cli/test_protocols_openfabric.py | 2 +- smoketest/scripts/cli/test_protocols_ospf.py | 2 +- smoketest/scripts/cli/test_protocols_ospfv3.py | 2 +- smoketest/scripts/cli/test_protocols_pim.py | 2 +- smoketest/scripts/cli/test_protocols_pim6.py | 2 +- smoketest/scripts/cli/test_protocols_rip.py | 2 +- smoketest/scripts/cli/test_protocols_ripng.py | 2 +- smoketest/scripts/cli/test_protocols_rpki.py | 2 +- smoketest/scripts/cli/test_protocols_segment-routing.py | 2 +- smoketest/scripts/cli/test_protocols_static.py | 2 +- smoketest/scripts/cli/test_protocols_static_arp.py | 2 +- smoketest/scripts/cli/test_qos.py | 2 +- smoketest/scripts/cli/test_service_broadcast-relay.py | 2 +- smoketest/scripts/cli/test_service_dhcp-relay.py | 2 +- smoketest/scripts/cli/test_service_dhcp-server.py | 2 +- smoketest/scripts/cli/test_service_dhcpv6-relay.py | 2 +- smoketest/scripts/cli/test_service_dhcpv6-server.py | 2 +- smoketest/scripts/cli/test_service_dns_dynamic.py | 2 +- smoketest/scripts/cli/test_service_dns_forwarding.py | 2 +- smoketest/scripts/cli/test_service_https.py | 2 +- smoketest/scripts/cli/test_service_ipoe-server.py | 2 +- smoketest/scripts/cli/test_service_lldp.py | 2 +- smoketest/scripts/cli/test_service_mdns_repeater.py | 2 +- smoketest/scripts/cli/test_service_monitoring_network_event.py | 2 +- smoketest/scripts/cli/test_service_monitoring_prometheus.py | 2 +- smoketest/scripts/cli/test_service_monitoring_telegraf.py | 2 +- smoketest/scripts/cli/test_service_monitoring_zabbix-agent.py | 2 +- smoketest/scripts/cli/test_service_ndp-proxy.py | 2 +- smoketest/scripts/cli/test_service_ntp.py | 2 +- smoketest/scripts/cli/test_service_pppoe-server.py | 2 +- smoketest/scripts/cli/test_service_router-advert.py | 2 +- smoketest/scripts/cli/test_service_salt-minion.py | 2 +- smoketest/scripts/cli/test_service_snmp.py | 2 +- smoketest/scripts/cli/test_service_ssh.py | 2 +- smoketest/scripts/cli/test_service_stunnel.py | 2 +- smoketest/scripts/cli/test_service_tftp-server.py | 2 +- smoketest/scripts/cli/test_service_webproxy.py | 2 +- smoketest/scripts/cli/test_system_acceleration_qat.py | 2 +- smoketest/scripts/cli/test_system_conntrack.py | 2 +- smoketest/scripts/cli/test_system_flow-accounting.py | 2 +- smoketest/scripts/cli/test_system_frr.py | 2 +- smoketest/scripts/cli/test_system_ip.py | 2 +- smoketest/scripts/cli/test_system_ipv6.py | 2 +- smoketest/scripts/cli/test_system_login.py | 2 +- smoketest/scripts/cli/test_system_logs.py | 2 +- smoketest/scripts/cli/test_system_option.py | 2 +- smoketest/scripts/cli/test_system_resolvconf.py | 2 +- smoketest/scripts/cli/test_system_sflow.py | 2 +- smoketest/scripts/cli/test_system_syslog.py | 2 +- smoketest/scripts/cli/test_vpn_ipsec.py | 2 +- smoketest/scripts/cli/test_vpn_l2tp.py | 2 +- smoketest/scripts/cli/test_vpn_openconnect.py | 2 +- smoketest/scripts/cli/test_vpn_pptp.py | 2 +- smoketest/scripts/cli/test_vpn_sstp.py | 2 +- smoketest/scripts/cli/test_vrf.py | 2 +- smoketest/scripts/system/test_config_mount.py | 2 +- smoketest/scripts/system/test_iproute2.py | 2 +- smoketest/scripts/system/test_kernel_options.py | 2 +- smoketest/scripts/system/test_module_load.py | 2 +- src/activation-scripts/20-ethernet_offload.py | 2 +- src/completion/list_bgp_neighbors.sh | 2 +- src/completion/list_container_sysctl_parameters.sh | 2 +- src/completion/list_ddclient_protocols.sh | 2 +- src/completion/list_disks.py | 2 +- src/completion/list_esi.sh | 2 +- src/completion/list_images.py | 2 +- src/completion/list_ipoe.py | 2 +- src/completion/list_ipsec_profile_tunnels.py | 2 +- src/completion/list_login_ttys.py | 2 +- src/completion/list_openconnect_users.py | 2 +- src/completion/list_openvpn_clients.py | 2 +- src/completion/list_openvpn_users.py | 2 +- src/completion/list_sysctl_parameters.sh | 2 +- src/completion/list_vni.sh | 2 +- src/completion/qos/list_traffic_match_group.py | 2 +- src/conf_mode/container.py | 2 +- src/conf_mode/firewall.py | 2 +- src/conf_mode/high-availability.py | 2 +- src/conf_mode/interfaces_bonding.py | 2 +- src/conf_mode/interfaces_bridge.py | 2 +- src/conf_mode/interfaces_dummy.py | 2 +- src/conf_mode/interfaces_ethernet.py | 2 +- src/conf_mode/interfaces_geneve.py | 2 +- src/conf_mode/interfaces_input.py | 2 +- src/conf_mode/interfaces_l2tpv3.py | 2 +- src/conf_mode/interfaces_loopback.py | 2 +- src/conf_mode/interfaces_macsec.py | 2 +- src/conf_mode/interfaces_openvpn.py | 2 +- src/conf_mode/interfaces_pppoe.py | 2 +- src/conf_mode/interfaces_pseudo-ethernet.py | 2 +- src/conf_mode/interfaces_sstpc.py | 2 +- src/conf_mode/interfaces_tunnel.py | 2 +- src/conf_mode/interfaces_virtual-ethernet.py | 2 +- src/conf_mode/interfaces_vti.py | 2 +- src/conf_mode/interfaces_vxlan.py | 2 +- src/conf_mode/interfaces_wireguard.py | 2 +- src/conf_mode/interfaces_wireless.py | 2 +- src/conf_mode/interfaces_wwan.py | 2 +- src/conf_mode/load-balancing_haproxy.py | 2 +- src/conf_mode/load-balancing_wan.py | 2 +- src/conf_mode/nat.py | 2 +- src/conf_mode/nat64.py | 2 +- src/conf_mode/nat66.py | 2 +- src/conf_mode/nat_cgnat.py | 2 +- src/conf_mode/netns.py | 2 +- src/conf_mode/pki.py | 2 +- src/conf_mode/policy.py | 2 +- src/conf_mode/policy_local-route.py | 2 +- src/conf_mode/policy_route.py | 2 +- src/conf_mode/protocols_babel.py | 2 +- src/conf_mode/protocols_bfd.py | 2 +- src/conf_mode/protocols_bgp.py | 2 +- src/conf_mode/protocols_eigrp.py | 2 +- src/conf_mode/protocols_failover.py | 2 +- src/conf_mode/protocols_igmp-proxy.py | 2 +- src/conf_mode/protocols_isis.py | 2 +- src/conf_mode/protocols_mpls.py | 2 +- src/conf_mode/protocols_nhrp.py | 2 +- src/conf_mode/protocols_openfabric.py | 2 +- src/conf_mode/protocols_ospf.py | 2 +- src/conf_mode/protocols_ospfv3.py | 2 +- src/conf_mode/protocols_pim.py | 2 +- src/conf_mode/protocols_pim6.py | 2 +- src/conf_mode/protocols_rip.py | 2 +- src/conf_mode/protocols_ripng.py | 2 +- src/conf_mode/protocols_rpki.py | 2 +- src/conf_mode/protocols_segment-routing.py | 2 +- src/conf_mode/protocols_static.py | 2 +- src/conf_mode/protocols_static_arp.py | 2 +- src/conf_mode/protocols_static_neighbor-proxy.py | 2 +- src/conf_mode/qos.py | 2 +- src/conf_mode/service_aws_glb.py | 2 +- src/conf_mode/service_broadcast-relay.py | 2 +- src/conf_mode/service_config-sync.py | 2 +- src/conf_mode/service_conntrack-sync.py | 2 +- src/conf_mode/service_console-server.py | 2 +- src/conf_mode/service_dhcp-relay.py | 2 +- src/conf_mode/service_dhcp-server.py | 2 +- src/conf_mode/service_dhcpv6-relay.py | 2 +- src/conf_mode/service_dhcpv6-server.py | 2 +- src/conf_mode/service_dns_dynamic.py | 2 +- src/conf_mode/service_dns_forwarding.py | 2 +- src/conf_mode/service_event-handler.py | 2 +- src/conf_mode/service_https.py | 2 +- src/conf_mode/service_ipoe-server.py | 2 +- src/conf_mode/service_lldp.py | 2 +- src/conf_mode/service_mdns_repeater.py | 2 +- src/conf_mode/service_monitoring_network_event.py | 2 +- src/conf_mode/service_monitoring_prometheus.py | 2 +- src/conf_mode/service_monitoring_telegraf.py | 2 +- src/conf_mode/service_monitoring_zabbix-agent.py | 2 +- src/conf_mode/service_ndp-proxy.py | 2 +- src/conf_mode/service_ntp.py | 2 +- src/conf_mode/service_pppoe-server.py | 2 +- src/conf_mode/service_router-advert.py | 2 +- src/conf_mode/service_salt-minion.py | 2 +- src/conf_mode/service_sla.py | 2 +- src/conf_mode/service_snmp.py | 2 +- src/conf_mode/service_ssh.py | 2 +- src/conf_mode/service_stunnel.py | 2 +- src/conf_mode/service_suricata.py | 2 +- src/conf_mode/service_tftp-server.py | 2 +- src/conf_mode/service_webproxy.py | 2 +- src/conf_mode/system_acceleration.py | 2 +- src/conf_mode/system_config-management.py | 2 +- src/conf_mode/system_conntrack.py | 2 +- src/conf_mode/system_console.py | 2 +- src/conf_mode/system_flow-accounting.py | 2 +- src/conf_mode/system_frr.py | 2 +- src/conf_mode/system_host-name.py | 2 +- src/conf_mode/system_ip.py | 2 +- src/conf_mode/system_ipv6.py | 2 +- src/conf_mode/system_lcd.py | 2 +- src/conf_mode/system_login.py | 2 +- src/conf_mode/system_login_banner.py | 2 +- src/conf_mode/system_logs.py | 2 +- src/conf_mode/system_option.py | 2 +- src/conf_mode/system_proxy.py | 2 +- src/conf_mode/system_sflow.py | 2 +- src/conf_mode/system_sysctl.py | 2 +- src/conf_mode/system_syslog.py | 2 +- src/conf_mode/system_task-scheduler.py | 2 +- src/conf_mode/system_timezone.py | 2 +- src/conf_mode/system_update-check.py | 2 +- src/conf_mode/system_wireless.py | 2 +- src/conf_mode/vpn_ipsec.py | 2 +- src/conf_mode/vpn_l2tp.py | 2 +- src/conf_mode/vpn_openconnect.py | 2 +- src/conf_mode/vpn_pptp.py | 2 +- src/conf_mode/vpn_sstp.py | 2 +- src/conf_mode/vrf.py | 2 +- src/etc/dhcp/dhclient-exit-hooks.d/99-ipsec-dhclient-hook | 2 +- src/etc/ipsec.d/vti-up-down | 2 +- src/etc/netplug/netplug | 2 +- src/etc/netplug/vyos-netplug-dhcp-client | 2 +- src/etc/ppp/ip-up.d/96-vyos-sstpc-callback | 2 +- src/etc/ppp/ip-up.d/99-vyos-pppoe-callback | 2 +- src/etc/ppp/ip-up.d/99-vyos-pppoe-wlb | 2 +- src/etc/telegraf/custom_scripts/vyos_services_input_filter.py | 2 +- .../vmware-tools/scripts/resume-vm-default.d/ether-resume.py | 2 +- src/helpers/add-system-version.py | 2 +- src/helpers/config_dependency.py | 2 +- src/helpers/geoip-update.py | 2 +- src/helpers/priority.py | 2 +- src/helpers/read-saved-value.py | 2 +- src/helpers/reset_section.py | 2 +- src/helpers/run-config-activation.py | 2 +- src/helpers/run-config-migration.py | 2 +- src/helpers/set_vyconf_backend.py | 2 +- src/helpers/show_commit_data.py | 2 +- src/helpers/strip-private.py | 2 +- src/helpers/teardown-config-session.py | 2 +- src/helpers/test_commit.py | 2 +- src/helpers/vyconf_cli.py | 2 +- src/helpers/vyos-boot-config-loader.py | 2 +- src/helpers/vyos-check-wwan.py | 2 +- src/helpers/vyos-config-encrypt.py | 2 +- src/helpers/vyos-failover.py | 2 +- src/helpers/vyos-interface-rescan.py | 2 +- src/helpers/vyos-load-balancer.py | 2 +- src/helpers/vyos-load-config.py | 2 +- src/helpers/vyos-merge-config.py | 2 +- src/helpers/vyos-save-config.py | 2 +- src/helpers/vyos_config_sync.py | 2 +- src/helpers/vyos_net_name | 2 +- src/init/vyos-router | 2 +- src/migration-scripts/bgp/0-to-1 | 2 +- src/migration-scripts/bgp/1-to-2 | 2 +- src/migration-scripts/bgp/2-to-3 | 2 +- src/migration-scripts/bgp/3-to-4 | 2 +- src/migration-scripts/bgp/4-to-5 | 2 +- src/migration-scripts/bgp/5-to-6 | 2 +- src/migration-scripts/cluster/1-to-2 | 2 +- src/migration-scripts/config-management/0-to-1 | 2 +- src/migration-scripts/conntrack-sync/1-to-2 | 2 +- src/migration-scripts/conntrack/1-to-2 | 2 +- src/migration-scripts/conntrack/2-to-3 | 2 +- src/migration-scripts/conntrack/3-to-4 | 2 +- src/migration-scripts/conntrack/4-to-5 | 2 +- src/migration-scripts/conntrack/5-to-6 | 2 +- src/migration-scripts/container/0-to-1 | 2 +- src/migration-scripts/container/1-to-2 | 2 +- src/migration-scripts/container/2-to-3 | 2 +- src/migration-scripts/dhcp-relay/1-to-2 | 2 +- src/migration-scripts/dhcp-server/10-to-11 | 2 +- src/migration-scripts/dhcp-server/4-to-5 | 2 +- src/migration-scripts/dhcp-server/5-to-6 | 2 +- src/migration-scripts/dhcp-server/6-to-7 | 2 +- src/migration-scripts/dhcp-server/7-to-8 | 2 +- src/migration-scripts/dhcp-server/8-to-9 | 2 +- src/migration-scripts/dhcp-server/9-to-10 | 2 +- src/migration-scripts/dhcpv6-server/0-to-1 | 2 +- src/migration-scripts/dhcpv6-server/1-to-2 | 2 +- src/migration-scripts/dhcpv6-server/2-to-3 | 2 +- src/migration-scripts/dhcpv6-server/3-to-4 | 2 +- src/migration-scripts/dhcpv6-server/4-to-5 | 2 +- src/migration-scripts/dhcpv6-server/5-to-6 | 2 +- src/migration-scripts/dns-dynamic/0-to-1 | 2 +- src/migration-scripts/dns-dynamic/1-to-2 | 2 +- src/migration-scripts/dns-dynamic/2-to-3 | 2 +- src/migration-scripts/dns-dynamic/3-to-4 | 2 +- src/migration-scripts/dns-forwarding/0-to-1 | 2 +- src/migration-scripts/dns-forwarding/1-to-2 | 2 +- src/migration-scripts/dns-forwarding/2-to-3 | 2 +- src/migration-scripts/dns-forwarding/3-to-4 | 2 +- src/migration-scripts/firewall/10-to-11 | 2 +- src/migration-scripts/firewall/11-to-12 | 2 +- src/migration-scripts/firewall/12-to-13 | 2 +- src/migration-scripts/firewall/13-to-14 | 2 +- src/migration-scripts/firewall/14-to-15 | 2 +- src/migration-scripts/firewall/15-to-16 | 2 +- src/migration-scripts/firewall/16-to-17 | 2 +- src/migration-scripts/firewall/17-to-18 | 2 +- src/migration-scripts/firewall/18-to-19 | 2 +- src/migration-scripts/firewall/5-to-6 | 2 +- src/migration-scripts/firewall/6-to-7 | 2 +- src/migration-scripts/firewall/7-to-8 | 2 +- src/migration-scripts/firewall/8-to-9 | 2 +- src/migration-scripts/firewall/9-to-10 | 2 +- src/migration-scripts/flow-accounting/0-to-1 | 2 +- src/migration-scripts/flow-accounting/1-to-2 | 2 +- src/migration-scripts/https/0-to-1 | 2 +- src/migration-scripts/https/1-to-2 | 2 +- src/migration-scripts/https/2-to-3 | 2 +- src/migration-scripts/https/3-to-4 | 2 +- src/migration-scripts/https/4-to-5 | 2 +- src/migration-scripts/https/5-to-6 | 2 +- src/migration-scripts/https/6-to-7 | 2 +- src/migration-scripts/ids/0-to-1 | 2 +- src/migration-scripts/ids/1-to-2 | 2 +- src/migration-scripts/interfaces/0-to-1 | 2 +- src/migration-scripts/interfaces/1-to-2 | 2 +- src/migration-scripts/interfaces/10-to-11 | 2 +- src/migration-scripts/interfaces/11-to-12 | 2 +- src/migration-scripts/interfaces/12-to-13 | 2 +- src/migration-scripts/interfaces/13-to-14 | 2 +- src/migration-scripts/interfaces/14-to-15 | 2 +- src/migration-scripts/interfaces/15-to-16 | 2 +- src/migration-scripts/interfaces/16-to-17 | 2 +- src/migration-scripts/interfaces/17-to-18 | 2 +- src/migration-scripts/interfaces/18-to-19 | 2 +- src/migration-scripts/interfaces/19-to-20 | 2 +- src/migration-scripts/interfaces/2-to-3 | 2 +- src/migration-scripts/interfaces/20-to-21 | 2 +- src/migration-scripts/interfaces/21-to-22 | 2 +- src/migration-scripts/interfaces/22-to-23 | 2 +- src/migration-scripts/interfaces/23-to-24 | 2 +- src/migration-scripts/interfaces/24-to-25 | 2 +- src/migration-scripts/interfaces/25-to-26 | 2 +- src/migration-scripts/interfaces/26-to-27 | 2 +- src/migration-scripts/interfaces/27-to-28 | 2 +- src/migration-scripts/interfaces/28-to-29 | 2 +- src/migration-scripts/interfaces/29-to-30 | 2 +- src/migration-scripts/interfaces/3-to-4 | 2 +- src/migration-scripts/interfaces/30-to-31 | 2 +- src/migration-scripts/interfaces/31-to-32 | 2 +- src/migration-scripts/interfaces/32-to-33 | 2 +- src/migration-scripts/interfaces/4-to-5 | 2 +- src/migration-scripts/interfaces/5-to-6 | 2 +- src/migration-scripts/interfaces/6-to-7 | 2 +- src/migration-scripts/interfaces/7-to-8 | 2 +- src/migration-scripts/interfaces/8-to-9 | 2 +- src/migration-scripts/interfaces/9-to-10 | 2 +- src/migration-scripts/ipoe-server/1-to-2 | 2 +- src/migration-scripts/ipoe-server/2-to-3 | 2 +- src/migration-scripts/ipoe-server/3-to-4 | 2 +- src/migration-scripts/ipsec/10-to-11 | 2 +- src/migration-scripts/ipsec/11-to-12 | 2 +- src/migration-scripts/ipsec/12-to-13 | 2 +- src/migration-scripts/ipsec/4-to-5 | 2 +- src/migration-scripts/ipsec/5-to-6 | 2 +- src/migration-scripts/ipsec/6-to-7 | 2 +- src/migration-scripts/ipsec/7-to-8 | 2 +- src/migration-scripts/ipsec/8-to-9 | 2 +- src/migration-scripts/ipsec/9-to-10 | 2 +- src/migration-scripts/isis/0-to-1 | 2 +- src/migration-scripts/isis/1-to-2 | 2 +- src/migration-scripts/isis/2-to-3 | 2 +- src/migration-scripts/l2tp/0-to-1 | 2 +- src/migration-scripts/l2tp/1-to-2 | 2 +- src/migration-scripts/l2tp/2-to-3 | 2 +- src/migration-scripts/l2tp/3-to-4 | 2 +- src/migration-scripts/l2tp/4-to-5 | 2 +- src/migration-scripts/l2tp/5-to-6 | 2 +- src/migration-scripts/l2tp/6-to-7 | 2 +- src/migration-scripts/l2tp/7-to-8 | 2 +- src/migration-scripts/l2tp/8-to-9 | 2 +- src/migration-scripts/lldp/0-to-1 | 2 +- src/migration-scripts/lldp/1-to-2 | 2 +- src/migration-scripts/lldp/2-to-3 | 2 +- src/migration-scripts/monitoring/0-to-1 | 4 ++-- src/migration-scripts/monitoring/1-to-2 | 2 +- src/migration-scripts/nat/4-to-5 | 2 +- src/migration-scripts/nat/5-to-6 | 2 +- src/migration-scripts/nat/6-to-7 | 2 +- src/migration-scripts/nat/7-to-8 | 2 +- src/migration-scripts/nat66/0-to-1 | 2 +- src/migration-scripts/nat66/1-to-2 | 4 ++-- src/migration-scripts/nat66/2-to-3 | 2 +- src/migration-scripts/nhrp/0-to-1 | 2 +- src/migration-scripts/ntp/0-to-1 | 2 +- src/migration-scripts/ntp/1-to-2 | 2 +- src/migration-scripts/ntp/2-to-3 | 2 +- src/migration-scripts/openconnect/0-to-1 | 2 +- src/migration-scripts/openconnect/1-to-2 | 2 +- src/migration-scripts/openconnect/2-to-3 | 2 +- src/migration-scripts/openvpn/0-to-1 | 2 +- src/migration-scripts/openvpn/1-to-2 | 2 +- src/migration-scripts/openvpn/2-to-3 | 2 +- src/migration-scripts/openvpn/3-to-4 | 2 +- src/migration-scripts/ospf/0-to-1 | 2 +- src/migration-scripts/ospf/1-to-2 | 2 +- src/migration-scripts/pim/0-to-1 | 2 +- src/migration-scripts/policy/0-to-1 | 2 +- src/migration-scripts/policy/1-to-2 | 2 +- src/migration-scripts/policy/2-to-3 | 2 +- src/migration-scripts/policy/3-to-4 | 2 +- src/migration-scripts/policy/4-to-5 | 2 +- src/migration-scripts/policy/5-to-6 | 2 +- src/migration-scripts/policy/6-to-7 | 2 +- src/migration-scripts/policy/7-to-8 | 2 +- src/migration-scripts/policy/8-to-9 | 2 +- src/migration-scripts/pppoe-server/0-to-1 | 2 +- src/migration-scripts/pppoe-server/1-to-2 | 2 +- src/migration-scripts/pppoe-server/10-to-11 | 2 +- src/migration-scripts/pppoe-server/2-to-3 | 2 +- src/migration-scripts/pppoe-server/3-to-4 | 2 +- src/migration-scripts/pppoe-server/4-to-5 | 2 +- src/migration-scripts/pppoe-server/5-to-6 | 2 +- src/migration-scripts/pppoe-server/6-to-7 | 2 +- src/migration-scripts/pppoe-server/7-to-8 | 2 +- src/migration-scripts/pppoe-server/8-to-9 | 2 +- src/migration-scripts/pppoe-server/9-to-10 | 2 +- src/migration-scripts/pptp/0-to-1 | 2 +- src/migration-scripts/pptp/1-to-2 | 2 +- src/migration-scripts/pptp/2-to-3 | 2 +- src/migration-scripts/pptp/3-to-4 | 2 +- src/migration-scripts/pptp/4-to-5 | 2 +- src/migration-scripts/qos/1-to-2 | 2 +- src/migration-scripts/qos/2-to-3 | 2 +- src/migration-scripts/quagga/10-to-11 | 2 +- src/migration-scripts/quagga/11-to-12 | 2 +- src/migration-scripts/quagga/2-to-3 | 2 +- src/migration-scripts/quagga/3-to-4 | 2 +- src/migration-scripts/quagga/4-to-5 | 2 +- src/migration-scripts/quagga/5-to-6 | 2 +- src/migration-scripts/quagga/6-to-7 | 2 +- src/migration-scripts/quagga/7-to-8 | 2 +- src/migration-scripts/quagga/8-to-9 | 2 +- src/migration-scripts/quagga/9-to-10 | 2 +- src/migration-scripts/reverse-proxy/0-to-1 | 2 +- src/migration-scripts/reverse-proxy/1-to-2 | 2 +- src/migration-scripts/reverse-proxy/2-to-3 | 2 +- src/migration-scripts/rip/0-to-1 | 2 +- src/migration-scripts/rpki/0-to-1 | 2 +- src/migration-scripts/rpki/1-to-2 | 2 +- src/migration-scripts/salt/0-to-1 | 2 +- src/migration-scripts/snmp/0-to-1 | 2 +- src/migration-scripts/snmp/1-to-2 | 2 +- src/migration-scripts/snmp/2-to-3 | 2 +- src/migration-scripts/ssh/0-to-1 | 2 +- src/migration-scripts/ssh/1-to-2 | 2 +- src/migration-scripts/sstp/0-to-1 | 2 +- src/migration-scripts/sstp/1-to-2 | 2 +- src/migration-scripts/sstp/2-to-3 | 2 +- src/migration-scripts/sstp/3-to-4 | 2 +- src/migration-scripts/sstp/4-to-5 | 2 +- src/migration-scripts/sstp/5-to-6 | 2 +- src/migration-scripts/system/10-to-11 | 2 +- src/migration-scripts/system/11-to-12 | 2 +- src/migration-scripts/system/12-to-13 | 2 +- src/migration-scripts/system/13-to-14 | 2 +- src/migration-scripts/system/14-to-15 | 2 +- src/migration-scripts/system/15-to-16 | 2 +- src/migration-scripts/system/16-to-17 | 2 +- src/migration-scripts/system/17-to-18 | 2 +- src/migration-scripts/system/18-to-19 | 2 +- src/migration-scripts/system/19-to-20 | 2 +- src/migration-scripts/system/20-to-21 | 2 +- src/migration-scripts/system/21-to-22 | 2 +- src/migration-scripts/system/22-to-23 | 2 +- src/migration-scripts/system/23-to-24 | 2 +- src/migration-scripts/system/24-to-25 | 2 +- src/migration-scripts/system/25-to-26 | 2 +- src/migration-scripts/system/26-to-27 | 2 +- src/migration-scripts/system/27-to-28 | 2 +- src/migration-scripts/system/28-to-29 | 2 +- src/migration-scripts/system/6-to-7 | 2 +- src/migration-scripts/system/7-to-8 | 2 +- src/migration-scripts/system/8-to-9 | 2 +- src/migration-scripts/vrf/0-to-1 | 2 +- src/migration-scripts/vrf/1-to-2 | 2 +- src/migration-scripts/vrf/2-to-3 | 2 +- src/migration-scripts/vrrp/1-to-2 | 2 +- src/migration-scripts/vrrp/2-to-3 | 2 +- src/migration-scripts/vrrp/3-to-4 | 2 +- src/migration-scripts/wanloadbalance/3-to-4 | 2 +- src/migration-scripts/webproxy/1-to-2 | 2 +- src/op_mode/accelppp.py | 2 +- src/op_mode/bgp.py | 2 +- src/op_mode/bonding.py | 2 +- src/op_mode/bridge.py | 2 +- src/op_mode/cgnat.py | 2 +- src/op_mode/clear_conntrack.py | 2 +- src/op_mode/config_mgmt.py | 2 +- src/op_mode/connect_disconnect.py | 2 +- src/op_mode/conntrack.py | 2 +- src/op_mode/conntrack_sync.py | 2 +- src/op_mode/container.py | 2 +- src/op_mode/cpu.py | 2 +- src/op_mode/dhcp.py | 2 +- src/op_mode/dns.py | 2 +- src/op_mode/evpn.py | 2 +- src/op_mode/execute_bandwidth_test.sh | 2 +- src/op_mode/execute_port-scan.py | 2 +- src/op_mode/file.py | 2 +- src/op_mode/firewall.py | 2 +- src/op_mode/flow_accounting_op.py | 2 +- src/op_mode/force_mtu_host.sh | 2 +- src/op_mode/force_root-partition-auto-resize.sh | 2 +- src/op_mode/format_disk.py | 2 +- src/op_mode/generate_interfaces_debug_archive.py | 2 +- src/op_mode/generate_ipsec_debug_archive.py | 2 +- src/op_mode/generate_openconnect_otp_key.py | 2 +- src/op_mode/generate_ovpn_client_file.py | 2 +- src/op_mode/generate_psk.py | 2 +- src/op_mode/generate_public_key_command.py | 2 +- src/op_mode/generate_service_rule-resequence.py | 2 +- src/op_mode/generate_ssh_server_key.py | 2 +- src/op_mode/generate_system_login_user.py | 2 +- src/op_mode/generate_tech-support_archive.py | 2 +- src/op_mode/igmp-proxy.py | 2 +- src/op_mode/ikev2_profile_generator.py | 2 +- src/op_mode/image_info.py | 2 +- src/op_mode/image_installer.py | 2 +- src/op_mode/image_manager.py | 2 +- src/op_mode/interfaces.py | 2 +- src/op_mode/interfaces_wireguard.py | 2 +- src/op_mode/interfaces_wireless.py | 2 +- src/op_mode/ipoe-control.py | 2 +- src/op_mode/ipsec.py | 2 +- src/op_mode/kernel_modules.py | 2 +- src/op_mode/lldp.py | 2 +- src/op_mode/load-balancing_haproxy.py | 2 +- src/op_mode/load-balancing_wan.py | 2 +- src/op_mode/log.py | 2 +- src/op_mode/maya_date.py | 2 +- src/op_mode/memory.py | 2 +- src/op_mode/mtr.py | 2 +- src/op_mode/mtr_execute.py | 2 +- src/op_mode/multicast.py | 2 +- src/op_mode/nat.py | 2 +- src/op_mode/neighbor.py | 2 +- src/op_mode/ntp.py | 2 +- src/op_mode/openconnect-control.py | 2 +- src/op_mode/openconnect.py | 2 +- src/op_mode/openvpn.py | 2 +- src/op_mode/otp.py | 4 ++-- src/op_mode/ping.py | 2 +- src/op_mode/pki.py | 2 +- src/op_mode/policy_route.py | 2 +- src/op_mode/powerctrl.py | 2 +- src/op_mode/ppp-server-ctrl.py | 2 +- src/op_mode/qos.py | 2 +- src/op_mode/raid.py | 2 +- src/op_mode/reset_openvpn.py | 2 +- src/op_mode/reset_vpn.py | 2 +- src/op_mode/reset_wireguard.py | 2 +- src/op_mode/restart.py | 2 +- src/op_mode/restart_dhcp_relay.py | 2 +- src/op_mode/restart_frr.py | 2 +- src/op_mode/route.py | 2 +- src/op_mode/secure_boot.py | 2 +- src/op_mode/serial.py | 2 +- src/op_mode/sflow.py | 2 +- src/op_mode/show-bond.py | 2 +- src/op_mode/show_acceleration.py | 2 +- src/op_mode/show_configuration_json.py | 2 +- src/op_mode/show_openconnect_otp.py | 2 +- src/op_mode/show_openvpn.py | 2 +- src/op_mode/show_openvpn_mfa.py | 2 +- src/op_mode/show_sensors.py | 2 +- src/op_mode/show_techsupport_report.py | 2 +- src/op_mode/show_usb_serial.py | 2 +- src/op_mode/show_users.py | 2 +- src/op_mode/show_virtual_server.py | 2 +- src/op_mode/show_wwan.py | 2 +- src/op_mode/snmp.py | 2 +- src/op_mode/snmp_ifmib.py | 2 +- src/op_mode/snmp_v3.py | 2 +- src/op_mode/ssh.py | 2 +- src/op_mode/storage.py | 2 +- src/op_mode/stp.py | 2 +- src/op_mode/system.py | 2 +- src/op_mode/tcpdump.py | 2 +- src/op_mode/tech_support.py | 2 +- src/op_mode/toggle_help_binding.sh | 2 +- src/op_mode/traceroute.py | 2 +- src/op_mode/uptime.py | 2 +- src/op_mode/version.py | 2 +- src/op_mode/vpn_ike_sa.py | 2 +- src/op_mode/vpn_ipsec.py | 2 +- src/op_mode/vrf.py | 2 +- src/op_mode/vrrp.py | 2 +- src/op_mode/webproxy_update_blacklist.sh | 2 +- src/op_mode/wireguard_client.py | 2 +- src/op_mode/zone.py | 2 +- src/services/api/graphql/bindings.py | 2 +- src/services/api/graphql/generate/generate_schema.py | 2 +- src/services/api/graphql/generate/schema_from_composite.py | 2 +- .../api/graphql/generate/schema_from_config_session.py | 2 +- src/services/api/graphql/generate/schema_from_op_mode.py | 2 +- src/services/api/graphql/graphql/auth_token_mutation.py | 2 +- src/services/api/graphql/graphql/directives.py | 2 +- src/services/api/graphql/graphql/mutations.py | 2 +- src/services/api/graphql/graphql/queries.py | 2 +- src/services/api/graphql/libs/key_auth.py | 2 +- src/services/api/graphql/libs/op_mode.py | 2 +- src/services/api/graphql/libs/token_auth.py | 2 +- src/services/api/graphql/routers.py | 2 +- src/services/api/graphql/session/composite/system_status.py | 2 +- .../session/override/remove_firewall_address_group_members.py | 2 +- src/services/api/graphql/session/session.py | 2 +- src/services/api/rest/models.py | 2 +- src/services/api/rest/routers.py | 2 +- src/services/api/session.py | 2 +- src/services/vyos-commitd | 2 +- src/services/vyos-configd | 2 +- src/services/vyos-conntrack-logger | 2 +- src/services/vyos-domain-resolver | 2 +- src/services/vyos-hostsd | 2 +- src/services/vyos-http-api-server | 2 +- src/services/vyos-network-event-logger | 2 +- src/shim/vyshim.c | 2 +- src/system/grub_update.py | 2 +- src/system/keepalived-fifo.py | 2 +- src/system/normalize-ip | 2 +- src/system/on-dhcp-event.sh | 2 +- src/system/on-dhcpv6-event.sh | 2 +- src/system/sync-dhcp-lease-to-hosts.py | 2 +- src/system/uacctd_stop.py | 2 +- src/system/vyos-config-cloud-init.py | 2 +- src/system/vyos-event-handler.py | 2 +- src/system/vyos-system-update-check.py | 2 +- src/tests/helper.py | 2 +- src/tests/test_config_diff.py | 2 +- src/tests/test_config_parser.py | 2 +- src/tests/test_configd_inspect.py | 2 +- src/tests/test_configverify.py | 2 +- src/tests/test_dependency_graph.py | 2 +- src/tests/test_dict_search.py | 2 +- src/tests/test_find_device_file.py | 2 +- src/tests/test_initial_setup.py | 2 +- src/tests/test_op_mode.py | 2 +- src/tests/test_task_scheduler.py | 2 +- src/tests/test_template.py | 2 +- src/tests/test_utils.py | 2 +- src/tests/test_utils_network.py | 2 +- src/utils/vyos-commands-to-config | 2 +- src/utils/vyos-config-file-query | 2 +- src/utils/vyos-hostsd-client | 2 +- src/utils/vyos-show-config | 2 +- src/validators/as-number-list | 2 +- src/validators/base64 | 2 +- src/validators/bgp-extended-community | 2 +- src/validators/bgp-large-community | 2 +- src/validators/bgp-large-community-list | 2 +- src/validators/bgp-rd-rt | 2 +- src/validators/bgp-regular-community | 2 +- src/validators/ddclient-protocol | 2 +- src/validators/ether-type | 2 +- src/validators/ip-protocol | 2 +- src/validators/psk-secret | 2 +- src/validators/script | 2 +- src/validators/sysctl | 2 +- src/validators/timezone | 2 +- src/validators/vrf-name | 2 +- src/validators/wireless-phy | 2 +- 833 files changed, 853 insertions(+), 846 deletions(-) (limited to 'src/migration-scripts/system') diff --git a/Makefile b/Makefile index e85ccd7f4..59ecb7b51 100644 --- a/Makefile +++ b/Makefile @@ -89,7 +89,14 @@ vyshim: $(MAKE) -C $(SHIM_DIR) .PHONY: all -all: clean libvyosconfig interface_definitions op_mode_definitions test j2lint vyshim generate-configd-include-json +all: clean copyright libvyosconfig interface_definitions op_mode_definitions test j2lint vyshim generate-configd-include-json + +.PHONY: copyright +copyright: + @if git grep -q -E "Copyright (19|20)[0-9]{2}(-[0-9]{4})? VyOS maintainers"; then \ + echo "Error: Legacy copyright notice found."; \ + exit 1; \ + fi .PHONY: clean clean: diff --git a/debian/copyright b/debian/copyright index 20704c47c..b3b55b1d1 100644 --- a/debian/copyright +++ b/debian/copyright @@ -3,13 +3,13 @@ Thu, 17 Aug 2017 20:17:04 -0400 It's original content from the GIT repository -Upstream Author: +Upstream Author: -Copyright: +Copyright: - Copyright (C) 2017 VyOS maintainers and contributors + Copyright VyOS maintainers and contributors All Rights Reserved. License: diff --git a/python/vyos/accel_ppp.py b/python/vyos/accel_ppp.py index bae695fc3..b1160dc76 100644 --- a/python/vyos/accel_ppp.py +++ b/python/vyos/accel_ppp.py @@ -1,4 +1,4 @@ -# Copyright (C) 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/accel_ppp_util.py b/python/vyos/accel_ppp_util.py index 49c0e3ede..85e8a964c 100644 --- a/python/vyos/accel_ppp_util.py +++ b/python/vyos/accel_ppp_util.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/airbag.py b/python/vyos/airbag.py index 3c7a144b7..a869daae8 100644 --- a/python/vyos/airbag.py +++ b/python/vyos/airbag.py @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/base.py b/python/vyos/base.py index 3173ddc20..67f92564e 100644 --- a/python/vyos/base.py +++ b/python/vyos/base.py @@ -1,4 +1,4 @@ -# Copyright 2018-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/component_version.py b/python/vyos/component_version.py index 81d986658..136bd36e8 100644 --- a/python/vyos/component_version.py +++ b/python/vyos/component_version.py @@ -1,4 +1,4 @@ -# Copyright 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/compose_config.py b/python/vyos/compose_config.py index 79a8718c5..1e7837858 100644 --- a/python/vyos/compose_config.py +++ b/python/vyos/compose_config.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/config.py b/python/vyos/config.py index f1086cd6e..6ba8834cb 100644 --- a/python/vyos/config.py +++ b/python/vyos/config.py @@ -1,4 +1,4 @@ -# Copyright 2017-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/config_mgmt.py b/python/vyos/config_mgmt.py index 23eb3666e..67d03e76c 100644 --- a/python/vyos/config_mgmt.py +++ b/python/vyos/config_mgmt.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/configdep.py b/python/vyos/configdep.py index 747af8dbe..04de66493 100644 --- a/python/vyos/configdep.py +++ b/python/vyos/configdep.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py index 040eb49ba..d91d88d88 100644 --- a/python/vyos/configdict.py +++ b/python/vyos/configdict.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/configdiff.py b/python/vyos/configdiff.py index b6d4a5558..5e21a16e5 100644 --- a/python/vyos/configdiff.py +++ b/python/vyos/configdiff.py @@ -1,4 +1,4 @@ -# Copyright 2020-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/configquery.py b/python/vyos/configquery.py index 4c4ead0a3..e8a3c0f99 100644 --- a/python/vyos/configquery.py +++ b/python/vyos/configquery.py @@ -1,4 +1,4 @@ -# Copyright 2021-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/configsession.py b/python/vyos/configsession.py index 7af2cb333..af87d83a0 100644 --- a/python/vyos/configsession.py +++ b/python/vyos/configsession.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or modify it under the terms of # the GNU Lesser General Public License as published by the Free Software Foundation; diff --git a/python/vyos/configsource.py b/python/vyos/configsource.py index e4ced6305..3931f1295 100644 --- a/python/vyos/configsource.py +++ b/python/vyos/configsource.py @@ -1,5 +1,5 @@ -# Copyright 2020-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/configtree.py b/python/vyos/configtree.py index faf124480..9b3755841 100644 --- a/python/vyos/configtree.py +++ b/python/vyos/configtree.py @@ -1,5 +1,5 @@ # configtree -- a standalone VyOS config file manipulation library (Python bindings) -# Copyright (C) 2018-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or modify it under the terms of # the GNU Lesser General Public License as published by the Free Software Foundation; diff --git a/python/vyos/configverify.py b/python/vyos/configverify.py index 07eb29a68..cc4419913 100644 --- a/python/vyos/configverify.py +++ b/python/vyos/configverify.py @@ -1,4 +1,4 @@ -# Copyright 2020-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/debug.py b/python/vyos/debug.py index 6ce42b173..5b6e8172e 100644 --- a/python/vyos/debug.py +++ b/python/vyos/debug.py @@ -1,4 +1,4 @@ -# Copyright 2019 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/defaults.py b/python/vyos/defaults.py index 63f3b5358..fbb5a0393 100644 --- a/python/vyos/defaults.py +++ b/python/vyos/defaults.py @@ -1,4 +1,4 @@ -# Copyright 2018-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ethtool.py b/python/vyos/ethtool.py index 4710a5d40..6c362163c 100644 --- a/python/vyos/ethtool.py +++ b/python/vyos/ethtool.py @@ -1,4 +1,4 @@ -# Copyright 2021-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/firewall.py b/python/vyos/firewall.py index 64022db84..5bb7afecc 100755 --- a/python/vyos/firewall.py +++ b/python/vyos/firewall.py @@ -1,4 +1,4 @@ -# Copyright (C) 2021-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/frrender.py b/python/vyos/frrender.py index d9e409cb4..f4ed69205 100644 --- a/python/vyos/frrender.py +++ b/python/vyos/frrender.py @@ -1,4 +1,4 @@ -# Copyright 2024-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/__init__.py b/python/vyos/ifconfig/__init__.py index 206b2bba1..7838fa9a2 100644 --- a/python/vyos/ifconfig/__init__.py +++ b/python/vyos/ifconfig/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2019-2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/afi.py b/python/vyos/ifconfig/afi.py index fd263d220..a391cb8a0 100644 --- a/python/vyos/ifconfig/afi.py +++ b/python/vyos/ifconfig/afi.py @@ -1,4 +1,4 @@ -# Copyright 2019 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/bond.py b/python/vyos/ifconfig/bond.py index a659b9bd2..8a97243c5 100644 --- a/python/vyos/ifconfig/bond.py +++ b/python/vyos/ifconfig/bond.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/bridge.py b/python/vyos/ifconfig/bridge.py index 69dae42d3..ba06e3757 100644 --- a/python/vyos/ifconfig/bridge.py +++ b/python/vyos/ifconfig/bridge.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/control.py b/python/vyos/ifconfig/control.py index a886c1b9e..e5672ed50 100644 --- a/python/vyos/ifconfig/control.py +++ b/python/vyos/ifconfig/control.py @@ -1,4 +1,4 @@ -# Copyright 2019-2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/dummy.py b/python/vyos/ifconfig/dummy.py index 29a1965a3..93066c965 100644 --- a/python/vyos/ifconfig/dummy.py +++ b/python/vyos/ifconfig/dummy.py @@ -1,4 +1,4 @@ -# Copyright 2019-2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/ethernet.py b/python/vyos/ifconfig/ethernet.py index 93727bdf6..864a9d0bc 100644 --- a/python/vyos/ifconfig/ethernet.py +++ b/python/vyos/ifconfig/ethernet.py @@ -1,4 +1,4 @@ -# Copyright 2019-2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/geneve.py b/python/vyos/ifconfig/geneve.py index f53ef4166..7c5b7c0fb 100644 --- a/python/vyos/ifconfig/geneve.py +++ b/python/vyos/ifconfig/geneve.py @@ -1,4 +1,4 @@ -# Copyright 2019-2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/input.py b/python/vyos/ifconfig/input.py index 201d3cacb..6cb1eb64c 100644 --- a/python/vyos/ifconfig/input.py +++ b/python/vyos/ifconfig/input.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py index 91b3a0c28..ca50d6ec1 100644 --- a/python/vyos/ifconfig/interface.py +++ b/python/vyos/ifconfig/interface.py @@ -1,4 +1,4 @@ -# Copyright 2019-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/l2tpv3.py b/python/vyos/ifconfig/l2tpv3.py index dfaa006aa..ea9294e99 100644 --- a/python/vyos/ifconfig/l2tpv3.py +++ b/python/vyos/ifconfig/l2tpv3.py @@ -1,4 +1,4 @@ -# Copyright 2019-2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/loopback.py b/python/vyos/ifconfig/loopback.py index 13e8a2c50..f4fc2c906 100644 --- a/python/vyos/ifconfig/loopback.py +++ b/python/vyos/ifconfig/loopback.py @@ -1,4 +1,4 @@ -# Copyright 2019-2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/macsec.py b/python/vyos/ifconfig/macsec.py index 3b4dc223f..4d76a1d46 100644 --- a/python/vyos/ifconfig/macsec.py +++ b/python/vyos/ifconfig/macsec.py @@ -1,4 +1,4 @@ -# Copyright 2020-2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/macvlan.py b/python/vyos/ifconfig/macvlan.py index fe948b920..7a26f9ef5 100644 --- a/python/vyos/ifconfig/macvlan.py +++ b/python/vyos/ifconfig/macvlan.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/operational.py b/python/vyos/ifconfig/operational.py index dc2742123..e60518948 100644 --- a/python/vyos/ifconfig/operational.py +++ b/python/vyos/ifconfig/operational.py @@ -1,4 +1,4 @@ -# Copyright 2019 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/pppoe.py b/python/vyos/ifconfig/pppoe.py index 85ca3877e..4ca66cf4d 100644 --- a/python/vyos/ifconfig/pppoe.py +++ b/python/vyos/ifconfig/pppoe.py @@ -1,4 +1,4 @@ -# Copyright 2020-2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/section.py b/python/vyos/ifconfig/section.py index 50273cf67..4ea606495 100644 --- a/python/vyos/ifconfig/section.py +++ b/python/vyos/ifconfig/section.py @@ -1,4 +1,4 @@ -# Copyright 2020 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/sstpc.py b/python/vyos/ifconfig/sstpc.py index d92ef23dc..e43a2f177 100644 --- a/python/vyos/ifconfig/sstpc.py +++ b/python/vyos/ifconfig/sstpc.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/tunnel.py b/python/vyos/ifconfig/tunnel.py index df904f7d5..f96364161 100644 --- a/python/vyos/ifconfig/tunnel.py +++ b/python/vyos/ifconfig/tunnel.py @@ -1,4 +1,4 @@ -# Copyright 2019-2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/veth.py b/python/vyos/ifconfig/veth.py index 2c8709d20..f4075fa02 100644 --- a/python/vyos/ifconfig/veth.py +++ b/python/vyos/ifconfig/veth.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/vrrp.py b/python/vyos/ifconfig/vrrp.py index 3ee22706c..4949fe571 100644 --- a/python/vyos/ifconfig/vrrp.py +++ b/python/vyos/ifconfig/vrrp.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/vti.py b/python/vyos/ifconfig/vti.py index 78f5895f8..030aa1ed7 100644 --- a/python/vyos/ifconfig/vti.py +++ b/python/vyos/ifconfig/vti.py @@ -1,4 +1,4 @@ -# Copyright 2021-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/vtun.py b/python/vyos/ifconfig/vtun.py index ee790f275..e6963ce5d 100644 --- a/python/vyos/ifconfig/vtun.py +++ b/python/vyos/ifconfig/vtun.py @@ -1,4 +1,4 @@ -# Copyright 2020-2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/vxlan.py b/python/vyos/ifconfig/vxlan.py index 58844885b..0f55acf10 100644 --- a/python/vyos/ifconfig/vxlan.py +++ b/python/vyos/ifconfig/vxlan.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/wireguard.py b/python/vyos/ifconfig/wireguard.py index 6b5e52412..c4e70056c 100644 --- a/python/vyos/ifconfig/wireguard.py +++ b/python/vyos/ifconfig/wireguard.py @@ -1,4 +1,4 @@ -# Copyright 2019-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/wireless.py b/python/vyos/ifconfig/wireless.py index 121f56bd5..69fd87347 100644 --- a/python/vyos/ifconfig/wireless.py +++ b/python/vyos/ifconfig/wireless.py @@ -1,4 +1,4 @@ -# Copyright 2020-2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ifconfig/wwan.py b/python/vyos/ifconfig/wwan.py index 004a64b39..2b5714b85 100644 --- a/python/vyos/ifconfig/wwan.py +++ b/python/vyos/ifconfig/wwan.py @@ -1,4 +1,4 @@ -# Copyright 2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/iflag.py b/python/vyos/iflag.py index 3ce73c1bf..179f33497 100644 --- a/python/vyos/iflag.py +++ b/python/vyos/iflag.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/include/__init__.py b/python/vyos/include/__init__.py index 22e836531..ba196ffed 100644 --- a/python/vyos/include/__init__.py +++ b/python/vyos/include/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/include/uapi/__init__.py b/python/vyos/include/uapi/__init__.py index 22e836531..ba196ffed 100644 --- a/python/vyos/include/uapi/__init__.py +++ b/python/vyos/include/uapi/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/include/uapi/linux/__init__.py b/python/vyos/include/uapi/linux/__init__.py index 22e836531..ba196ffed 100644 --- a/python/vyos/include/uapi/linux/__init__.py +++ b/python/vyos/include/uapi/linux/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/include/uapi/linux/fib_rules.py b/python/vyos/include/uapi/linux/fib_rules.py index 72f0b18cb..83544f69b 100644 --- a/python/vyos/include/uapi/linux/fib_rules.py +++ b/python/vyos/include/uapi/linux/fib_rules.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/include/uapi/linux/icmpv6.py b/python/vyos/include/uapi/linux/icmpv6.py index 47e0c723c..cc30b76fd 100644 --- a/python/vyos/include/uapi/linux/icmpv6.py +++ b/python/vyos/include/uapi/linux/icmpv6.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/include/uapi/linux/if_arp.py b/python/vyos/include/uapi/linux/if_arp.py index 90cb66ebd..80c16a83d 100644 --- a/python/vyos/include/uapi/linux/if_arp.py +++ b/python/vyos/include/uapi/linux/if_arp.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/include/uapi/linux/lwtunnel.py b/python/vyos/include/uapi/linux/lwtunnel.py index 6797a762b..c598513a5 100644 --- a/python/vyos/include/uapi/linux/lwtunnel.py +++ b/python/vyos/include/uapi/linux/lwtunnel.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/include/uapi/linux/neighbour.py b/python/vyos/include/uapi/linux/neighbour.py index d5caf44b9..8878353e3 100644 --- a/python/vyos/include/uapi/linux/neighbour.py +++ b/python/vyos/include/uapi/linux/neighbour.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/include/uapi/linux/rtnetlink.py b/python/vyos/include/uapi/linux/rtnetlink.py index e31272460..f3778fa65 100644 --- a/python/vyos/include/uapi/linux/rtnetlink.py +++ b/python/vyos/include/uapi/linux/rtnetlink.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/initialsetup.py b/python/vyos/initialsetup.py index cb6b9e459..bff3adf20 100644 --- a/python/vyos/initialsetup.py +++ b/python/vyos/initialsetup.py @@ -1,7 +1,7 @@ # initialsetup -- functions for setting common values in config file, # for use in installation and first boot scripts # -# Copyright (C) 2018-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or modify it under the terms of # the GNU Lesser General Public License as published by the Free Software Foundation; diff --git a/python/vyos/ioctl.py b/python/vyos/ioctl.py index 51574c1db..7f9ad226a 100644 --- a/python/vyos/ioctl.py +++ b/python/vyos/ioctl.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/ipsec.py b/python/vyos/ipsec.py index 28f77565a..81f3d0812 100644 --- a/python/vyos/ipsec.py +++ b/python/vyos/ipsec.py @@ -1,4 +1,4 @@ -# Copyright 2020-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/kea.py b/python/vyos/kea.py index 5eecbbaad..15c8564b0 100644 --- a/python/vyos/kea.py +++ b/python/vyos/kea.py @@ -1,4 +1,4 @@ -# Copyright 2023-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/limericks.py b/python/vyos/limericks.py index 3c6744816..0c02d5292 100644 --- a/python/vyos/limericks.py +++ b/python/vyos/limericks.py @@ -1,4 +1,4 @@ -# Copyright 2015, 2018 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/load_config.py b/python/vyos/load_config.py index b910a2f92..f65e887f0 100644 --- a/python/vyos/load_config.py +++ b/python/vyos/load_config.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/logger.py b/python/vyos/logger.py index f7cc964d5..207f95c1b 100644 --- a/python/vyos/logger.py +++ b/python/vyos/logger.py @@ -1,4 +1,4 @@ -# Copyright 2020 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/migrate.py b/python/vyos/migrate.py index 9d1613676..c06f6a76c 100644 --- a/python/vyos/migrate.py +++ b/python/vyos/migrate.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/nat.py b/python/vyos/nat.py index 29f8e961b..7be957a0c 100644 --- a/python/vyos/nat.py +++ b/python/vyos/nat.py @@ -1,4 +1,4 @@ -# Copyright (C) 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/opmode.py b/python/vyos/opmode.py index 7b11d36dd..7f1fc6b4f 100644 --- a/python/vyos/opmode.py +++ b/python/vyos/opmode.py @@ -1,4 +1,4 @@ -# Copyright 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/pki.py b/python/vyos/pki.py index 55dc02631..4598c5daa 100644 --- a/python/vyos/pki.py +++ b/python/vyos/pki.py @@ -1,4 +1,4 @@ -# Copyright (C) 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/priority.py b/python/vyos/priority.py index ab4e6d411..e61281d3c 100644 --- a/python/vyos/priority.py +++ b/python/vyos/priority.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/progressbar.py b/python/vyos/progressbar.py index 8d1042672..eb8ed474a 100644 --- a/python/vyos/progressbar.py +++ b/python/vyos/progressbar.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/proto/generate_dataclass.py b/python/vyos/proto/generate_dataclass.py index c6296c568..64485cd10 100755 --- a/python/vyos/proto/generate_dataclass.py +++ b/python/vyos/proto/generate_dataclass.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/proto/vyconf_client.py b/python/vyos/proto/vyconf_client.py index b385f0951..a3ba9864c 100644 --- a/python/vyos/proto/vyconf_client.py +++ b/python/vyos/proto/vyconf_client.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/__init__.py b/python/vyos/qos/__init__.py index a2980ccde..4bffda2d2 100644 --- a/python/vyos/qos/__init__.py +++ b/python/vyos/qos/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/base.py b/python/vyos/qos/base.py index b477b5b5e..487249714 100644 --- a/python/vyos/qos/base.py +++ b/python/vyos/qos/base.py @@ -1,4 +1,4 @@ -# Copyright 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/cake.py b/python/vyos/qos/cake.py index ca5a26917..626cedb8f 100644 --- a/python/vyos/qos/cake.py +++ b/python/vyos/qos/cake.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/droptail.py b/python/vyos/qos/droptail.py index 427d43d19..223ab1e64 100644 --- a/python/vyos/qos/droptail.py +++ b/python/vyos/qos/droptail.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/fairqueue.py b/python/vyos/qos/fairqueue.py index f41d098fb..8f4fe2d47 100644 --- a/python/vyos/qos/fairqueue.py +++ b/python/vyos/qos/fairqueue.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/fqcodel.py b/python/vyos/qos/fqcodel.py index cd2340aa2..d574226ef 100644 --- a/python/vyos/qos/fqcodel.py +++ b/python/vyos/qos/fqcodel.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/limiter.py b/python/vyos/qos/limiter.py index 3f5c11112..dce376d3e 100644 --- a/python/vyos/qos/limiter.py +++ b/python/vyos/qos/limiter.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/netem.py b/python/vyos/qos/netem.py index 8bdef300b..8fdd75387 100644 --- a/python/vyos/qos/netem.py +++ b/python/vyos/qos/netem.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/priority.py b/python/vyos/qos/priority.py index 66d27a639..5f373f696 100644 --- a/python/vyos/qos/priority.py +++ b/python/vyos/qos/priority.py @@ -1,4 +1,4 @@ -# Copyright 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/randomdetect.py b/python/vyos/qos/randomdetect.py index a3a39da36..63445bb62 100644 --- a/python/vyos/qos/randomdetect.py +++ b/python/vyos/qos/randomdetect.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/ratelimiter.py b/python/vyos/qos/ratelimiter.py index a4f80a1be..b0d7b3072 100644 --- a/python/vyos/qos/ratelimiter.py +++ b/python/vyos/qos/ratelimiter.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/roundrobin.py b/python/vyos/qos/roundrobin.py index 509c4069f..d07dc0f52 100644 --- a/python/vyos/qos/roundrobin.py +++ b/python/vyos/qos/roundrobin.py @@ -1,4 +1,4 @@ -# Copyright 2022 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/qos/trafficshaper.py b/python/vyos/qos/trafficshaper.py index 9f92ccd8b..3840e7d0e 100644 --- a/python/vyos/qos/trafficshaper.py +++ b/python/vyos/qos/trafficshaper.py @@ -1,4 +1,4 @@ -# Copyright 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/raid.py b/python/vyos/raid.py index 7fb794817..4ae63a100 100644 --- a/python/vyos/raid.py +++ b/python/vyos/raid.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/remote.py b/python/vyos/remote.py index c54fb6031..f6ab5c3f9 100644 --- a/python/vyos/remote.py +++ b/python/vyos/remote.py @@ -1,4 +1,4 @@ -# Copyright 2021 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/snmpv3_hashgen.py b/python/vyos/snmpv3_hashgen.py index 324c3274d..57dba07a0 100644 --- a/python/vyos/snmpv3_hashgen.py +++ b/python/vyos/snmpv3_hashgen.py @@ -1,4 +1,4 @@ -# Copyright 2020 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/__init__.py b/python/vyos/system/__init__.py index 0c91330ba..42af8e3e8 100644 --- a/python/vyos/system/__init__.py +++ b/python/vyos/system/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/compat.py b/python/vyos/system/compat.py index d35bddea2..23a34d38a 100644 --- a/python/vyos/system/compat.py +++ b/python/vyos/system/compat.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/disk.py b/python/vyos/system/disk.py index c8908cd5c..268a3b195 100644 --- a/python/vyos/system/disk.py +++ b/python/vyos/system/disk.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/grub.py b/python/vyos/system/grub.py index de8303ee2..0f04fa5e9 100644 --- a/python/vyos/system/grub.py +++ b/python/vyos/system/grub.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/grub_util.py b/python/vyos/system/grub_util.py index ad95bb4f9..e534334e6 100644 --- a/python/vyos/system/grub_util.py +++ b/python/vyos/system/grub_util.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/image.py b/python/vyos/system/image.py index aae52e770..ed8a96fbb 100644 --- a/python/vyos/system/image.py +++ b/python/vyos/system/image.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/system/raid.py b/python/vyos/system/raid.py index 5b33d34da..c03764ad1 100644 --- a/python/vyos/system/raid.py +++ b/python/vyos/system/raid.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/template.py b/python/vyos/template.py index bf2f13183..9a9234490 100755 --- a/python/vyos/template.py +++ b/python/vyos/template.py @@ -1,4 +1,4 @@ -# Copyright 2019-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/tpm.py b/python/vyos/tpm.py index a24f149fd..663490dec 100644 --- a/python/vyos/tpm.py +++ b/python/vyos/tpm.py @@ -1,4 +1,4 @@ -# Copyright (C) 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/utils/__init__.py b/python/vyos/utils/__init__.py index 3759b2125..280cde17f 100644 --- a/python/vyos/utils/__init__.py +++ b/python/vyos/utils/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/assertion.py b/python/vyos/utils/assertion.py index c7fa220c3..aa0614743 100644 --- a/python/vyos/utils/assertion.py +++ b/python/vyos/utils/assertion.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/auth.py b/python/vyos/utils/auth.py index 5d0e3464a..6e816af71 100644 --- a/python/vyos/utils/auth.py +++ b/python/vyos/utils/auth.py @@ -1,6 +1,6 @@ # authutils -- miscelanneous functions for handling passwords and publis keys # -# Copyright (C) 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or modify it under the terms of # the GNU Lesser General Public License as published by the Free Software Foundation; diff --git a/python/vyos/utils/backend.py b/python/vyos/utils/backend.py index 400ea9b69..1234e9aa4 100644 --- a/python/vyos/utils/backend.py +++ b/python/vyos/utils/backend.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/boot.py b/python/vyos/utils/boot.py index 708bef14d..f804cd94e 100644 --- a/python/vyos/utils/boot.py +++ b/python/vyos/utils/boot.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/commit.py b/python/vyos/utils/commit.py index fc259dadb..4147c7fba 100644 --- a/python/vyos/utils/commit.py +++ b/python/vyos/utils/commit.py @@ -1,4 +1,4 @@ -# Copyright 2023-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/config.py b/python/vyos/utils/config.py index deda13c13..1f067e91e 100644 --- a/python/vyos/utils/config.py +++ b/python/vyos/utils/config.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/configfs.py b/python/vyos/utils/configfs.py index 8617f0129..307e1446c 100644 --- a/python/vyos/utils/configfs.py +++ b/python/vyos/utils/configfs.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/convert.py b/python/vyos/utils/convert.py index 2f587405d..ea07f9514 100644 --- a/python/vyos/utils/convert.py +++ b/python/vyos/utils/convert.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/cpu.py b/python/vyos/utils/cpu.py index 6f21eb526..0f47123a4 100644 --- a/python/vyos/utils/cpu.py +++ b/python/vyos/utils/cpu.py @@ -1,4 +1,4 @@ -# Copyright (C) 2022-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/dict.py b/python/vyos/utils/dict.py index 1a7a6b96f..e6ef943c6 100644 --- a/python/vyos/utils/dict.py +++ b/python/vyos/utils/dict.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/disk.py b/python/vyos/utils/disk.py index d4271ebe1..b822badde 100644 --- a/python/vyos/utils/disk.py +++ b/python/vyos/utils/disk.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/error.py b/python/vyos/utils/error.py index 8d4709bff..75ad813f3 100644 --- a/python/vyos/utils/error.py +++ b/python/vyos/utils/error.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/file.py b/python/vyos/utils/file.py index cc46d77d1..31c2361df 100644 --- a/python/vyos/utils/file.py +++ b/python/vyos/utils/file.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/io.py b/python/vyos/utils/io.py index 205210b66..0883376d1 100644 --- a/python/vyos/utils/io.py +++ b/python/vyos/utils/io.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/kernel.py b/python/vyos/utils/kernel.py index 05eac8a6a..4d8544670 100644 --- a/python/vyos/utils/kernel.py +++ b/python/vyos/utils/kernel.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/list.py b/python/vyos/utils/list.py index 63ef720ab..931084e7c 100644 --- a/python/vyos/utils/list.py +++ b/python/vyos/utils/list.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/locking.py b/python/vyos/utils/locking.py index 63cb1a816..f4cd6fd41 100644 --- a/python/vyos/utils/locking.py +++ b/python/vyos/utils/locking.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/misc.py b/python/vyos/utils/misc.py index d82655914..0ffd82696 100644 --- a/python/vyos/utils/misc.py +++ b/python/vyos/utils/misc.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/network.py b/python/vyos/utils/network.py index 0a84be478..2182642dd 100644 --- a/python/vyos/utils/network.py +++ b/python/vyos/utils/network.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/permission.py b/python/vyos/utils/permission.py index d938b494f..efd44bfeb 100644 --- a/python/vyos/utils/permission.py +++ b/python/vyos/utils/permission.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/process.py b/python/vyos/utils/process.py index 21335e6b3..86a2747af 100644 --- a/python/vyos/utils/process.py +++ b/python/vyos/utils/process.py @@ -1,4 +1,4 @@ -# Copyright 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/serial.py b/python/vyos/utils/serial.py index b646f881e..68aad676e 100644 --- a/python/vyos/utils/serial.py +++ b/python/vyos/utils/serial.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/session.py b/python/vyos/utils/session.py index 28559dc59..bc5240fc7 100644 --- a/python/vyos/utils/session.py +++ b/python/vyos/utils/session.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/strip_config.py b/python/vyos/utils/strip_config.py index 7a9c78c9f..17f6867cb 100644 --- a/python/vyos/utils/strip_config.py +++ b/python/vyos/utils/strip_config.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/system.py b/python/vyos/utils/system.py index 6c112334b..e2197daf2 100644 --- a/python/vyos/utils/system.py +++ b/python/vyos/utils/system.py @@ -1,4 +1,4 @@ -# Copyright 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/utils/vti_updown_db.py b/python/vyos/utils/vti_updown_db.py index b491fc6f2..f4dd24007 100644 --- a/python/vyos/utils/vti_updown_db.py +++ b/python/vyos/utils/vti_updown_db.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/version.py b/python/vyos/version.py index 86e96d0ec..01986e4da 100644 --- a/python/vyos/version.py +++ b/python/vyos/version.py @@ -1,4 +1,4 @@ -# Copyright 2017-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/vyconf_session.py b/python/vyos/vyconf_session.py index 3cf847b6c..4a2e6e393 100644 --- a/python/vyos/vyconf_session.py +++ b/python/vyos/vyconf_session.py @@ -1,4 +1,4 @@ -# Copyright 2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/wanloadbalance.py b/python/vyos/wanloadbalance.py index 62e109f21..2381f7d1c 100644 --- a/python/vyos/wanloadbalance.py +++ b/python/vyos/wanloadbalance.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/xml_ref/__init__.py b/python/vyos/xml_ref/__init__.py index cd50a3ec2..41a25049e 100644 --- a/python/vyos/xml_ref/__init__.py +++ b/python/vyos/xml_ref/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/xml_ref/definition.py b/python/vyos/xml_ref/definition.py index 4e755ab72..015e7ee6e 100644 --- a/python/vyos/xml_ref/definition.py +++ b/python/vyos/xml_ref/definition.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/xml_ref/generate_cache.py b/python/vyos/xml_ref/generate_cache.py index 093697993..f0a3ec35b 100755 --- a/python/vyos/xml_ref/generate_cache.py +++ b/python/vyos/xml_ref/generate_cache.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2023-2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/xml_ref/generate_op_cache.py b/python/vyos/xml_ref/generate_op_cache.py index 29697dc58..7a6974730 100755 --- a/python/vyos/xml_ref/generate_op_cache.py +++ b/python/vyos/xml_ref/generate_op_cache.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2024-2025 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/python/vyos/xml_ref/op_definition.py b/python/vyos/xml_ref/op_definition.py index 8e922ecb2..f749e0585 100644 --- a/python/vyos/xml_ref/op_definition.py +++ b/python/vyos/xml_ref/op_definition.py @@ -1,4 +1,4 @@ -# Copyright 2024 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/python/vyos/xml_ref/update_cache.py b/python/vyos/xml_ref/update_cache.py index 0842bcbe9..6643f9dc4 100755 --- a/python/vyos/xml_ref/update_cache.py +++ b/python/vyos/xml_ref/update_cache.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2023 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as diff --git a/schema/interface_definition.rnc b/schema/interface_definition.rnc index 9434f5d18..a338b875f 100644 --- a/schema/interface_definition.rnc +++ b/schema/interface_definition.rnc @@ -1,6 +1,6 @@ # interface_definition.rnc: VyConf reference tree XML grammar # -# Copyright (C) 2014. 2017 VyOS maintainers and contributors +# Copyright VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public diff --git a/schema/interface_definition.rng b/schema/interface_definition.rng index e3d582452..d653d1b01 100644 --- a/schema/interface_definition.rng +++ b/schema/interface_definition.rng @@ -2,19 +2,19 @@