diff --git a/interface-definitions/system-syslog.xml b/interface-definitions/system-syslog.xml
index 2d6af5395..8f4b105c8 100644
--- a/interface-definitions/system-syslog.xml
+++ b/interface-definitions/system-syslog.xml
@@ -1,932 +1,945 @@
 <?xml version="1.0"?>
 <interfaceDefinition>
   <node name="system">
     <children>
       <node name="syslog" owner="${vyos_conf_scripts_dir}/system-syslog.py">
         <properties>
           <help>System logging</help>
           <priority>400</priority>
         </properties>
         <children>
           <tagNode name="user">
             <properties>
               <help>Logging to specific user's terminal</help>
               <constraint>
                 <regex>^[a-z_][a-z0-9_-]{1,31}[$]?</regex>
               </constraint>
               <constraintErrorMessage>illegal characters in user</constraintErrorMessage>
               <valueHelp>
                 <format>username</format>
                 <description>user login name</description>
               </valueHelp>
             </properties>
             <children>
               <tagNode name="facility">
                 <properties>
                   <help>Facility for logging</help>
                   <completionHelp>
                     <list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
                   </completionHelp>
                   <constraint>
                     <regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
                   </constraint>
                   <constraintErrorMessage>Invalid facility type</constraintErrorMessage>
                   <valueHelp>
                     <format>all</format>
                     <description>All facilities excluding "mark"</description>
                   </valueHelp>
                   <valueHelp>
                     <format>auth</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>authpriv</format>
                     <description>Non-system authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>cron</format>
                     <description>Cron daemon</description>
                   </valueHelp>
                   <valueHelp>
                     <format>daemon</format>
                     <description>System daemons</description>
                   </valueHelp>
                   <valueHelp>
                     <format>kern</format>
                     <description>Kernel</description>
                   </valueHelp>
                   <valueHelp>
                     <format>lpr</format>
                     <description>Line printer spooler</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mail</format>
                     <description>Mail subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mark</format>
                     <description>Timestamp</description>
                   </valueHelp>
                   <valueHelp>
                     <format>news</format>
                     <description>USENET subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>protocols</format>
                     <description>depricated will be set to local7</description>
                   </valueHelp>
                   <valueHelp>
                     <format>security</format>
                     <description>depricated will be set to auth</description>
                   </valueHelp>
                   <valueHelp>
                     <format>syslog</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>user</format>
                     <description>Application processes</description>
                   </valueHelp>
                   <valueHelp>
                     <format>uucp</format>
                     <description>UUCP subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local0</format>
                     <description>Local facility 0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local1</format>
                     <description>Local facility 1</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local2</format>
                     <description>Local facility 2</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local3</format>
                     <description>Local facility 3</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local4</format>
                     <description>Local facility 4</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local5</format>
                     <description>Local facility 5</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local6</format>
                     <description>Local facility 6</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local7</format>
                     <description>Local facility 7</description>
                   </valueHelp>
                 </properties>
                 <children>
                   <leafNode name="level">
                     <properties>
                       <help>Logging level</help>
                       <completionHelp>
                         <list>emerg alert crit err warning notice info debug all</list>
                       </completionHelp>
                       <constraint>
                         <regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
                       <valueHelp>
                         <format>emerg</format>
                         <description>Emergency messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>alert</format>
                         <description>Urgent messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>crit</format>
                         <description>Critical messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>err</format>
                         <description>Error messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>warning</format>
                         <description>Warning messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>notice</format>
                         <description>Messages for further investigation</description>
                       </valueHelp>
                       <valueHelp>
                         <format>info</format>
                         <description>Informational messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>debug</format>
                         <description>Debug messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>all</format>
                         <description>Log everything</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
             </children>
           </tagNode>
           <tagNode name="host">
             <properties>
               <help>Logging to a remote host</help>
               <constraint>
                 <validator name="ip-address" />
                 <regex>(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)</regex>
               </constraint>
               <constraintErrorMessage>Invalid host FQDN or IP address</constraintErrorMessage>
               <valueHelp>
                 <format>x.x.x.x or host.domain.tld</format>
                 <description>Remote host name or IP address</description>
               </valueHelp>
             </properties>
             <children>
