diff options
-rw-r--r-- | data/templates/rsyslog/rsyslog.conf.j2 | 4 | ||||
-rw-r--r-- | interface-definitions/system_syslog.xml.in | 1 | ||||
-rwxr-xr-x | src/conf_mode/system_syslog.py | 7 |
3 files changed, 12 insertions, 0 deletions
diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index efb23ca7d..779ae8d04 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -113,6 +113,10 @@ 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 }}" +{% endif %} {% if vrf is vyos_defined %} Device="{{ vrf }}" {% endif %} diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index acc7b4747..f47a95f09 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -100,6 +100,7 @@ #include <include/syslog-facility.xml.i> </children> </node> + #include <include/source-address-ipv4-ipv6.xml.i> #include <include/interface/vrf.xml.i> </children> </node> diff --git a/src/conf_mode/system_syslog.py b/src/conf_mode/system_syslog.py index 78840a5f5..ce806a540 100755 --- a/src/conf_mode/system_syslog.py +++ b/src/conf_mode/system_syslog.py @@ -78,6 +78,13 @@ def verify(syslog): 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!') + def generate(syslog): if not syslog: if os.path.exists(rsyslog_conf): |