+              <leafNode name="port">
+                <properties>
+                  <help>Destination port</help>
+                  <valueHelp>
+                    <format>1-65535</format>
+                    <description>Destination port</description>
+                  </valueHelp>
+                  <constraint>
+                    <validator name="numeric" argument="--range 1-65535"/>
+                  </constraint>
+                  <constraintErrorMessage>Invalid destination port value</constraintErrorMessage>
+                </properties>
+              </leafNode>
               <tagNode name="facility">
                 <properties>
                   <help>Facility for logging</help>
                   <completionHelp>
                     <list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
                   </completionHelp>
                   <constraint>
                     <regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
                   </constraint>
                   <constraintErrorMessage>Invalid facility type</constraintErrorMessage> 
                   <valueHelp>
                     <format>all</format>
                     <description>All facilities excluding "mark"</description>
                   </valueHelp>
                   <valueHelp>
                     <format>auth</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>authpriv</format>
                     <description>Non-system authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>cron</format>
                     <description>Cron daemon</description>
                   </valueHelp>
                   <valueHelp>
                     <format>daemon</format>
                     <description>System daemons</description>
                   </valueHelp>
                   <valueHelp>
                     <format>kern</format>
                     <description>Kernel</description>
                   </valueHelp>
                   <valueHelp>
                     <format>lpr</format>
                     <description>Line printer spooler</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mail</format>
                     <description>Mail subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mark</format>
                     <description>Timestamp</description>
                   </valueHelp>
                   <valueHelp>
                     <format>news</format>
                     <description>USENET subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>protocols</format>
                     <description>depricated will be set to local7</description>
                   </valueHelp>
                   <valueHelp>
                     <format>security</format>
                     <description>depricated will be set to auth</description>
                   </valueHelp>
                   <valueHelp>
                     <format>syslog</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>user</format>
                     <description>Application processes</description>
                   </valueHelp>
                   <valueHelp>
                     <format>uucp</format>
                     <description>UUCP subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local0</format>
                     <description>Local facility 0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local1</format>
                     <description>Local facility 1</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local2</format>
                     <description>Local facility 2</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local3</format>
                     <description>Local facility 3</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local4</format>
                     <description>Local facility 4</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local5</format>
                     <description>Local facility 5</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local6</format>
                     <description>Local facility 6</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local7</format>
                     <description>Local facility 7</description>
                   </valueHelp>
                 </properties>
                 <children>
                   <leafNode name="protocol">
                     <properties>
                       <help>syslog communication protocol</help>
                       <valueHelp>
                         <format>udp</format>
                         <description>send log messages to remote syslog server over udp</description>
                       </valueHelp>
                       <valueHelp>
                         <format>tcp</format>
                         <description>send log messages to remote syslog server over tcp</description>
                       </valueHelp>
                       <completionHelp>
                         <list>udp tcp</list>
                       </completionHelp>
                       <constraint>
                         <regex>(udp|tcp)</regex>
                       </constraint>
                       <constraintErrorMessage>invalid protocol name</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="level">
                     <properties>
                       <help>Logging level</help>
                       <completionHelp>
                         <list>emerg alert crit err warning notice info debug all</list>
                       </completionHelp>
                       <constraint>
                         <regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
                       <valueHelp>
                         <format>emerg</format>
                         <description>Emergency messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>alert</format>
                         <description>Urgent messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>crit</format>
                         <description>Critical messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>err</format>
                         <description>Error messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>warning</format>
                         <description>Warning messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>notice</format>
                         <description>Messages for further investigation</description>
                       </valueHelp>
                       <valueHelp>
                         <format>info</format>
                         <description>Informational messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>debug</format>
                         <description>Debug messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>all</format>
                         <description>Log everything</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
             </children>
           </tagNode>
           <node name="global">
             <properties>
               <help>Logging to system standard location</help>
             </properties>
             <children>
               <node name="archive">
                 <properties>
                   <help>Log file size and rotation characteristics</help>
                 </properties>
                 <children>
                   <leafNode name="file">
                     <properties>
                       <help>Number of saved files (default is 5)</help>
                       <constraint>
                         <regex>^[0-9]+</regex>
                       </constraint>
                       <constraintErrorMessage>illegal characters in number of files</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="size">
                     <properties>
                       <help>Size of log files (in kbytes, default is 256)</help>
                       <constraint>
                         <regex>^[0-9]+</regex>
                       </constraint>
                       <constraintErrorMessage>illegal characters in size</constraintErrorMessage>
                     </properties>
                   </leafNode>
                 </children>
               </node>
               <tagNode name="facility">
                 <properties>
                   <help>Facility for logging</help>
                   <completionHelp>
                     <list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
                   </completionHelp>
                   <constraint>
                     <regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
                   </constraint>
                   <constraintErrorMessage>Invalid facility type</constraintErrorMessage>
                   <valueHelp>
                     <format>all</format>
                     <description>All facilities excluding "mark"</description>
                   </valueHelp>
                   <valueHelp>
                     <format>auth</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>authpriv</format>
                     <description>Non-system authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>cron</format>
                     <description>Cron daemon</description>
                   </valueHelp>
                   <valueHelp>
                     <format>daemon</format>
                     <description>System daemons</description>
                   </valueHelp>
                   <valueHelp>
                     <format>kern</format>
                     <description>Kernel</description>
                   </valueHelp>
                   <valueHelp>
                     <format>lpr</format>
                     <description>Line printer spooler</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mail</format>
                     <description>Mail subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mark</format>
                     <description>Timestamp</description>
                   </valueHelp>
                   <valueHelp>
                     <format>news</format>
                     <description>USENET subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>protocols</format>
                     <description>depricated will be set to local7</description>
                   </valueHelp>
                   <valueHelp>
                     <format>security</format>
                     <description>depricated will be set to auth</description>
                   </valueHelp>
                   <valueHelp>
                     <format>syslog</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>user</format>
                     <description>Application processes</description>
                   </valueHelp>
                   <valueHelp>
                     <format>uucp</format>
                     <description>UUCP subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local0</format>
                     <description>Local facility 0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local1</format>
                     <description>Local facility 1</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local2</format>
                     <description>Local facility 2</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local3</format>
                     <description>Local facility 3</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local4</format>
                     <description>Local facility 4</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local5</format>
                     <description>Local facility 5</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local6</format>
                     <description>Local facility 6</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local7</format>
                     <description>Local facility 7</description>
                   </valueHelp>
                 </properties>
                 <children>
                   <leafNode name="level">
                     <properties>
                       <help>Logging level</help>
                       <completionHelp>
                         <list>emerg alert crit err warning notice info debug all</list>
                       </completionHelp>
                       <constraint>
                         <regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
                       <valueHelp>
                         <format>emerg</format>
                         <description>Emergency messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>alert</format>
                         <description>Urgent messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>crit</format>
                         <description>Critical messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>err</format>
                         <description>Error messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>warning</format>
                         <description>Warning messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>notice</format>
                         <description>Messages for further investigation</description>
                       </valueHelp>
                       <valueHelp>
                         <format>info</format>
                         <description>Informational messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>debug</format>
                         <description>Debug messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>all</format>
                         <description>Log everything</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
               <node name="marker">
                 <properties>
                   <help>mark messages sent to syslog</help>
                 </properties>
                 <children>
                   <leafNode name="interval">
                     <properties>
                       <help>time interval how often a mark message is being sent in seconds (default: 1200)</help>
                       <constraint>
                         <validator name="numeric" argument="--positive"/>
                       </constraint> 
                     </properties>
                   </leafNode>
                 </children>
               </node>
               <leafNode name ="preserve-fqdn">
                 <properties>
                   <help>uses FQDN for logging</help>
                   <valueless />
                 </properties>
               </leafNode>
             </children>
           </node>
           <tagNode name="file">
             <properties>
               <help>Logging to a file</help>
               <constraint>
                 <regex>^[a-zA-Z0-9\-_.]{1,255}</regex>
               </constraint>
               <constraintErrorMessage>illegal characters in filename or filename longer than 255 characters</constraintErrorMessage>
             </properties>
             <children>
               <node name="archive">
                 <properties>
                   <help>Log file size and rotation characteristics</help>
                 </properties>
                 <children>
                   <leafNode name="file">
                     <properties>
                       <help>Number of saved files (default is 5)</help>
                       <constraint>
                         <regex>^[0-9]+</regex>
                       </constraint>
                       <constraintErrorMessage>illegal characters in number of files</constraintErrorMessage>
                     </properties>
                   </leafNode>
                   <leafNode name="size">
                     <properties>
                       <help>Size of log files (in kbytes, default is 256)</help>
                       <constraint>
                         <regex>^[0-9]+</regex>
                       </constraint>
                       <constraintErrorMessage>illegal characters in size</constraintErrorMessage>
                     </properties>
                   </leafNode>
                 </children>
               </node>
               <tagNode name="facility">
                 <properties>
                   <help>Facility for logging</help>
                   <completionHelp>
                     <list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
                   </completionHelp>
                   <constraint>
                     <regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
                   </constraint>
                   <constraintErrorMessage>Invalid facility type</constraintErrorMessage>
                   <valueHelp>
                     <format>all</format>
                     <description>All facilities excluding "mark"</description>
                   </valueHelp>
                   <valueHelp>
                     <format>auth</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>authpriv</format>
                     <description>Non-system authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>cron</format>
                     <description>Cron daemon</description>
                   </valueHelp>
                   <valueHelp>
                     <format>daemon</format>
                     <description>System daemons</description>
                   </valueHelp>
                   <valueHelp>
                     <format>kern</format>
                     <description>Kernel</description>
                   </valueHelp>
                   <valueHelp>
                     <format>lpr</format>
                     <description>Line printer spooler</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mail</format>
                     <description>Mail subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mark</format>
                     <description>Timestamp</description>
                   </valueHelp>
                   <valueHelp>
                     <format>news</format>
                     <description>USENET subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>protocols</format>
                     <description>depricated will be set to local7</description>
                   </valueHelp>
                   <valueHelp>
                     <format>security</format>
                     <description>depricated will be set to auth</description>
                   </valueHelp>
                   <valueHelp>
                     <format>syslog</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>user</format>
                     <description>Application processes</description>
                   </valueHelp>
                   <valueHelp>
                     <format>uucp</format>
                     <description>UUCP subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local0</format>
                     <description>Local facility 0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local1</format>
                     <description>Local facility 1</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local2</format>
                     <description>Local facility 2</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local3</format>
                     <description>Local facility 3</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local4</format>
                     <description>Local facility 4</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local5</format>
                     <description>Local facility 5</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local6</format>
                     <description>Local facility 6</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local7</format>
                     <description>Local facility 7</description>
                   </valueHelp>
                 </properties>
                 <children>
                   <leafNode name="level">
                     <properties>
                       <help>Logging level</help>
                       <completionHelp>
                         <list>emerg alert crit err warning notice info debug all</list>
                       </completionHelp>
                       <constraint>
                         <regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
                       <valueHelp>
                         <format>emerg</format>
                         <description>Emergency messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>alert</format>
                         <description>Urgent messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>crit</format>
                         <description>Critical messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>err</format>
                         <description>Error messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>warning</format>
                         <description>Warning messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>notice</format>
                         <description>Messages for further investigation</description>
                       </valueHelp>
                       <valueHelp>
                         <format>info</format>
                         <description>Informational messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>debug</format>
                         <description>Debug messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>all</format>
                         <description>Log everything</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
             </children>
           </tagNode>
           <node name="console">
             <properties>
               <help>logging to serial console</help>
             </properties>
             <children>
               <tagNode name="facility">
                 <properties>
                   <help>Facility for logging</help>
                   <completionHelp>
                     <list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
                   </completionHelp>
                   <constraint>
                     <regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
                   </constraint>
                   <constraintErrorMessage>Invalid facility type</constraintErrorMessage>
                   <valueHelp>
                     <format>all</format>
                     <description>All facilities excluding "mark"</description>
                   </valueHelp>
                   <valueHelp>
                     <format>auth</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>authpriv</format>
                     <description>Non-system authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>cron</format>
                     <description>Cron daemon</description>
                   </valueHelp>
                   <valueHelp>
                     <format>daemon</format>
                     <description>System daemons</description>
                   </valueHelp>
                   <valueHelp>
                     <format>kern</format>
                     <description>Kernel</description>
                   </valueHelp>
                   <valueHelp>
                     <format>lpr</format>
                     <description>Line printer spooler</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mail</format>
                     <description>Mail subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>mark</format>
                     <description>Timestamp</description>
                   </valueHelp>
                   <valueHelp>
                     <format>news</format>
                     <description>USENET subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>protocols</format>
                     <description>depricated will be set to local7</description>
                   </valueHelp>
                   <valueHelp>
                     <format>security</format>
                     <description>depricated will be set to auth</description>
                   </valueHelp>
                   <valueHelp>
                     <format>syslog</format>
                     <description>Authentication and authorization</description>
                   </valueHelp>
                   <valueHelp>
                     <format>user</format>
                     <description>Application processes</description>
                   </valueHelp>
                   <valueHelp>
                     <format>uucp</format>
                     <description>UUCP subsystem</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local0</format>
                     <description>Local facility 0</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local1</format>
                     <description>Local facility 1</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local2</format>
                     <description>Local facility 2</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local3</format>
                     <description>Local facility 3</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local4</format>
                     <description>Local facility 4</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local5</format>
                     <description>Local facility 5</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local6</format>
                     <description>Local facility 6</description>
                   </valueHelp>
                   <valueHelp>
                     <format>local7</format>
                     <description>Local facility 7</description>
                   </valueHelp>
                 </properties>
                 <children>
                   <leafNode name="level">
                     <properties>
                       <help>Logging level</help>
                       <completionHelp>
                         <list>emerg alert crit err warning notice info debug all</list>
                       </completionHelp>
                       <constraint>
                         <regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
                       </constraint>
                       <constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
                       <valueHelp>
                         <format>emerg</format>
                         <description>Emergency messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>alert</format>
                         <description>Urgent messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>crit</format>
                         <description>Critical messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>err</format>
                         <description>Error messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>warning</format>
                         <description>Warning messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>notice</format>
                         <description>Messages for further investigation</description>
                       </valueHelp>
                       <valueHelp>
                         <format>info</format>
                         <description>Informational messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>debug</format>
                         <description>Debug messages</description>
                       </valueHelp>
                       <valueHelp>
                         <format>all</format>
                         <description>Log everything</description>
                       </valueHelp>
                     </properties>
                   </leafNode>
                 </children>
               </tagNode>
             </children>
           </node>
         </children>
       </node>
     </children>
   </node>
 </interfaceDefinition>
diff --git a/src/conf_mode/system-syslog.py b/src/conf_mode/system-syslog.py
index c4f3d2c9c..950a185bc 100755
--- a/src/conf_mode/system-syslog.py
+++ b/src/conf_mode/system-syslog.py
@@ -1,320 +1,333 @@
 #!/usr/bin/env python3
 #
 # Copyright (C) 2018 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
 # published by the Free Software Foundation.
 #
 # This program 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 General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 #
 
 import sys
 import os
 import re
 import jinja2
 
 from vyos.config import Config
 from vyos import ConfigError
 
 # config templates
 
 # /etc/rsyslog.d/vyos-rsyslog.conf ###
 configs = '''
 ## generated by syslog.py ##
 ## file based logging
 {% if files['global']['marker'] -%}
 $ModLoad immark
 {% if files['global']['marker-interval'] %}
 $MarkMessagePeriod  {{files['global']['marker-interval']}}
 {% endif %}
 {% endif -%}
 {% if files['global']['preserver_fqdn'] -%}
 $PreserveFQDN on
 {% endif -%}
 {% for file in files %}
 $outchannel {{file}},{{files[file]['log-file']}},{{files[file]['max-size']}},{{files[file]['action-on-max-size']}}
 {{files[file]['selectors']}} :omfile:${{file}}
 {% endfor %}
 {% if console %}
 ## console logging
 {% for con in console %}
 {{console[con]['selectors']}} /dev/console
 {% endfor %}
 {% endif %}
 {% if hosts %}
 ## remote logging
 {% for host in hosts %}
 {% if hosts[host]['proto'] == 'tcp' %}
+{% if hosts[host]['port'] %}
+{{hosts[host]['selectors']}} @@{{host}}:{{hosts[host]['port']}}
+{% else %}
 {{hosts[host]['selectors']}} @@{{host}}
+{% endif %}
+{% else %}
+{% if hosts[host]['port'] %}
+{{hosts[host]['selectors']}} @{{host}}:{{hosts[host]['port']}}
 {% else %}
 {{hosts[host]['selectors']}} @{{host}}
 {% endif %}
+{% endif %}
 {% endfor %}
 {% endif %}
 {% if user %}
 {% for u in user %}
 {{user[u]['selectors']}} :omusrmsg:{{u}}
 {% endfor %}
 {% endif %}
 '''
 
 logrotate_configs = '''
 {% for file in files %}
 {{files[file]['log-file']}} {
   missingok
   notifempty
   create
   rotate {{files[file]['max-files']}}
   size={{files[file]['max-size']//1024}}k
   postrotate
     invoke-rc.d rsyslog rotate > /dev/null
   endscript
 }
 {% endfor %}
 '''
 # config templates end
 
 
 def get_config():
     c = Config()
     if not c.exists('system syslog'):
         return None
     c.set_level('system syslog')
 
     config_data = {
         'files': {},
       'console': {},
       'hosts': {},
       'user': {}
     }
 
     #
     # /etc/rsyslog.d/vyos-rsyslog.conf
     # 'set system syslog global'
     #
     config_data['files'].update(
         {
             'global': {
                 'log-file': '/var/log/messages',
                 'max-size': 262144,
                 'action-on-max-size': '/usr/sbin/logrotate /etc/logrotate.d/vyos-rsyslog',
                 'selectors': '*.notice;local7.debug',
                 'max-files': '5',
                 'preserver_fqdn': False
             }
         }
     )
 
     if c.exists('global marker'):
         config_data['files']['global']['marker'] = True
         if c.exists('global marker interval'):
             config_data['files']['global'][
                 'marker-interval'] = c.return_value('global marker interval')
     if c.exists('global facility'):
         config_data['files']['global'][
             'selectors'] = generate_selectors(c, 'global facility')
     if c.exists('global archive size'):
         config_data['files']['global']['max-size'] = int(
             c.return_value('global archive size')) * 1024
     if c.exists('global archive file'):
         config_data['files']['global'][
             'max-files'] = c.return_value('global archive file')
     if c.exists('global preserve-fqdn'):
         config_data['files']['global']['preserver_fqdn'] = True
 
     #
     # set system syslog file
     #
 
     if c.exists('file'):
         filenames = c.list_nodes('file')
         for filename in filenames:
             config_data['files'].update(
                 {
                     filename: {
                         'log-file': '/var/log/user/' + filename,
                         'max-files': '5',
                         'action-on-max-size': '/usr/sbin/logrotate /etc/logrotate.d/' + filename,
                         'selectors': '*.err',
                         'max-size': 262144
                     }
                 }
             )
 
             if c.exists('file ' + filename + ' facility'):
                 config_data['files'][filename]['selectors'] = generate_selectors(
                     c, 'file ' + filename + ' facility')
             if c.exists('file ' + filename + ' archive size'):
                 config_data['files'][filename]['max-size'] = int(
                     c.return_value('file ' + filename + ' archive size')) * 1024
             if c.exists('file ' + filename + ' archive files'):
                 config_data['files'][filename]['max-files'] = c.return_value(
                     'file ' + filename + ' archive files')
 
     # set system syslog console
     if c.exists('console'):
         config_data['console'] = {
             '/dev/console': {
                 'selectors': '*.err'
             }
         }
 
     for f in c.list_nodes('console facility'):
         if c.exists('console facility ' + f + ' level'):
             config_data['console'] = {
                 '/dev/console': {
                     'selectors': generate_selectors(c, 'console facility')
                 }
             }
 
     # set system syslog host
     if c.exists('host'):
-        proto = 'udp'
         rhosts = c.list_nodes('host')
         for rhost in rhosts:
             for fac in c.list_nodes('host ' + rhost + ' facility'):
                 if c.exists('host ' + rhost + ' facility ' + fac + ' protocol'):
                     proto = c.return_value(
                         'host ' + rhost + ' facility ' + fac + ' protocol')
+                else:
+                    proto = 'udp'
 
             config_data['hosts'].update(
                 {
                     rhost: {
                         'selectors': generate_selectors(c, 'host ' + rhost + ' facility'),
                         'proto': proto
                     }
                 }
             )
+            if c.exists('host ' + rhost + ' port'):
+                config_data['hosts'][rhost]['port'] = c.return_value(['host', rhost, 'port'])
 
     # set system syslog user
     if c.exists('user'):
         usrs = c.list_nodes('user')
         for usr in usrs:
             config_data['user'].update(
                 {
                     usr: {
                         'selectors': generate_selectors(c, 'user ' + usr + ' facility')
                     }
                 }
             )
 
     return config_data
 
 
 def generate_selectors(c, config_node):
 # protocols and security are being mapped here
 # for backward compatibility with old configs
 # security and protocol mappings can be removed later
     if c.is_tag(config_node):
         nodes = c.list_nodes(config_node)
         selectors = ""
         for node in nodes:
             lvl = c.return_value(config_node + ' ' + node + ' level')
             if lvl == None:
                 lvl = "err"
             if lvl == 'all':
                 lvl = '*'
             if node == 'all' and node != nodes[-1]:
                 selectors += "*." + lvl + ";"
             elif node == 'all':
                 selectors += "*." + lvl
             elif node != nodes[-1]:
                 if node == 'protocols':
                     node = 'local7'
                 if node == 'security':
                     node = 'auth'
                 selectors += node + "." + lvl + ";"
             else:
                 if node == 'protocols':
                     node = 'local7'
                 if node == 'security':
                     node = 'auth'
                 selectors += node + "." + lvl
         return selectors
 
 
 def generate(c):
     if c == None:
         return None
 
     tmpl = jinja2.Template(configs, trim_blocks=True)
     config_text = tmpl.render(c)
     with open('/etc/rsyslog.d/vyos-rsyslog.conf', 'w') as f:
         f.write(config_text)
 
     # eventually write for each file its own logrotate file, since size is
     # defined it shouldn't matter
     tmpl = jinja2.Template(logrotate_configs, trim_blocks=True)
     config_text = tmpl.render(c)
     with open('/etc/logrotate.d/vyos-rsyslog', 'w') as f:
         f.write(config_text)
 
 
 def verify(c):
     if c == None:
         return None
-    #
+
+    ### may be obsolete
     # /etc/rsyslog.conf is generated somewhere and copied over the original (exists in /opt/vyatta/etc/rsyslog.conf)
     # it interferes with the global logging, to make sure we are using a single base, template is enforced here
     #
     if not os.path.islink('/etc/rsyslog.conf'):
         os.remove('/etc/rsyslog.conf')
         os.symlink(
             '/usr/share/vyos/templates/rsyslog/rsyslog.conf', '/etc/rsyslog.conf')
 
     # /var/log/vyos-rsyslog were the old files, we may want to clean those up, but currently there
     # is a chance that someone still needs it, so I don't automatically remove
     # them
+    ###
 
     if c == None:
         return None
 
     fac = [
         '*', 'auth', 'authpriv', 'cron', 'daemon', 'kern', 'lpr', 'mail', 'mark', 'news', 'protocols', 'security',
           'syslog', 'user', 'uucp', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7']
     lvl = ['emerg', 'alert', 'crit', 'err',
            'warning', 'notice', 'info', 'debug', '*']
 
     for conf in c:
         if c[conf]:
             for item in c[conf]:
                 for s in c[conf][item]['selectors'].split(";"):
                     f = re.sub("\..*$", "", s)
                     if f not in fac:
                         print (c[conf])
                         raise ConfigError(
                             'Invalid facility ' + s + ' set in ' + conf + ' ' + item)
                     l = re.sub("^.+\.", "", s)
                     if l not in lvl:
                         raise ConfigError(
                             'Invalid logging level ' + s + ' set in ' + conf + ' ' + item)
 
 
 def apply(c):
     if not c and os.path.exists('/var/run/rsyslogd.pid'):
         os.system("sudo systemctl stop syslog.socket")
         os.system("sudo systemctl stop rsyslog")
     else:
         if not os.path.exists('/var/run/rsyslogd.pid'):
             os.system("sudo systemctl start rsyslog >/dev/null")
         else:
             os.system("sudo systemctl restart rsyslog >/dev/null")
 
 
 if __name__ == '__main__':
     try:
         c = get_config()
         verify(c)
         generate(c)
         apply(c)
     except ConfigError as e:
         print(e)
         sys.exit(1)