<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:fb="http://firebrick.ltd.uk/xml/datatypes-v1.xsd" xmlns:x="http://firebrick.ltd.uk/xml/fb2900/" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://firebrick.ltd.uk/xml/fb2900/" x:dummy="0" elementFormDefault="qualified" fb:version="2.05.026">
   <import namespace="http://firebrick.ltd.uk/xml/datatypes-v1.xsd" schemaLocation="http://firebrick.ltd.uk/xml/datatypes-v1.xsd"/>
   <annotation>
      <documentation xml:lang="en">
 This appendix defines the object definitions used in the FireBrick
 FB2900 configuration.
 Copyright © 2008-2025 FireBrick Ltd.
 </documentation>
   </annotation>
   <simpleType name="fb-sw-update-delay" fb:help="Number of days to delay upgrade by">
      <restriction base="unsignedByte">
         <maxInclusive value="30"/>
      </restriction>
   </simpleType>
   <element name="config" type="x:config"/>
   <complexType name="config" fb:help="Top level config">
      <annotation>
         <documentation xml:lang="en">
   The top level config element contains all of the FireBrick configuration data.
  </documentation>
      </annotation>
      <sequence>
         <element name="system" type="x:system" minOccurs="0" fb:help="System settings"/>
         <element name="routing-tables" type="x:routing-table" minOccurs="0" maxOccurs="unbounded" fb:help="Routing table settings"/>
         <element name="user" type="x:user" minOccurs="0" maxOccurs="unbounded" fb:help="Admin users"/>
         <element name="eap" type="x:eap" minOccurs="0" maxOccurs="unbounded" fb:help="User access control via EAP"/>
         <element name="log" type="x:log" minOccurs="0" maxOccurs="63" fb:help="Log target controls"/>
         <element name="services" type="x:services" minOccurs="0" fb:help="General system services"/>
         <element name="ethernet" type="x:ethernet" minOccurs="0" maxOccurs="unbounded" fb:help="Ethernet port settings"/>
         <element name="link-activity" type="x:link-activity" minOccurs="0" maxOccurs="unbounded" fb:help="Port LED activity settings"/>
         <element name="sampling" type="x:sampling" minOccurs="0" fb:help="Sampling parameters"/>
         <element name="port" type="x:portdef" minOccurs="0" maxOccurs="8" fb:help="Port grouping and naming"/>
         <element name="interface" type="x:interface" minOccurs="0" maxOccurs="8192" fb:help="Ethernet interface (port-group/vlan) and subnets"/>
         <element name="ppp" type="x:pppoe" minOccurs="0" maxOccurs="50" fb:help="PPPoE settings"/>
         <element name="ppp-balance" type="x:ppp-balance" minOccurs="0" maxOccurs="1" fb:help="PPPoE server balancing"/>
         <element name="usb" type="x:usb" minOccurs="0" fb:help="USB and 3G/dongle settings"/>
         <element name="route" type="x:route" minOccurs="0" maxOccurs="unbounded" fb:help="Static routes"/>
         <element name="network" type="x:network" minOccurs="0" maxOccurs="unbounded" fb:help="Locally originated networks"/>
         <element name="nowhere" type="x:blackhole" minOccurs="0" maxOccurs="unbounded" fb:help="Dead end (icmp error) networks"/>
         <element name="blackhole" type="x:blackhole" minOccurs="0" maxOccurs="unbounded" fb:help="Black hole (dropped packets) networks"/>
         <element name="loopback" type="x:loopback" minOccurs="0" maxOccurs="unbounded" fb:help="Extra local addresses"/>
         <element name="ospf" type="x:ospf" minOccurs="0" maxOccurs="unbounded" fb:help="OSPF config (experimental)"/>
         <element name="bgp-filter" type="x:namedbgpmap" minOccurs="0" maxOccurs="unbounded" fb:help="Mapping and filtering rules for use with BGP peers"/>
         <element name="bgp" type="x:bgp" minOccurs="0" maxOccurs="100" fb:help="BGP config"/>
         <element name="cqm" type="x:cqm" minOccurs="0" fb:help="Constant Quality Monitoring config"/>
         <element name="l2tp" type="x:l2tp" minOccurs="0" fb:help="L2TP settings"/>
         <element name="fb105" type="x:fb105" minOccurs="0" maxOccurs="255" fb:help="FB105 tunnel settings"/>
         <element name="ipsec-ike" type="x:ipsec-ike" minOccurs="0" fb:help="IPsec connection settings"/>
         <element name="ping" type="x:ping" minOccurs="0" maxOccurs="2000" fb:help="Base ping graph settings"/>
         <element name="profile" type="x:profile" minOccurs="0" maxOccurs="unbounded" fb:help="Control profiles"/>
         <element name="shaper" type="x:shaper" minOccurs="0" maxOccurs="unbounded" fb:help="Named traffic shapers"/>
         <element name="ip-group" type="x:ip-group" minOccurs="0" maxOccurs="unbounded" fb:help="Named IP groups"/>
         <element name="route-override" type="x:route-override" minOccurs="0" maxOccurs="unbounded" fb:help="Routing override rules"/>
         <element name="rule-set" type="x:rule-set" minOccurs="0" maxOccurs="unbounded" fb:help="Firewall/mapping rules"/>
         <element name="voip" type="x:voip" minOccurs="0" fb:help="VoIP config"/>
         <element name="etun" type="x:etun" minOccurs="0" maxOccurs="unbounded" fb:help="Ether tunnel (RFC3378)"/>
         <element name="dhcp-relay" type="x:dhcp-relay" minOccurs="0" maxOccurs="unbounded" fb:help="DHCP server settings for remote / relayed requests" fb:col="0"/>
      </sequence>
      <attribute name="serial" type="string" use="optional" fb:help="Serial number"/>
      <attribute name="version" type="string" use="optional" fb:help="Code version"/>
      <attribute name="timestamp" type="dateTime" use="optional" fb:help="Config store time, set automatically when config is saved"/>
      <attribute name="who" type="string" use="optional" fb:help="Config store username"/>
      <attribute name="ip" type="fb:IPAddr" use="optional" fb:help="Config store IP address"/>
      <attribute name="patch" type="integer" use="optional" fb:help="Internal use, for s/w updates that change config syntax"/>
   </complexType>
   <complexType name="system" fb:help="System settings">
      <annotation>
         <documentation xml:lang="en">
    The system settings are the top level attributes of the system which apply globally.
    </documentation>
      </annotation>
      <sequence>
         <element name="link" type="x:link" minOccurs="0" maxOccurs="unbounded" fb:help="Intro links"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="System hostname"/>
      <attribute name="sw-update-profile" type="NMTOKEN" use="optional" fb:help="Profile name for when to load new s/w" fb:ref="profile"/>
      <attribute name="status-led-colour" type="fb:Colour" use="optional" default="green" fb:help="Default status LED colour" fb:col="1" fb:old="led"/>
      <attribute name="port-led-brightness" type="x:percentage" use="optional" default="100" fb:help="Brightness of port side LEDs" fb:col="1"/>
      <attribute name="mirror-led-brightness" type="x:percentage" use="optional" default="100" fb:help="Brightness of mirror side LEDs" fb:col="1"/>
      <attribute name="contact" type="string" use="optional" fb:help="Contact name" fb:col="1"/>
      <attribute name="email" type="string" use="optional" fb:help="Contact email" fb:col="1"/>
      <attribute name="location" type="string" use="optional" fb:help="Location description" fb:col="1"/>
      <attribute name="intro" type="string" use="optional" fb:help="Home page text" fb:col="2"/>
      <attribute name="home-status" type="boolean" default="true" use="optional" fb:help="Port status on home page" fb:col="1"/>
      <attribute name="port-status" type="boolean" default="true" use="optional" fb:help="Live port LEDs on status" fb:col="1"/>
      <attribute name="login-intro" type="string" use="optional" fb:help="Login page text" fb:col="4"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Web/console" fb:help="Log system events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Web/Flash/console" fb:help="Log system errors" fb:ref="log"/>
      <attribute name="log-eth" type="NMTOKEN" use="optional" fb:default="Web/console" fb:help="Log Ethernet messages" fb:ref="log"/>
      <attribute name="log-eth-error" type="NMTOKEN" use="optional" fb:default="Web/Flash/console" fb:help="Log Ethernet errors" fb:ref="log"/>
      <attribute name="log-eth-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log Ethernet debug" fb:ref="log" fb:col="0"/>
      <attribute name="log-stats" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log one second stats" fb:ref="log"/>
      <attribute name="log-ha-stats" type="NMTOKEN" use="optional" fb:default="Not logging" fb:old="log-hal" fb:help="Log stats for L2TP HA sets" fb:ref="log" fb:col="0"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log system debug messages" fb:ref="log" fb:col="0"/>
      <attribute name="log-diagnostic" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log system diagnostic messages" fb:ref="log" fb:col="0"/>
      <attribute name="log-support" type="NMTOKEN" use="optional" fb:default="Web logs" fb:help="Log support messages (e.g. stack trace)" fb:ref="log" fb:col="0" fb:old="log-panic"/>
      <attribute name="log-config" type="NMTOKEN" use="optional" fb:default="Web/Flash/console" fb:help="Log config load" fb:ref="log" fb:col="0"/>
      <attribute name="log-route-nexthop" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="Log next hop changes" fb:ref="log" fb:col="0"/>
      <attribute name="log-tcp-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log TCP/TLS debug messages" fb:ref="log" fb:col="0"/>
      <attribute name="log-tls" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log TLS error/event messages" fb:ref="log" fb:col="0"/>
      <attribute name="log-ppp-dump" type="x:ppp-dump" use="optional" fb:help="PPP dump format" fb:col="0"/>
      <attribute name="acme-profile" type="NMTOKEN" use="optional" fb:help="Profile for when to do ACME renewals" fb:ref="profile"/>
      <attribute name="acme-hostname" type="x:stringlist" use="optional" fb:help="Public hostname(s) for FireBrick for HTTPS" fb:col="3"/>
      <attribute name="acme-terms-agreed-email" type="string" use="optional" fb:help="Put your email if you agree CA terms" fb:col="3"/>
      <attribute name="acme-directory" type="string" use="optional" default="https://acme-v02.api.letsencrypt.org/directory" fb:help="ACME server directory" fb:col="0"/>
      <attribute name="acme-renew" type="positiveInteger" use="optional" default="30" fb:help="Renewal before expiry (days)" fb:col="0"/>
      <attribute name="acme-account-keygen" type="boolean" use="optional" default="true" fb:help="Automatically generate private keys for ACME accounts as needed" fb:col="0" fb:old="acme-keygen"/>
      <attribute name="acme-domain-keygen" type="boolean" use="optional" default="true" fb:help="Automatically generate private keys for ACME domains as needed" fb:col="0"/>
      <attribute name="acme-source-ip" type="fb:IP46Addr" use="optional" fb:help="Source IP for ACME renewal" fb:col="0"/>
      <attribute name="log-acme" type="NMTOKEN" use="optional" fb:help="Log ACME" fb:col="0" fb:ref="log"/>
      <attribute name="log-acme-error" type="NMTOKEN" use="optional" fb:help="Log ACME errors" fb:col="0" fb:ref="log"/>
      <attribute name="log-acme-debug" type="NMTOKEN" use="optional" fb:help="Log ACME debug" fb:col="0" fb:ref="log"/>
      <attribute name="spoof-mac" type="x:macspoof" use="optional" fb:help="Spoof MAC base address - use with caution!" fb:col="0"/>
      <attribute name="eth-rx-qsize" type="unsignedInt" use="optional" default="171" fb:help="Size of eth driver Rx queue" fb:col="0"/>
      <attribute name="eth-tx-qsize" type="unsignedInt" use="optional" default="341" fb:help="Size of eth driver Tx queue" fb:col="0"/>
      <attribute name="eth-can-hibernate" type="boolean" use="optional" default="true" fb:help="Ethernet switch can hibernate" fb:col="0"/>
      <attribute name="panic-stack-bytes" type="unsignedInt" use="optional" default="0" fb:help="Stack context for certain panics (bytes)" fb:col="0"/>
      <attribute name="sw-update" type="x:autoloadtype" use="optional" default="factory" fb:help="Load new software automatically"/>
      <attribute name="sw-update-delay" type="x:fb-sw-update-delay" use="optional" default="0" fb:help="Number of days after release to wait before automatically upgrading" fb:col="0"/>
      <attribute name="pre-reboot-url" type="string" use="optional" fb:col="0" fb:help="URL to GET prior to s/w reboot (typically to warn nagios)"/>
      <attribute name="auto-backup-url" type="string" use="optional" fb:col="0" fb:help="URL to http POST after config changed"/>
      <attribute name="soft-watchdog" type="boolean" use="optional" default="false" fb:help="Debug - use only if advised; do not use on an unattended FireBrick" fb:col="0"/>
      <attribute name="tcp-stealth" type="boolean" use="optional" default="false" fb:help="Ignore (as opposed to reject) TCP to the FireBrick itself that isn't accepted" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for system functions (s/w updates, etc)" fb:col="0"/>
      <attribute name="lacp-hot-standby" type="x:lacp-hot-standby" use="optional" default="nosync" fb:help="Allow LACP to use hot standby" fb:col="0"/>
   </complexType>
   <complexType name="link" fb:help="Web links">
      <annotation>
         <documentation xml:lang="en">
    Links to other web pages
    </documentation>
      </annotation>
      <attribute name="level" type="x:user-level" use="optional" default="GUEST" fb:help="Login level required"/>
      <attribute name="name" type="string" use="optional" fb:help="Link name" fb:col="-1"/>
      <attribute name="text" type="string" use="optional" fb:help="Link text" fb:col="3"/>
      <attribute name="url" type="string" use="optional" fb:help="Link address" fb:col="3"/>
      <attribute name="same-tab" type="boolean" use="optional" default="false" fb:help="Open in same tab" fb:col="1"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="services" fb:help="System services">
      <annotation>
         <documentation xml:lang="en">
    System services are various generic services that the system provides, and allows access controls and settings for these to be specified.
    The service is only active if the corresponding element is included in services, otherwise it is disabled.
    </documentation>
      </annotation>
      <attribute name="allow-6in4" type="boolean" use="optional" default="false" fb:help="Allow 6in4 tunnelling."/>
      <sequence>
         <element name="http" type="x:http-service" minOccurs="0" fb:help="Web server settings"/>
         <element name="dns" type="x:dns-service" minOccurs="0" fb:help="DNS service settings"/>
         <element name="radius" type="x:radius-service" minOccurs="0" fb:help="RADIUS server/proxy settings"/>
         <element name="mqtt" type="x:mqtt-service" minOccurs="0" fb:help="MQTT config"/>
         <element name="tls-serial" type="x:tls-serial" minOccurs="0" fb:help="TLS serial connection settings"/>
         <element name="telnet" type="x:telnet-service" minOccurs="0" fb:help="Telnet server settings"/>
         <element name="snmp" type="x:snmp-service" minOccurs="0" fb:help="SNMP server settings"/>
         <element name="time" type="x:time-service" minOccurs="0" fb:help="System time server settings" fb:old="ntp"/>
      </sequence>
   </complexType>
   <complexType name="user" fb:help="Admin users">
      <annotation>
         <documentation xml:lang="en">
    User names, passwords and abilities for admin users
    </documentation>
      </annotation>
      <attribute name="name" type="x:username" fb:help="User name" fb:key="user"/>
      <attribute name="full-name" type="string" use="optional" fb:help="Full name" fb:col="2"/>
      <attribute name="password" type="fb:Password" fb:help="User password"/>
      <attribute name="timeout" type="fb:duration" use="optional" default="5:00" fb:help="Login idle timeout (zero to stay logged in, not recommended)"/>
      <attribute name="config" type="x:config-access" use="optional" default="full" fb:help="Config access level"/>
      <attribute name="level" type="x:user-level" use="optional" default="ADMIN" fb:help="Login level"/>
      <attribute name="otp-seed" type="fb:OTP" use="optional" fb:help="OTP seed (do not edit by hand)" fb:old="otp" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:help="Restrict logins to be from specific IP addresses" fb:col="2"/>
      <attribute name="local-only" type="boolean" use="optional" default="false" fb:help="Restrict access to locally connected Ethernet subnets only"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Restrict login to specific routing table" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="Log events" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="username" fb:help="Login name">
      <restriction base="NMTOKEN">
         <maxLength value="20"/>
      </restriction>
   </simpleType>
   <simpleType name="userlist" fb:help="List of user names">
      <list itemType="x:username"/>
   </simpleType>
   <simpleType name="user-level" fb:help="User login level">
      <annotation>
         <documentation xml:lang="en">
    User login level - commands available are restricted according to assigned level.
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="NOBODY" fb:help="Unknown or not logged in user"/>
         <enumeration value="GUEST" fb:help="Guest user"/>
         <enumeration value="USER" fb:help="Normal unprivileged user"/>
         <enumeration value="ADMIN" fb:help="System administrator"/>
         <enumeration value="DEBUG" fb:help="System debugger"/>
      </restriction>
   </simpleType>
   <simpleType name="config-access" fb:help="Type of access user has to config">
      <restriction base="string">
         <enumeration value="none" fb:help="No access unless explicitly listed"/>
         <enumeration value="view" fb:help="View only access (no passwords)"/>
         <enumeration value="read" fb:help="Read only access (with passwords)"/>
         <enumeration value="demo" fb:help="Full view and edit access but can only test config, not save"/>
         <enumeration value="test" fb:help="Full view and edit access but must test save config first"/>
         <enumeration value="full" fb:help="Full view and edit access"/>
      </restriction>
   </simpleType>
   <complexType name="eap" fb:help="User access controlled by EAP">
      <annotation>
         <documentation xml:lang="en">
    Identities, passwords and access methods for access controlled with EAP
    </documentation>
      </annotation>
      <attribute name="name" type="string" fb:help="User or account name"/>
      <attribute name="full-name" type="string" use="optional" fb:help="Full name" fb:col="2"/>
      <attribute name="password" type="fb:Secret" fb:help="User password"/>
      <attribute name="subsystem" type="x:eap-subsystem" fb:help="Access controlled subsystem"/>
      <attribute name="methods" type="x:eap-methods" fb:help="Allowed methods"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="eap-subsystem" fb:help="Subsystem with EAP access control">
      <restriction base="string">
         <enumeration value="IPsec" fb:help="IPsec/IKEv2 VPN"/>
      </restriction>
   </simpleType>
   <simpleType name="eap-methods" fb:help="List of allowed EAP access methods">
      <list itemType="x:eap-method" fb:set="true"/>
   </simpleType>
   <simpleType name="eap-method" fb:help="EAP access method">
      <restriction base="string">
         <enumeration value="MD5" fb:help="MD5 Challenge"/>
         <enumeration value="MSChapV2" fb:help="MS Challenge"/>
      </restriction>
   </simpleType>
   <complexType name="telnet-service" fb:help="Telnet service settings">
      <annotation>
         <documentation xml:lang="en">
    Telnet control interface
    </documentation>
      </annotation>
      <attribute name="table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for access to service" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which service can be accessed" fb:col="2"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only" fb:col="1"/>
      <attribute name="port" type="unsignedShort" use="optional" default="23" fb:help="Service port" fb:col="0"/>
      <attribute name="prompt" type="string" use="optional" fb:default="system name" fb:help="Prompt" fb:col="1"/>
   </complexType>
   <complexType name="http-service" fb:help="Web service settings">
      <annotation>
         <documentation xml:lang="en">
    Web management pages
    </documentation>
      </annotation>
      <attribute name="table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for access to service" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which service can be accessed" fb:col="2"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="log-client" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log client accesses" fb:ref="log" fb:col="0"/>
      <attribute name="log-client-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log client accesses (debug)" fb:ref="log" fb:col="0"/>
      <attribute name="trusted" type="x:ipnamerangelist" use="optional" fb:help="List of allowed IP ranges from which additional access to certain functions is available" fb:col="0"/>
      <attribute name="banner-background" type="fb:Colour" use="optional" default="#bd1220" fb:help="Override default colours" fb:col="1"/>
      <attribute name="highlight-text" type="fb:Colour" use="optional" default="from banner" fb:help="Override default colours" fb:col="0"/>
      <attribute name="config-boxes" type="fb:Colour" use="optional" default="from banner" fb:help="Config editor colours" fb:col="0"/>
      <attribute name="css-url" type="string" use="optional" fb:help="Additional CSS for web control pages" fb:col="0"/>
      <attribute name="js-url" type="string" use="optional" fb:help="Additional javascript for web control pages (logged in/trusted-ip)" fb:col="0"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only" fb:col="1"/>
      <attribute name="allow-acme" type="boolean" use="optional" default="true" fb:help="Allow limited port 80 HTTP access for ACME during renewal" fb:col="0"/>
      <attribute name="mode" type="x:http-mode" use="optional" default="redirect-to-https-if-acme" fb:help="Security mode" fb:col="0"/>
      <attribute name="self-sign" type="boolean" use="optional" default="true" fb:help="Create self signed certificate for HTTPS when necessary" fb:col="0"/>
      <attribute name="certlist" type="x:nmtokenlist" use="optional" fb:default="use any suitable" fb:help="Certificate(s) to be used for HTTPS sessions" fb:col="0"/>
      <attribute name="https-port" type="unsignedShort" use="optional" default="443" fb:help="Service port for HTTPS access" fb:col="0"/>
      <attribute name="port" type="unsignedShort" use="optional" default="80" fb:help="Service port for HTTP access" fb:col="0"/>
      <attribute name="access-control-allow-origin" type="string" use="optional" fb:help="Additional HTTP header" fb:col="0"/>
      <attribute name="content-security-policy" type="string" use="optional" fb:help="Additional HTTP header" fb:col="0"/>
      <attribute name="x-frame-options" type="string" use="optional" default="SAMEORIGIN" fb:help="Additional HTTP header" fb:col="0"/>
      <attribute name="x-xss-protection" type="string" use="optional" default="1; mode=block" fb:help="Additional HTTP header" fb:col="0"/>
      <attribute name="x-content-type-options" type="string" use="optional" default="nosniff" fb:help="Additional HTTP header" fb:col="0"/>
      <attribute name="referrer-policy" type="string" use="optional" default="no-referrer" fb:help="Additional HTTP header" fb:col="0"/>
   </complexType>
   <complexType name="dns-service" fb:help="DNS service settings">
      <annotation>
         <documentation xml:lang="en">
    DNS forwarding resolver service
    </documentation>
      </annotation>
      <sequence>
         <element name="host" type="x:dns-host" minOccurs="0" maxOccurs="unbounded" fb:help="Fixed local DNS host entries"/>
         <element name="block" type="x:dns-block" minOccurs="0" maxOccurs="unbounded" fb:help="Fixed local DNS host blocks"/>
      </sequence>
      <attribute name="table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for access to service" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which service can be accessed" fb:col="2"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="log-interface" type="x:nmtokenlist" use="optional" fb:default="All interfaces" fb:help="Only do normal log for specific interface(s)" fb:ref="-interface"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only" fb:col="1"/>
      <attribute name="domain" type="string" use="optional" fb:help="Our domain" fb:col="2"/>
      <attribute name="auto-dhcp" type="boolean" use="optional" fb:help="Forward and reverse DNS for names in DHCP using this domain" fb:col="1"/>
      <attribute name="auto-dhcp-new" type="string" use="optional" fb:help="Name to use for last new DHCP allocation (since last reboot)" fb:col="1"/>
      <attribute name="resolvers" type="x:iplist" use="optional" fb:help="Recursive DNS resolvers to use" fb:col="2"/>
      <attribute name="resolvers-table" type="x:routetable" use="optional" fb:default="as table / 0" fb:help="Routing table for specified resolvers" fb:col="0"/>
      <attribute name="fallback" type="boolean" use="optional" default="true" fb:help="For incoming requests, if no server in required table, relay to any DNS available" fb:col="0"/>
      <attribute name="fallback-table" type="x:routetable" use="optional" fb:default="Don't fallback" fb:help="For incoming requests, if no server in requesting table, relay to any DNS available in this table" fb:col="0"/>
      <attribute name="caching" type="boolean" use="optional" default="true" fb:help="Cache relayed DNS entries locally" fb:col="0"/>
   </complexType>
   <complexType name="dns-host" fb:help="Fixed local DNS host settings">
      <annotation>
         <documentation xml:lang="en">
    DNS forwarding resolver service
    </documentation>
      </annotation>
      <attribute name="name" type="x:stringlist" fb:help="Host names (can use * as a part of a domain)" fb:col="-2"/>
      <attribute name="ip" type="x:iplist" use="optional" fb:default="Our IP" fb:help="IP addresses to serve (or our IP if omitted)" fb:col="-2"/>
      <attribute name="reverse" type="boolean" use="optional" fb:help="Map reverse DNS as well" fb:col="1"/>
      <attribute name="ttl" type="unsignedInt" use="optional" default="60" fb:help="Time to live" fb:col="0"/>
      <attribute name="restrict-to" type="x:ipnamerangelist" use="optional" fb:help="List of IP ranges to which this is served" fb:col="0" fb:old="restrict"/>
      <attribute name="restrict-interface" type="x:nmtokenlist" use="optional" fb:help="Only apply on certain interface(s)" fb:ref="-interface"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="any" fb:help="Routing table applicable" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dns-block" fb:help="Fixed local DNS blocks">
      <annotation>
         <documentation xml:lang="en">
    DNS forwarding resolver service
    </documentation>
      </annotation>
      <attribute name="name" type="x:stringlist" fb:help="Host names (can use * as a part of a domain)" fb:col="-2"/>
      <attribute name="ttl" type="unsignedInt" use="optional" default="60" fb:help="Time to live" fb:col="0"/>
      <attribute name="restrict-to" type="x:ipnamerangelist" use="optional" fb:help="List of IP ranges to which this is served" fb:col="0" fb:old="restrict"/>
      <attribute name="restrict-interface" type="x:nmtokenlist" use="optional" fb:help="Only apply on certain interface(s)" fb:ref="-interface"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="any" fb:help="Routing table applicable" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="snmp-service" fb:help="SNMP service settings">
      <annotation>
         <documentation xml:lang="en">
    The SNMP service has general service settings and also specific attributes for SNMP such as community
    </documentation>
      </annotation>
      <attribute name="table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for access to service" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which service can be accessed" fb:col="2"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="local-only" type="boolean" use="optional" default="false" fb:help="Restrict access to locally connected Ethernet subnets only" fb:col="1"/>
      <attribute name="port" type="unsignedShort" use="optional" default="161" fb:help="Service port" fb:col="0"/>
      <attribute name="community" type="fb:Secret" use="optional" default="public" fb:help="Community string"/>
   </complexType>
   <complexType name="time-service" fb:help="System time server settings">
      <annotation>
         <documentation xml:lang="en">
    The time settings define which NTP servers to synchronize the system clock from, and provide controls for daylight saving (summer time).
    The defaults are those that apply to the EU
    </documentation>
      </annotation>
      <attribute name="table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for access to service" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which service can be accessed" fb:col="2"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only" fb:col="1"/>
      <attribute name="ntp-servers" type="x:ipnamelist" use="optional" default="ntp.firebrick.ltd.uk" fb:help="List of NTP time servers (IP or hostname) from which time may be synchronized and served by ntp (Null list disables NTP)" fb:old="ntpserver" fb:col="2"/>
      <attribute name="ntp-peer-table" type="x:routetable" use="optional" default="0" fb:help="Routing table number used for outgoing ntp peer requests" fb:col="0"/>
      <attribute name="ntp-control-table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for incoming control (ntpq) requests" fb:col="0"/>
      <attribute name="ntp-control-allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which control (ntpq) requests can be accessed" fb:col="0"/>
      <attribute name="ntp-control-local-only" type="boolean" use="optional" default="true" fb:help="Restrict control (ntpq) access to locally connected Ethernet subnets only" fb:col="0"/>
      <attribute name="minpoll" type="fb:duration" use="optional" default="64" fb:help="NTP minimum poll rate" fb:col="0"/>
      <attribute name="maxpoll" type="fb:duration" use="optional" default="1024" fb:help="NTP maximum poll rate" fb:col="0"/>
      <attribute name="legacy-timeserver" type="boolean" use="optional" default="false" fb:help="Serve legacy TIME service on UDP port 37" fb:col="1"/>
      <attribute name="tz1-name" type="string" use="optional" default="GMT" fb:help="Timezone 1 name" fb:col="-1"/>
      <attribute name="tz1-offset" type="fb:duration" use="optional" default="0" fb:help="Timezone 1 offset from UTC"/>
      <attribute name="tz12-month" type="x:month" use="optional" default="Mar" fb:help="Timezone 1 to 2 month" fb:col="0"/>
      <attribute name="tz12-date" type="x:datenum" use="optional" default="25" fb:help="Timezone 1 to 2 earliest date in month" fb:col="0"/>
      <attribute name="tz12-day" type="x:day" use="optional" default="Sun" fb:help="Timezone 1 to 2 day of week of change" fb:col="0"/>
      <attribute name="tz12-time" type="time" use="optional" default="01:00:00" fb:help="Timezone 1 to 2 local time of change" fb:col="0"/>
      <attribute name="tz2-name" type="string" use="optional" default="BST" fb:help="Timezone 2 name"/>
      <attribute name="tz2-offset" type="fb:duration" use="optional" default="1:00:00" fb:help="Timezone 2 offset from UTC"/>
      <attribute name="tz21-month" type="x:month" use="optional" default="Oct" fb:help="Timezone 2 to 1 month" fb:col="0"/>
      <attribute name="tz21-date" type="x:datenum" use="optional" default="25" fb:help="Timezone 2 to 1 earliest date in month" fb:col="0"/>
      <attribute name="tz21-day" type="x:day" use="optional" default="Sun" fb:help="Timezone 2 to 1 day of week of change" fb:col="0"/>
      <attribute name="tz21-time" type="time" use="optional" default="02:00:00" fb:help="Timezone 2 to 1 local time of change" fb:col="0"/>
   </complexType>
   <complexType name="tls-serial" fb:help="TLS serial settings">
      <annotation>
         <documentation xml:lang="en">
    For remote encrypted access to the serial console.
    </documentation>
      </annotation>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="All" fb:help="Routing table number for access to service" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which service can be accessed" fb:col="2"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="port" type="unsignedShort" use="optional" default="230" fb:help="Service port" fb:col="0"/>
      <attribute name="certlist" type="x:nmtokenlist" use="optional" fb:default="use any suitable" fb:help="Certificate(s) to be used for TLS serial sessions" fb:col="0"/>
      <attribute name="self-sign" type="boolean" use="optional" default="true" fb:help="Create self signed certificate when necessary" fb:col="0"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only" fb:col="1"/>
   </complexType>
   <complexType name="route" fb:help="Static routes">
      <annotation>
         <documentation xml:lang="en">
    Static routes define prefixes which are permanently in the routing table, and whether these should be announced by routing protocols or not.
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="as-path" type="x:aslist" use="optional" fb:help="Custom AS path as if network received" fb:col="0"/>
      <attribute name="tag" type="x:communitylist" use="optional" fb:help="List of community tags" fb:col="0"/>
      <attribute name="speed" type="unsignedInt" use="optional" fb:help="Egress rate limit (b/s)"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="ip" type="x:prefixlist" fb:help="One or more network prefixes" fb:col="-2"/>
      <attribute name="gateway" type="x:iplist" fb:help="One or more target gateway IPs" fb:col="2"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="network" fb:help="Locally originated networks">
      <annotation>
         <documentation xml:lang="en">
    Network blocks that are announced but not actually added to internal routes - note that blackhole and nowhere objects can also announce but not add routing.
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="ip" type="x:prefixlist" fb:help="One or more network prefixes" fb:col="-2"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" default="true" fb:help="BGP announce mode for routes"/>
      <attribute name="as-path" type="x:aslist" use="optional" fb:help="Custom AS path as if network received" fb:col="0"/>
      <attribute name="tag" type="x:communitylist" use="optional" fb:help="List of community tags" fb:col="0"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="blackhole" fb:help="Dead end networks">
      <annotation>
         <documentation xml:lang="en">
    Networks that go nowhere
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="ip" type="x:prefixlist" fb:help="One or more network prefixes" fb:col="-2"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" default="false" fb:help="BGP announce mode for routes"/>
      <attribute name="no-fib" type="boolean" use="optional" fb:help="Route not in forwarding, only for EBGP" fb:col="0"/>
      <attribute name="ospf" type="boolean" use="optional" fb:help="OSPF announce mode for route" fb:col="0"/>
      <attribute name="as-path" type="x:aslist" use="optional" fb:help="Custom AS path as if network received" fb:col="0"/>
      <attribute name="tag" type="x:communitylist" use="optional" fb:help="List of community tags" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="loopback" fb:help="Locally originated networks">
      <annotation>
         <documentation xml:lang="en">
   Loopback addresses define local IP addresses
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="as-path" type="x:aslist" use="optional" fb:help="Custom AS path as if network received" fb:col="0"/>
      <attribute name="tag" type="x:communitylist" use="optional" fb:help="List of community tags" fb:col="0"/>
      <attribute name="ip" type="x:iplist" fb:help="One or more local network addresses" fb:col="-2"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="portdef" fb:help="Port grouping and naming">
      <annotation>
         <documentation xml:lang="en">
    Port grouping and naming
    </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Name" fb:key="portname"/>
      <attribute name="ports" type="x:ports" fb:help="Physical port(s)"/>
      <attribute name="dongle" type="NMTOKEN" fb:help="USB dongle config name (for eth/4G dongle)" use="optional" fb:ref="dongle"/>
      <attribute name="trunk" type="x:trunk-mode" default="false" use="optional" fb:help="Trunk ports"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="interface" fb:help="Port-group/VLAN interface settings">
      <annotation>
         <documentation xml:lang="en">
    The interface definition relates to a specific physical port group and VLAN. It includes subnets and VRRP that apply to that interface.
    </documentation>
      </annotation>
      <sequence>
         <element name="subnet" type="x:subnet" minOccurs="0" maxOccurs="unbounded" fb:help="IP subnet on the interface"/>
         <element name="ra-subnet-template" type="x:subnet-template" minOccurs="0" maxOccurs="unbounded" fb:help="Subnet options for RA client"/>
         <element name="dhcp6-client" type="x:dhcp6-client" minOccurs="0" maxOccurs="1" fb:help="DHCPv6 Client"/>
         <element name="vrrp" type="x:vrrp" minOccurs="0" maxOccurs="unbounded" fb:help="VRRP settings"/>
         <element name="dhcp" type="x:dhcps" minOccurs="0" maxOccurs="unbounded" fb:help="DHCP server settings"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" use="optional" fb:help="Name" fb:key="interface"/>
      <attribute name="port" type="NMTOKEN" fb:help="Port group name" fb:ref="portname"/>
      <attribute name="vlan" type="x:vlan" use="optional" default="0" fb:help="VLAN ID (0=untagged)"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="mtu" type="x:mtu" use="optional" default="1500" fb:help="MTU for this interface"/>
      <attribute name="wan" type="boolean" use="optional" fb:help="Do not consider this interface 'local' for 'local-only' checks" fb:col="1"/>
      <attribute name="pd" type="boolean" use="optional" fb:default="If not WAN and no ra-subnet-templates and no ra subnets" fb:help="Available for IPv6 prefix delegation"/>
      <attribute name="pd-pcp" type="boolean" use="optional" default="true" fb:help="Accept NAT-PMP / PCP on PD subnets" fb:col="0"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table applicable" fb:col="0"/>
      <attribute name="cug" type="x:cug" use="optional" fb:help="Closed user group ID" fb:col="0"/>
      <attribute name="cug-restrict" type="boolean" use="optional" fb:help="Closed user group restricted traffic (only to/from same CUG ID)" fb:col="0"/>
      <attribute name="ping" type="fb:IPAddr" use="optional" fb:help="Ping address to add loss/latency to graph for interface" fb:col="2"/>
      <attribute name="dhcp-relay" type="fb:IP4Addr" use="optional" fb:help="Relay any unresolved requests to external server" fb:col="2"/>
      <attribute name="sampling" type="x:sampling-mode" use="optional" default="off" fb:help="Perform sampling"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log"/>
      <attribute name="log-dhcp" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log DHCP events not related to a pool" fb:ref="log"/>
      <attribute name="link" type="NMTOKEN" use="optional" fb:help="Interface to which this is linked at layer 2" fb:ref="interface" fb:col="0"/>
      <attribute name="restrict-mac" type="boolean" use="optional" fb:help="Use only one MAC on this interface" fb:col="0"/>
      <attribute name="mac-suffix" type="x:macsuffix" use="optional" fb:help="Interface MAC ends with this hex value" fb:col="0"/>
      <attribute name="source-filter" type="x:sfoption" use="optional" fb:help="Source filter traffic received via this interface"/>
      <attribute name="source-filter-table" type="x:routetable" use="optional" fb:default="interface table" fb:help="Routing table to use for source filtering checks"/>
      <attribute name="ospf-cost" type="unsignedShort" use="optional" default="1" fb:help="Outbound link cost" fb:col="0"/>
      <attribute name="fast-l2tp" type="boolean" use="optional" fb:help="Set on interfaces that are mainly terminating L2TP traffic" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="subnet" fb:help="Subnet settings">
      <annotation>
         <documentation xml:lang="en">
    Subnet settings define the IP address(es) of the FireBrick, and also allow default routes to be set.
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="ip" type="x:subnetlist" use="optional" fb:default="Automatic by DHCP" fb:help="One or more IP/len" fb:col="-2"/>
      <attribute name="gateway" type="x:iplist" use="optional" fb:help="One or more gateways to install" fb:col="2"/>
      <attribute name="ra" type="x:ramode" use="optional" default="false" fb:help="If to announce IPv6 RA for this subnet"/>
      <attribute name="ra-max" type="x:ra-max" use="optional" default="600" fb:help="Max RA send interval" fb:col="0"/>
      <attribute name="ra-min" type="x:ra-min" use="optional" fb:help="Min RA send interval" fb:col="0" fb:default="ra-max/3"/>
      <attribute name="ra-onlink" type="boolean" use="optional" default="true" fb:help="RA 'L' (onlink) flag" fb:col="0"/>
      <attribute name="ra-autonomous" type="boolean" use="optional" fb:default="If managed not set" fb:help="RA 'A' (autonomous) flag" fb:col="0"/>
      <attribute name="ra-managed" type="boolean" use="optional" fb:help="RA 'M' (managed) flag" fb:col="0"/>
      <attribute name="ra-other" type="boolean" use="optional" fb:help="RA 'O' (other) flag" fb:col="0"/>
      <attribute name="ra-profile" type="NMTOKEN" use="optional" fb:help="Profile, if inactive then forces low priority RA" fb:ref="profile" fb:col="0"/>
      <attribute name="ra-mtu" type="unsignedShort" use="optional" fb:help="MTU to use on RA" fb:default="As subnet"/>
      <attribute name="simple-dhcpv6" type="boolean" use="optional" fb:help="Simple DHCPv6 server (fixed addresses)" fb:col="0"/>
      <attribute name="ra-dns" type="x:ip6list" use="optional" fb:help="List of recursive DNS servers in route announcements" fb:col="2" fb:default="Our IP"/>
      <attribute name="ra-dnssl" type="x:stringlist" use="optional" fb:help="List of DNS search domains in route announcements" fb:col="2"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for subnet (highest wins)" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="mtu" type="x:mtu" use="optional" fb:help="MTU for subnet" fb:default="As interface"/>
      <attribute name="ttl" type="unsignedByte" use="optional" default="64" fb:help="TTL for originating traffic via subnet" fb:col="0"/>
      <attribute name="arp-timeout" type="unsignedShort" default="60" use="optional" fb:help="Max lifetime on ARP and ND" fb:col="0"/>
      <attribute name="broadcast" type="boolean" use="optional" default="false" fb:help="If broadcast address allowed" fb:col="0"/>
      <attribute name="proxy-arp" type="boolean" use="optional" default="false" fb:help="Answer ARP/ND by proxy if we have routing"/>
      <attribute name="accept-dns" type="boolean" use="optional" default="true" fb:help="Accept DNS servers specified by DHCP" fb:col="0"/>
      <attribute name="nat" type="boolean" use="optional" default="false" fb:help="Short cut to set nat default mode on all IPv4 traffic from subnet (can be overridden by firewall rules)"/>
      <attribute name="pcp" type="boolean" use="optional" fb:default="If nat" fb:help="Accept NAT-PMP / PCP" fb:col="0"/>
      <attribute name="dhcp-class" type="string" use="optional" fb:default="FB-type" fb:help="DHCP client option 60 (Class)" fb:col="0"/>
      <attribute name="dhcp-client-id" type="string" use="optional" fb:default="MAC" fb:help="DHCP client option 61 (Client-Identifier)" fb:col="0"/>
      <attribute name="test" type="fb:IPAddr" use="optional" fb:help="Test link state using ARP/ND for this IP" fb:col="0"/>
      <attribute name="mac-suffix" type="x:macsuffix" use="optional" fb:help="Subnet MAC ends with this hex value" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="subnet-template" fb:help="Subnet option templates for RA">
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="gateway-match" type="x:ipnamerangelist" use="optional" fb:default="Any IP" fb:help="Apply only to received RAs with a gateway in these IPs" fb:col="-2"/>
      <attribute name="accept-dns" type="boolean" use="optional" fb:default="True if not set elsewhere" fb:help="Accept DNS servers specified by DHCP/SLAAC"/>
      <attribute name="match-dhcp6-client" type="boolean" use="optional" default="true" fb:help="Allow matching RAs to be used for an explicit DHCP6 client"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dhcp6-client" fb:help="DHCPv6 Client">
      <attribute name="accept-dns" type="boolean" use="optional" default="true"/>
      <attribute name="arp-timeout" type="unsignedShort" default="60" use="optional" fb:help="Max lifetime on ARP and ND" fb:col="0"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for subnet (highest wins)" fb:col="0"/>
      <attribute name="ttl" type="unsignedByte" use="optional" default="64" fb:help="TTL for originating traffic via subnet" fb:col="0"/>
      <attribute name="mtu" type="x:mtu" use="optional" fb:help="MTU for subnet" fb:default="As interface"/>
      <attribute name="mac-suffix" type="x:macsuffix" use="optional" fb:help="DHCPC MAC ends with this hex value" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dhcp-attr-hex" fb:help="DHCP server attributes (hex)">
      <annotation>
         <documentation xml:lang="en">
    Additional DHCP server attributes (hex)
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="id" type="unsignedByte" fb:help="Attribute type code/tag"/>
      <attribute name="value" type="hexBinary" fb:help="Value"/>
      <attribute name="force" type="boolean" use="optional" fb:help="Send even if not requested"/>
      <attribute name="vendor" type="boolean" use="optional" fb:help="Add as vendor specific option (under option 43)"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dhcp-attr-string" fb:help="DHCP server attributes (string)">
      <annotation>
         <documentation xml:lang="en">
    Additional DHCP server attributes (string)
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="id" type="unsignedByte" fb:help="Attribute type code/tag"/>
      <attribute name="value" type="string" fb:help="Value"/>
      <attribute name="force" type="boolean" use="optional" fb:help="Send even if not requested"/>
      <attribute name="vendor" type="boolean" use="optional" fb:help="Add as vendor specific option (under option 43)"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dhcp-attr-number" fb:help="DHCP server attributes (numeric)">
      <annotation>
         <documentation xml:lang="en">
    Additional DHCP server attributes (numeric)
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="id" type="unsignedByte" fb:help="Attribute type code/tag"/>
      <attribute name="value" type="unsignedInt" fb:help="Value"/>
      <attribute name="force" type="boolean" use="optional" fb:help="Send even if not requested"/>
      <attribute name="vendor" type="boolean" use="optional" fb:help="Add as vendor specific option (under option 43)"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dhcp-attr-ip" fb:help="DHCP server attributes (IP)">
      <annotation>
         <documentation xml:lang="en">
    Additional DHCP server attributes (IP)
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="id" type="unsignedByte" fb:help="Attribute type code/tag"/>
      <attribute name="value" type="fb:IP4Addr" fb:help="Value"/>
      <attribute name="force" type="boolean" use="optional" fb:help="Send even if not requested"/>
      <attribute name="vendor" type="boolean" use="optional" fb:help="Add as vendor specific option (under option 43)"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="dhcp-relay" fb:help="DHCP server settings for remote / relayed requests">
      <annotation>
         <documentation xml:lang="en">
    Settings for DHCP server for relayed connections
    </documentation>
      </annotation>
      <sequence>
         <element name="dhcp" type="x:dhcps" minOccurs="0" maxOccurs="unbounded" fb:help="DHCP server settings"/>
      </sequence>
      <attribute name="table" type="x:routetable" use="optional" fb:default="Allow any" fb:help="Routing table applicable" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="IPs allowed (e.g. allocated IPs for renewal)" fb:col="2"/>
      <attribute name="relay" type="x:ipnamerangelist" use="optional" fb:default="Any relay" fb:help="Relay server IP(s)" fb:col="2"/>
      <attribute name="allocation-table" type="x:routetable" use="optional" fb:default="Allocate same as request table" fb:help="Routing table for allocations  - suggest using separate tables for remote DHCP"/>
   </complexType>
   <complexType name="dhcps" fb:help="DHCP server settings">
      <annotation>
         <documentation xml:lang="en">
    Settings for DHCP server
    </documentation>
      </annotation>
      <sequence>
         <element name="send" type="x:dhcp-attr-hex" minOccurs="0" maxOccurs="unbounded" fb:help="Additional attributes to send (hex)"/>
         <element name="send-string" type="x:dhcp-attr-string" minOccurs="0" maxOccurs="unbounded" fb:help="Additional attributes to send (string)"/>
         <element name="send-number" type="x:dhcp-attr-number" minOccurs="0" maxOccurs="unbounded" fb:help="Additional attributes to send (numeric)"/>
         <element name="send-ip" type="x:dhcp-attr-ip" minOccurs="0" maxOccurs="unbounded" fb:help="Additional attributes to send (IP)"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="ip" type="x:ip4rangelist" use="optional" default="0.0.0.0/0" fb:default="All available IPs" fb:help="Address pool"/>
      <attribute name="mac" type="x:macprefixlist" use="optional" fb:help="Partial or full client hardware (MAC) addresses (or client-id MAC if specified)"/>
      <attribute name="mac-local" type="boolean" use="optional" fb:help="Match only local or non local MAC addresses" fb:col="1"/>
      <attribute name="nak-bad-ip" type="boolean" use="optional" fb:help="Send NAK if unknown client requests bad IP" fb:col="1"/>
      <attribute name="client-name" type="string" use="optional" fb:help="Client name match"/>
      <attribute name="class" type="string" use="optional" fb:help="Vendor class match"/>
      <attribute name="circuit" type="string" use="optional" fb:help="Agent info circuit match"/>
      <attribute name="gateway" type="fb:IP4Subnet" use="optional" fb:help="Gateway" fb:default="Our IP"/>
      <attribute name="dns" type="x:ip4list" use="optional" fb:help="DNS resolvers" fb:default="Our IP"/>
      <attribute name="time" type="x:ip4list" use="optional" fb:help="Time server" fb:default="Our IP"/>
      <attribute name="ntp" type="x:ip4list" use="optional" fb:help="NTP server" fb:default="Our IP"/>
      <attribute name="syslog" type="x:ip4list" use="optional" fb:help="Syslog server"/>
      <attribute name="domain" type="string" use="optional" fb:help="DNS domain" fb:default="From system settings"/>
      <attribute name="domain-search" type="string" use="optional" fb:help="DNS domain search list (list will be truncated to fit one attribute)"/>
      <attribute name="boot" type="fb:IP4Addr" use="optional" fb:help="Next/boot server"/>
      <attribute name="boot-file" type="string" use="optional" fb:help="Boot filename"/>
      <attribute name="graph-prefix" type="string" use="optional" fb:help="Prefix to use for allocation auto graphs"/>
      <attribute name="lease" type="fb:duration" use="optional" default="2:00:00" fb:help="Lease length"/>
      <attribute name="force" type="boolean" use="optional" fb:help="Send all options even if not requested" fb:col="0"/>
      <attribute name="broadcast" type="boolean" use="optional" fb:help="Broadcast replies even if not requested" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-new" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events (new)" fb:ref="log"/>
      <attribute name="log-move" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events (moved)" fb:ref="log"/>
      <attribute name="log-reuse" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events (reused)" fb:ref="log"/>
      <attribute name="log-renew" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events (renewed)" fb:ref="log"/>
      <attribute name="log-release" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events (released)" fb:ref="log"/>
      <attribute name="log-decline" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events (declined)" fb:ref="log"/>
      <attribute name="mqtt" type="x:mqtt-brokers" use="optional" fb:default="Don't send" fb:help="Generate MQTT for allocate/renew"/>
      <attribute name="mqtt-all" type="boolean" use="optional" fb:help="Include renewed/declined/released" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="cqm" fb:help="Constant Quality Monitoring settings">
      <annotation>
         <documentation xml:lang="en">
    Constant quality monitoring (graphs and data) have a number of settings. Most of the graphing settings can be overridden when a graph is collected so these define the defaults in many cases.
    </documentation>
      </annotation>
      <attribute name="ping-url" type="string" use="optional" fb:help="URL for ping list"/>
      <attribute name="ping-update" type="fb:duration" use="optional" default="1:00:00" fb:help="Interval for periodic updates" fb:col="0"/>
      <attribute name="ping-list-source-ip" type="fb:IP46Addr" use="optional" fb:help="Source address to use when fetching the ping list" fb:col="0"/>
      <attribute name="secret" type="fb:Secret" use="optional" fb:help="Secret for SHA1 coded URLs"/>
      <attribute name="heading" type="string" use="optional" fb:help="Heading of graph"/>
      <attribute name="subheading" type="string" use="optional" fb:help="Subheading of graph"/>
      <attribute name="text1" type="string" use="optional" fb:help="Text line 1"/>
      <attribute name="text2" type="string" use="optional" fb:help="Text line 2"/>
      <attribute name="text3" type="string" use="optional" fb:help="Text line 3"/>
      <attribute name="text4" type="string" use="optional" fb:help="Text line 4"/>
      <attribute name="background" type="fb:Colour" use="optional" default="white" fb:help="Background colour"/>
      <attribute name="graticule" type="fb:Colour" use="optional" default="grey" fb:help="Graticule colour"/>
      <attribute name="axis" type="fb:Colour" use="optional" default="black" fb:help="Axis colour"/>
      <attribute name="ms-max" type="positiveInteger" use="optional" default="500" fb:help="ms max height"/>
      <attribute name="label-damp" type="string" use="optional" default="Damp%" fb:help="Label for % shaper damping" fb:col="0"/>
      <attribute name="label-sent" type="string" use="optional" default="Sent" fb:help="Label for seconds polled" fb:col="0"/>
      <attribute name="sent" type="fb:Colour" use="optional" default="#ff8" fb:help="Colour for polled seconds"/>
      <attribute name="label-fail" type="string" use="optional" default="%Fail" fb:help="Label for seconds (%) failed" fb:col="0"/>
      <attribute name="fail" type="fb:Colour" use="optional" default="red" fb:help="Colour for failed (dropped) seconds"/>
      <attribute name="label-rej" type="string" use="optional" default="%Reject" fb:help="Label for rejected seconds" fb:col="0"/>
      <attribute name="rej" type="fb:Colour" use="optional" default="#f8c" fb:help="Colour for off line seconds"/>
      <attribute name="label-off" type="string" use="optional" default="Off" fb:help="Label for off line seconds" fb:col="0"/>
      <attribute name="off" type="fb:Colour" use="optional" default="#c8f" fb:help="Colour for off line seconds"/>
      <attribute name="label-min" type="string" use="optional" default="Min" fb:help="Label for minimum latency" fb:col="0"/>
      <attribute name="min" type="fb:Colour" use="optional" default="#008" fb:help="Colour for minimum latency"/>
      <attribute name="label-ave" type="string" use="optional" default="Ave" fb:help="Label for average latency" fb:col="0"/>
      <attribute name="ave" type="fb:Colour" use="optional" default="#08f" fb:help="Colour for average latency"/>
      <attribute name="label-max" type="string" use="optional" default="Max" fb:help="Label for maximum latency" fb:col="0"/>
      <attribute name="max" type="fb:Colour" use="optional" default="green" fb:help="Colour for maximum latency"/>
      <attribute name="label-tx" type="string" use="optional" default="Tx" fb:help="Label for Tx traffic level" fb:col="0"/>
      <attribute name="tx" type="fb:Colour" use="optional" default="#080" fb:help="Colour for Tx traffic level"/>
      <attribute name="label-rx" type="string" use="optional" default="Rx" fb:help="Label for Rx traffic level" fb:col="0"/>
      <attribute name="rx" type="fb:Colour" use="optional" default="#800" fb:help="Colour for Rx traffic level"/>
      <attribute name="text" type="fb:Colour" use="optional" default="black" fb:help="Colour for text"/>
      <attribute name="outside" type="fb:Colour" use="optional" default="transparent" fb:help="Colour for outer border"/>
      <attribute name="fblogo" type="fb:Colour" use="optional" default="#bd1220" fb:help="Colour for logo" fb:col="0"/>
      <attribute name="label-latency" type="string" use="optional" default="Latency" fb:help="Label for latency" fb:col="0"/>
      <attribute name="label-shaper" type="string" use="optional" default="Shaper" fb:help="Label for shaper" fb:col="0"/>
      <attribute name="label-poll" type="string" use="optional" default="Polls" fb:help="Label for polls" fb:col="0"/>
      <attribute name="label-traffic" type="string" use="optional" default="Traffic (bit/s)" fb:help="Label for traffic level" fb:col="0"/>
      <attribute name="label-time" type="string" use="optional" default="Time" fb:help="Label for time" fb:col="0"/>
      <attribute name="label-score" type="string" use="optional" default="Score" fb:help="Label for score" fb:col="0"/>
      <attribute name="label-period" type="string" use="optional" default="Period" fb:help="Label for period" fb:col="0"/>
      <attribute name="timeformat" type="string" use="optional" default="%Y-%m-%d %H:%M:%S" fb:help="Time format" fb:col="0"/>
      <attribute name="hourformat" type="string" use="optional" default="%H" fb:help="Hour format" fb:col="0"/>
      <attribute name="dateformat" type="string" use="optional" default="%Y-%m-%d" fb:help="Date format" fb:col="0"/>
      <attribute name="dayformat" type="string" use="optional" default="%a" fb:help="Day format" fb:col="0"/>
      <attribute name="key" type="unsignedByte" use="optional" default="90" fb:help="Pixels space for key" fb:col="0"/>
      <attribute name="left" type="unsignedByte" use="optional" default="0" fb:help="Pixels space left of main graph" fb:col="0"/>
      <attribute name="right" type="unsignedByte" use="optional" default="50" fb:help="Pixels space right of main graph" fb:col="0"/>
      <attribute name="top" type="unsignedByte" use="optional" default="4" fb:help="Pixels space at top of graph" fb:col="0"/>
      <attribute name="bottom" type="unsignedByte" use="optional" default="11" fb:help="Pixels space at bottom of graph" fb:col="0"/>
      <attribute name="fail-level1" type="unsignedByte" use="optional" default="3" fb:help="Loss level 1" fb:col="0"/>
      <attribute name="fail-score1" type="unsignedByte" use="optional" default="100" fb:help="Score for on/above level 1" fb:col="0"/>
      <attribute name="fail-level2" type="unsignedByte" use="optional" default="50" fb:help="Loss level 2" fb:col="0"/>
      <attribute name="fail-score2" type="unsignedByte" use="optional" default="200" fb:help="Score for on/above level 2" fb:col="0"/>
      <attribute name="latency-level1" type="unsignedInt" use="optional" default="100000000" fb:help="Latency level 1 (ns)" fb:col="0"/>
      <attribute name="latency-score1" type="unsignedByte" use="optional" default="10" fb:help="Score for on/above level 1" fb:col="0"/>
      <attribute name="latency-level2" type="unsignedInt" use="optional" default="500000000" fb:help="Latency level 2 (ns)" fb:col="0"/>
      <attribute name="latency-score2" type="unsignedByte" use="optional" default="20" fb:help="Score for on/above level 2" fb:col="0"/>
      <attribute name="latency-usage" type="unsignedInt" use="optional" default="128000" fb:help="Usage below which latency is not expected" fb:col="0"/>
      <attribute name="latency-level" type="unsignedInt" use="optional" default="100000000" fb:help="Latency level not expected on low usage" fb:col="0"/>
      <attribute name="latency-score" type="unsignedByte" use="optional" default="200" fb:help="Score for high latency and low usage" fb:col="0"/>
      <attribute name="fail-usage" type="unsignedInt" use="optional" default="128000" fb:help="Usage below which fail is not expected" fb:col="0"/>
      <attribute name="fail-level" type="unsignedInt" use="optional" default="1" fb:help="Fail level not expected on low usage" fb:col="0"/>
      <attribute name="fail-score" type="unsignedByte" use="optional" default="200" fb:help="Score for fail and low usage" fb:col="0"/>
      <attribute name="share-interface" type="NMTOKEN" use="optional" fb:help="Interface on which to broadcast data for shaper sharing" fb:ref="interface"/>
      <attribute name="share-secret" type="fb:Secret" use="optional" fb:help="Secret to validate shaper sharing"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="svg-title" type="boolean" use="optional" fb:help="Include mouseover title text on svg" fb:col="0"/>
      <attribute name="svg-css" type="string" use="optional" fb:help="URL for SVG CSS instead of local style settings" fb:col="0"/>
      <attribute name="stroke-width" type="string" use="optional" fb:help="Stroke line for tx/rx" fb:default="4 if no marker" fb:col="0"/>
      <attribute name="marker-width" type="string" use="optional" fb:help="Stroke width for marker (+) on tx/rx (e.g. 4)" fb:col="0"/>
      <attribute name="auto-refresh-list" type="boolean" use="optional" default="true" fb:help="Auto refresh graph list pages (for trusted IPs)" fb:col="0"/>
      <attribute name="pppoe-dos-limit" type="unsignedInt" use="optional" default="10000" fb:help="Per poll tx packet drop limit for DOS protection on PPPoE incoming sessions" fb:col="0"/>
   </complexType>
   <complexType name="ip-group" fb:help="IP Group">
      <annotation>
         <documentation xml:lang="en">
    Named IP group
    </documentation>
      </annotation>
      <attribute name="name" type="string" fb:help="Name"/>
      <attribute name="ip" type="x:iprangelist" use="optional" fb:help="One or more IP ranges or IP/len" fb:col="2"/>
      <attribute name="users" type="x:nmtokenlist" use="optional" fb:help="Include IP of (time limited) logged in web users" fb:ref="user"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="routing-table" fb:help="Default source IP for services using a given table">
      <annotation>
         <documentation xml:lang="en">
    Default source IP for traffic originated by this FireBrick
    </documentation>
      </annotation>
      <attribute name="table" type="x:routetable" use="required" fb:help="Routing table number"/>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="source-ip" type="fb:IP46Addr" use="optional" fb:help="Default source IP for services"/>
      <attribute name="icmp-source-ip" type="fb:IP46Addr" use="optional" fb:help="Source IP for ICMP errors"/>
   </complexType>
   <complexType name="vrrp" fb:help="VRRP settings">
      <annotation>
         <documentation xml:lang="en">
    VRRP settings provide virtual router redundancy for the FireBrick.
    Profile inactive does not disable vrrp but forces vrrp low priority.

    Use different VRID on different VLANs.

    </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" use="optional" fb:help="Name" fb:key="vrrp"/>
      <attribute name="ip" type="x:iplist" fb:help="One or more IP addresses to announce"/>
      <attribute name="vrid" type="unsignedByte" default="42" use="optional" fb:help="VRID"/>
      <attribute name="priority" type="unsignedByte" default="100" use="optional" fb:help="Normal priority"/>
      <attribute name="interval" type="unsignedShort" default="100" use="optional" fb:help="Transit interval (centiseconds)"/>
      <attribute name="preempt" type="boolean" default="true" use="optional" fb:help="Whether pre-empt allowed"/>
      <attribute name="low-priority" type="unsignedByte" default="1" use="optional" fb:help="Lower priority applicable until routing established"/>
      <attribute name="delay" type="unsignedInt" default="60" use="optional" fb:help="Delay after routing established before priority returns to normal"/>
      <attribute name="use-vmac" type="boolean" default="true" use="optional" fb:help="Whether to use the special VMAC or use normal MAC" fb:col="0"/>
      <attribute name="answer-ping" type="boolean" default="true" use="optional" fb:help="Whether to answer PING to VRRP IPs when master" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="version3" use="optional" type="boolean" fb:help="Use only version 3" fb:default="v2 for IPv4, v3 for IPv6" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="log" fb:help="Log target controls">
      <annotation>
         <documentation xml:lang="en">
   Named logging target
   </documentation>
      </annotation>
      <sequence>
         <element name="syslog-tls" type="x:syslog-tls" minOccurs="0" maxOccurs="unbounded" fb:help="TLS syslog settings"/>
         <element name="syslog" type="x:log-syslog" minOccurs="0" maxOccurs="unbounded" fb:help="UDP syslog settings"/>
         <element name="email" type="x:log-email" minOccurs="0" maxOccurs="unbounded" fb:help="Email settings"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" fb:help="Log target name" fb:key="log"/>
      <attribute name="colour" type="fb:Colour" use="optional" fb:help="Colour used in web display"/>
      <attribute name="flash" type="boolean" use="optional" fb:help="Log immediately to slow flash memory (use with care)"/>
      <attribute name="jtag" type="boolean" use="optional" fb:help="Log immediately jtag (development use only)" fb:col="0"/>
      <attribute name="console" type="boolean" use="optional" fb:help="Log immediately to console"/>
      <attribute name="system" type="boolean" use="optional" fb:help="Include system logs on web/cli view"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="log-syslog" fb:help="UDP syslog settings">
      <annotation>
         <documentation xml:lang="en">
    Logging to a syslog server (UDP)
    </documentation>
      </annotation>
      <attribute name="server" type="fb:IPNameAddr" fb:help="Syslog server" fb:col="2"/>
      <attribute name="port" type="unsignedShort" default="514" use="optional" fb:help="Server port" fb:col="0"/>
      <attribute name="severity" type="x:syslog-severity" default="NOTICE" use="optional" fb:help="Severity setting"/>
      <attribute name="facility" type="x:syslog-facility" default="LOCAL0" use="optional" fb:help="Facility setting"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for sending syslogs" fb:col="0"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="Use specific source IP" fb:col="0"/>
      <attribute name="system-logs" type="boolean" use="optional" fb:help="Include generic system log messages as well" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="syslog-tls" fb:help="TLS syslog settings">
      <annotation>
         <documentation xml:lang="en">
    Logging to a syslog server (TLS)
    </documentation>
      </annotation>
      <attribute name="server" type="fb:IPNameAddr" fb:help="Syslog server" fb:col="2"/>
      <attribute name="port" type="unsignedShort" default="6514" use="optional" fb:help="Server port" fb:col="0"/>
      <attribute name="severity" type="x:syslog-severity" default="NOTICE" use="optional" fb:help="Severity setting"/>
      <attribute name="facility" type="x:syslog-facility" default="LOCAL0" use="optional" fb:help="Facility setting"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for sending syslogs" fb:col="0"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="Use specific source IP" fb:col="0"/>
      <attribute name="system-logs" type="boolean" use="optional" fb:help="Include generic system log messages as well" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="log-email" fb:help="Email logger settings">
      <annotation>
         <documentation xml:lang="en">
    Logging to email
    </documentation>
      </annotation>
      <attribute name="to" type="string" fb:help="Target email address" fb:col="4"/>
      <attribute name="from" type="string" use="optional" fb:default="One made up using serial number" fb:help="Source email address" fb:col="4"/>
      <attribute name="subject" type="string" use="optional" fb:default="From first line being logged" fb:help="Subject" fb:col="4"/>
      <attribute name="delay" type="fb:duration" use="optional" default="1:00" fb:help="Delay before sending, since first event to send"/>
      <attribute name="retry" type="fb:duration" use="optional" default="10:00" fb:help="Delay before sending, since failed send" fb:col="0"/>
      <attribute name="hold-off" type="fb:duration" use="optional" default="1:00:00" fb:help="Delay before sending, since last email"/>
      <attribute name="server" type="fb:IPNameAddr" use="optional" fb:help="Smart host to use rather than MX" fb:col="0"/>
      <attribute name="port" type="unsignedShort" default="25" use="optional" fb:help="Server port" fb:col="0"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for sending email" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log emailing process" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log emailing errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log emailing debug" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="ethernet" fb:help="Physical port controls">
      <annotation>
         <documentation xml:lang="en">
    Physical port attributes
    </documentation>
      </annotation>
      <attribute name="port" type="x:port" fb:help="Physical port"/>
      <attribute name="autoneg" type="boolean" use="optional" fb:default="auto negotiate unless manual 10/100 speed and duplex are set" fb:help="Perform link auto-negotiation"/>
      <attribute name="crossover" type="x:Crossover" use="optional" default="auto" fb:help="Port crossover configuration"/>
      <attribute name="speed" type="x:LinkSpeed" use="optional" default="auto" fb:help="Speed setting for this port"/>
      <attribute name="duplex" type="x:LinkDuplex" use="optional" default="auto" fb:help="Duplex setting for this port"/>
      <attribute name="flow" type="x:LinkFlow" use="optional" default="none" fb:help="Flow control setting" fb:col="0"/>
      <attribute name="clocking" type="x:LinkClock" use="optional" default="prefer-slave" fb:help="Gigabit clock setting" fb:col="0"/>
      <attribute name="orange" type="x:LinkLED" use="optional" default="Link/Activity" fb:help="Orange LED setting"/>
      <attribute name="green" type="x:LinkLED" use="optional" default="Link/Activity" fb:help="Green LED setting"/>
      <attribute name="yellow" type="x:LinkLED" use="optional" default="Link/Activity" fb:help="Yellow LED setting"/>
      <attribute name="power-saving" type="boolean" use="optional" default="false" fb:help="enable EEE low power idle" fb:col="0"/>
      <attribute name="send-fault" type="x:LinkFault" use="optional" fb:help="Send fault status" fb:col="0"/>
      <attribute name="lacp" type="boolean" fb:default="Auto" use="optional" fb:help="Send LACP packets"/>
      <attribute name="lldp" type="boolean" default="true" use="optional" fb:help="Send LLDP packets"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
   </complexType>
   <complexType name="link-activity" fb:help="LED link monitoring">
      <annotation>
         <documentation xml:lang="en">
    LED behaviour based on link status
    </documentation>
      </annotation>
      <attribute name="colour" type="x:LEDColour" fb:help="LED colour"/>
      <attribute name="blink-rate" type="x:LEDBlink" default="Normal" fb:help="Blink rate"/>
      <attribute name="blink-speedmatch" type="boolean" default="false" fb:help="Only show activity if speed matched"/>
      <attribute name="tx-activity" type="boolean" default="true" fb:help="Blink on Tx"/>
      <attribute name="rx-activity" type="boolean" use="optional" fb:help="Blink on Rx" fb:default="green true, others false"/>
      <attribute name="collision" type="boolean" default="false" fb:help="Blink on collision (half-duplex)"/>
      <attribute name="up-10M" type="boolean" use="optional" fb:help="On when link up at 10M" fb:default="green true, others false"/>
      <attribute name="up-100M" type="boolean" use="optional" fb:help="On when link up at 100M" fb:default="green true, others false"/>
      <attribute name="up-1G" type="boolean" use="optional" fb:help="On when link up at 1G" fb:default="green true, others false"/>
      <attribute name="half-duplex" type="boolean" default="false" fb:help="On when link up and half-duplex"/>
      <attribute name="full-duplex" type="boolean" default="false" fb:help="On when link up and full-duplex"/>
   </complexType>
   <simpleType name="Crossover" fb:help="Crossover configuration">
      <annotation>
         <documentation xml:lang="en">
    Physical port crossover configuration.
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="auto" fb:help="Crossover is determined automatically"/>
         <enumeration value="MDI" fb:help="Force no crossover"/>
      </restriction>
   </simpleType>
   <simpleType name="LinkSpeed" fb:help="Physical port speed">
      <restriction base="string">
         <enumeration value="10M" fb:help="10Mbit/sec"/>
         <enumeration value="100M" fb:help="100Mbit/sec"/>
         <enumeration value="1G" fb:help="1Gbit/sec"/>
         <enumeration value="auto" fb:help="Speed determined by autonegotiation"/>
      </restriction>
   </simpleType>
   <simpleType name="LinkDuplex" fb:help="Physical port duplex setting">
      <restriction base="string">
         <enumeration value="half" fb:help="Half-duplex"/>
         <enumeration value="full" fb:help="Full-duplex"/>
         <enumeration value="auto" fb:help="Duplex determined by autonegotiation"/>
      </restriction>
   </simpleType>
   <simpleType name="LinkFlow" fb:help="Physical port flow control setting">
      <restriction base="string">
         <enumeration value="none" fb:help="No flow control"/>
         <enumeration value="symmetric" fb:help="Can support two-way flow control"/>
         <enumeration value="send-pauses" fb:help="Can send pauses but does not support pause reception"/>
         <enumeration value="any" fb:help="Can receive pauses and may send pauses if required"/>
      </restriction>
   </simpleType>
   <simpleType name="LinkClock" fb:help="Physical port Gigabit clock master/slave setting">
      <restriction base="string">
         <enumeration value="prefer-master" fb:help="Master status negotiated; preference for master"/>
         <enumeration value="prefer-slave" fb:help="Master status negotiated; preference for slave"/>
         <enumeration value="force-master" fb:help="Master status forced"/>
         <enumeration value="force-slave" fb:help="Slave status forced"/>
      </restriction>
   </simpleType>
   <simpleType name="LinkLED" fb:help="LED settings">
      <restriction base="string">
         <enumeration value="Link/Activity" fb:help="Use settings from link-activity item"/>
         <enumeration value="Off" fb:help="Permanently off"/>
         <enumeration value="On" fb:help="Permanently on"/>
         <enumeration value="Flash" fb:help="Flash"/>
      </restriction>
   </simpleType>
   <simpleType name="LEDColour" fb:help="Which colour LED">
      <restriction base="string">
         <enumeration value="orange"/>
         <enumeration value="green"/>
         <enumeration value="yellow"/>
      </restriction>
   </simpleType>
   <simpleType name="LEDBlink" fb:help="LED blink speed">
      <restriction base="string">
         <enumeration value="Slow" fb:help="2Hz"/>
         <enumeration value="Normal" fb:help="4Hz"/>
         <enumeration value="Fast" fb:help="8Hz"/>
         <enumeration value="Linkspeed" fb:help="10M=2Hz,100M=4Hz,1G=8Hz"/>
      </restriction>
   </simpleType>
   <simpleType name="LinkFault" fb:help="Link fault type to send">
      <restriction base="string">
         <enumeration value="false" fb:help="No fault"/>
         <enumeration value="true" fb:help="Send fault"/>
         <enumeration value="off-line" fb:help="Send offline fault (1G)"/>
         <enumeration value="ane" fb:help="Send ANE fault (1G)"/>
      </restriction>
   </simpleType>
   <complexType name="ospf" fb:help="Overall OSPF settings">
      <annotation>
         <documentation xml:lang="en">
    The OSPF element defines general OSPF settings.
    Where interfaces/table specified, first matching OSPF config is applied.
    Only provides OSPF internal and AS-border router functionality.
    OSPF is not necessarily fully functional and suggested only for experimental use at present - please do give us feedback.
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="interfaces" type="x:nmtokenlist" use="optional" fb:default="All" fb:help="Ethernet interfaces to which this OSPF config applies" fb:ref="interface"/>
      <attribute name="area-id" type="fb:IP4Addr" use="optional" default="0.0.0.0" fb:default="Backbone" fb:help="Area ID"/>
      <attribute name="router-id" type="fb:IP4Addr" use="optional" fb:help="Router ID" fb:col="0"/>
      <attribute name="stub" type="boolean" use="optional" fb:help="Stub area" fb:col="0"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Secret for OSPFv2 MD5 authentication"/>
      <attribute name="key-id" type="integer" use="optional" default="1" fb:help="Key ID for OSPFv2 MD5 authentication (-1 for simple auth)"/>
      <attribute name="ipsec-type" type="x:ipsec-type" use="optional" fb:help="Encapsulation type for OSPFv3 security" default="ESP"/>
      <attribute name="spi" type="x:ipsec-spi" use="optional" fb:help="SPI for OSPFv3 security (unset for no security)"/>
      <attribute name="auth-algorithm" type="x:ipsec-auth-algorithm" use="optional" default="AES-XCBC" fb:help="Authentication algorithm for OSPFv3"/>
      <attribute name="auth-key" type="hexBinary" use="optional" fb:help="Key for OSPFv3 authentication" fb:col="3"/>
      <attribute name="crypt-algorithm" type="x:ipsec-crypt-algorithm" use="optional" default="null" fb:help="Encryption algorithm for OSPFv3"/>
      <attribute name="crypt-key" type="hexBinary" use="optional" fb:help="Key for OSPFv3 encryption" fb:col="3"/>
      <attribute name="priority" type="unsignedByte" use="optional" default="1" fb:help="Default priority"/>
      <attribute name="instance" type="unsignedByte" use="optional" fb:help="Instance ID for OSPFv3" fb:col="0"/>
      <attribute name="hello-interval" type="fb:duration" use="optional" default="9" fb:help="Default hello interval"/>
      <attribute name="dead-interval" type="fb:duration" use="optional" default="45" fb:help="Default router dead interval"/>
      <attribute name="rxmt-interval" type="fb:duration" use="optional" default="3" fb:help="Default router retransmit interval"/>
      <attribute name="localpref" type="unsignedInt" use="optional" fb:help="Base localpref (highest wins)"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:help="BGP announce mode for routes"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log calls" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug and SIP messages" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="ospf-auth" fb:help="OSPF Auth type">
      <annotation>
         <documentation xml:lang="en">
 OSPF Authentication type
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="none" fb:help="No authentication"/>
         <enumeration value="simple" fb:help="Simple plain text password"/>
         <enumeration value="md5" fb:help="Cryptographic MD5 signature"/>
      </restriction>
   </simpleType>
   <complexType name="bgp" fb:help="Overall BGP settings">
      <annotation>
         <documentation xml:lang="en">
    The BGP element defines general BGP settings and a list of peer definitions for the individual BGP peers.
    </documentation>
      </annotation>
      <sequence>
         <element name="peer" type="x:bgppeer" minOccurs="0" maxOccurs="500" fb:help="List of peers/neighbours"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="as" type="unsignedInt" use="optional" fb:help="Our AS"/>
      <attribute name="id" type="fb:IP4Addr" use="optional" fb:help="Our router ID"/>
      <attribute name="blackhole-community" type="fb:Community" use="optional" fb:help="Community tag to mark black hole routes" fb:col="0"/>
      <attribute name="greyhole-community" type="fb:Community" use="optional" fb:help="Community tag to mark black hole routes with no-fib" fb:col="0"/>
      <attribute name="dead-end-community" type="fb:Community" use="optional" fb:help="Community tag to mark dead end routes" fb:col="0"/>
      <attribute name="cluster-id" type="fb:IP4Addr" use="optional" fb:help="Our cluster ID"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="bgppeer" fb:help="BGP peer definitions">
      <annotation>
         <documentation xml:lang="en">
    The peer definition specifies the attributes of an individual peer. Multiple IP addresses can be specified, typically for IPv4 and IPv6 addresses for the same peer, but this can be used for a group of similar peers.
    </documentation>
      </annotation>
      <sequence>
         <element name="import" type="x:bgpmap" minOccurs="0" fb:help="Mapping and filtering rules of accepting prefixes from peer"/>
         <element name="export" type="x:bgpmap" minOccurs="0" fb:help="Mapping and filtering rules of announcing prefixes to peer"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="type" type="x:peertype" use="optional" default="normal" fb:help="Type of neighbour (affects some defaults)"/>
      <attribute name="ip" type="x:iplist" use="optional" fb:help="One or more IPs of neighbours (omit to allow incoming)" fb:col="2"/>
      <attribute name="as" type="unsignedInt" use="optional" fb:help="Peer AS"/>
      <attribute name="md5" type="fb:Secret" use="optional" fb:help="MD5 signing secret" fb:col="0"/>
      <attribute name="ttl-security" type="byte" use="optional" fb:help="Enable RFC5082 TTL security (if +ve, 1 to 127), i.e. 1 for adjacent router. If -ve (-1 to -128) set forced sending TTL, i.e. -1 for TTL of 1 sending, and not checking."/>
      <attribute name="holdtime" type="unsignedInt" use="optional" default="30" fb:help="Hold time"/>
      <attribute name="timer-openwait" type="unsignedInt" use="optional" default="10" fb:help="Time to wait for OPEN on connection" fb:col="0"/>
      <attribute name="timer-retry" type="unsignedInt" use="optional" default="10" fb:help="Time to retry the neighbour" fb:col="0"/>
      <attribute name="timer-idle" type="unsignedInt" use="optional" default="60" fb:help="Idle time after error" fb:col="0"/>
      <attribute name="capability-mpe-ipv4" type="boolean" use="optional" default="true" fb:help="If supporting MPE for IPv4" fb:col="0"/>
      <attribute name="capability-mpe-ipv6" type="boolean" use="optional" default="true" fb:help="If supporting MPE for IPv6" fb:col="0"/>
      <attribute name="capability-as4" type="boolean" use="optional" default="true" fb:help="If supporting AS4" fb:col="0"/>
      <attribute name="capability-graceful-restart" type="boolean" use="optional" default="true" fb:help="If supporting Graceful Restart" fb:col="0"/>
      <attribute name="restart-time" type="unsignedShort" use="optional" fb:help="Time to tell other end to expect us to take to restart (defaults to holdtime)" fb:col="0"/>
      <attribute name="capability-route-refresh" type="boolean" use="optional" default="true" fb:help="If supporting Route Refresh" fb:col="0"/>
      <attribute name="same-ip-type" type="boolean" use="optional" default="true" fb:help="Only accept/send IPv4 routes to IPv4 peers and IPv6 routes to IPv6 peers" fb:col="0"/>
      <attribute name="next-hop-self" type="boolean" use="optional" default="false" fb:help="Force us as next hop outbound"/>
      <attribute name="reduce-recursion" type="boolean" use="optional" default="false" fb:help="Override incoming next hop if not local subnet"/>
      <attribute name="use-vrrp-as-self" type="boolean" use="optional" fb:default="true if customer/transit type" fb:help="Use VRRP address as self if possible"/>
      <attribute name="allow-own-as" type="boolean" use="optional" fb:help="Allow our AS inbound"/>
      <attribute name="add-own-as" type="boolean" use="optional" fb:help="Add our AS on exported routes" fb:col="0"/>
      <attribute name="in-soft" type="boolean" use="optional" fb:help="Mark received routes as soft" fb:col="0"/>
      <attribute name="no-fib" type="boolean" use="optional" fb:help="Don't include received routes in packet forwarding" fb:col="0"/>
      <attribute name="allow-only-their-as" type="boolean" use="optional" fb:help="Only accept routes that are solely the peers AS"/>
      <attribute name="allow-export" type="boolean" use="optional" fb:help="Ignore no-export community and export anyway" fb:default="true for customer"/>
      <attribute name="drop-default" type="boolean" use="optional" default="false" fb:help="Ignore default route received"/>
      <attribute name="send-default" type="boolean" use="optional" default="false" fb:help="Send a default route to this peer" fb:col="0"/>
      <attribute name="send-no-routes" type="boolean" use="optional" default="false" fb:help="Don't send any normal routes" fb:col="0"/>
      <attribute name="blackhole-community" type="fb:Community" use="optional" fb:help="Egress community tag to mark black hole routes" fb:default="Not announced on EBGP, our blackhole-community if IBGP" fb:col="0"/>
      <attribute name="ignore-bad-optional-partial" type="boolean" use="optional" default="true" fb:help="Ignore routes with a recognised badly formed optional that is flagged partial" fb:col="0"/>
      <attribute name="clean-startup-wait" type="fb:duration" use="optional" fb:help="Don't announce routes within this time of reboot" fb:col="0"/>
      <attribute name="clean-shutdown-wait" type="fb:duration" use="optional" fb:help="Resend routes at low priority when +ve, withdraw routes when -ve and delay for the absolute value on shutdown" fb:col="0"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="pad" type="unsignedByte" use="optional" fb:help="Pad (prefix stuff) our AS on export by this many"/>
      <attribute name="export-med" type="unsignedInt" use="optional" fb:help="Set MED on exported routes (unless export filter sets it)"/>
      <attribute name="import-localpref" type="unsignedInt" use="optional" fb:help="Set localpref on imported routes (unless import filter sets it)"/>
      <attribute name="import-tag" type="x:communitylist" use="optional" fb:help="List of community tags to add in addition to any import filters"/>
      <attribute name="import-filters" type="x:nmtokenlist" use="optional" fb:help="Named import filters to apply" fb:ref="namedbgpmap"/>
      <attribute name="export-filters" type="x:nmtokenlist" use="optional" fb:help="Named export filters to apply" fb:ref="namedbgpmap"/>
      <attribute name="max-prefix" type="unsignedInt" use="optional" fb:help="Limit prefixes (IPv4+IPv6)"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="namedbgpmap" fb:help="Mapping and filtering rules of BGP prefixes">
      <annotation>
         <documentation xml:lang="en">
    This defines a set of named rules for mapping and filtering of prefixes to/from a BGP peer.
    </documentation>
      </annotation>
      <sequence>
         <element name="match" type="x:bgprule" minOccurs="0" maxOccurs="unbounded" fb:help="List rules, in order of checking"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" fb:help="Name" fb:key="namedbgpmap"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="bgpmap" fb:help="Mapping and filtering rules of BGP prefixes">
      <annotation>
         <documentation xml:lang="en">
    This defines the rules for mapping and filtering of prefixes to/from a BGP peer.
    </documentation>
      </annotation>
      <sequence>
         <element name="match" type="x:bgprule" minOccurs="0" maxOccurs="unbounded" fb:help="List rules, in order of checking"/>
      </sequence>
      <attribute name="drop" type="boolean" use="optional" fb:help="Do not import/export this prefix"/>
      <attribute name="detag" type="x:communitylist" use="optional" fb:help="List of community tags to remove"/>
      <attribute name="tag" type="x:communitylist" use="optional" fb:help="List of community tags to add"/>
      <attribute name="localpref" type="unsignedInt" use="optional" fb:help="Set localpref (highest wins)"/>
      <attribute name="med" type="unsignedInt" use="optional" fb:help="Set MED"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="prefix" type="x:filterlist" use="optional" fb:help="Drop all that are not in this prefix list" fb:col="2"/>
   </complexType>
   <complexType name="bgprule" fb:help="Individual mapping/filtering rule">
      <annotation>
         <documentation xml:lang="en">
    An individual rule for BGP mapping/filtering
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="drop" type="boolean" use="optional" fb:help="Do not import/export this prefix"/>
      <attribute name="as-present" type="unsignedInt" use="optional" fb:help="AS that must be present in path to match"/>
      <attribute name="as-origin" type="unsignedInt" use="optional" fb:help="AS that must be last in path to match"/>
      <attribute name="community" type="fb:Community" use="optional" fb:help="Community that must be present to match"/>
      <attribute name="no-community" type="fb:Community" use="optional" fb:help="Community that must not be present to match"/>
      <attribute name="detag" type="x:communitylist" use="optional" fb:help="List of community tags to remove"/>
      <attribute name="tag" type="x:communitylist" use="optional" fb:help="List of community tags to add"/>
      <attribute name="localpref" type="unsignedInt" use="optional" fb:help="Set localpref (highest wins)"/>
      <attribute name="med" type="unsignedInt" use="optional" fb:help="Set MED"/>
      <attribute name="prefix" type="x:filterlist" use="optional" fb:help="Prefixes that this rule applies to" fb:col="2"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="pad" type="unsignedByte" use="optional" fb:help="Pad (prefix stuff) our AS on export by this many, can be zero to not send our AS"/>
   </complexType>
   <simpleType name="ping-size" fb:help="Data payload size to be sent in ping packet">
      <restriction base="unsignedInt">
         <minInclusive value="0"/>
         <maxInclusive value="60000"/>
      </restriction>
   </simpleType>
   <complexType name="ping" fb:help="Ping/graph definition">
      <annotation>
         <documentation xml:lang="en">
    Base ping config - additional ping targets set via web API or other means
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="graph" type="x:graphname" fb:help="Graph name"/>
      <attribute name="ip" type="fb:IPNameAddr" fb:help="Far end IP" fb:col="2"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for sending pings" fb:col="0"/>
      <attribute name="gateway" type="fb:IP46Addr" use="optional" fb:help="IP of gateway"/>
      <attribute name="source-ip" type="fb:IP46Addr" use="optional" fb:help="Source IP"/>
      <attribute name="slow" type="boolean" use="optional" fb:default="Auto" fb:help="Slow polling"/>
      <attribute name="size" type="x:ping-size" use="optional" default="0" fb:help="Payload size" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="fb105-reorder-timeout" fb:help="Maximum time to queue out of order packet (ms)">
      <restriction base="unsignedInt">
         <minInclusive value="10"/>
         <maxInclusive value="5000"/>
      </restriction>
   </simpleType>
   <simpleType name="fb105-reorder-maxq" fb:help="Maximum size of out of order packet queue">
      <restriction base="unsignedInt">
         <minInclusive value="1"/>
         <maxInclusive value="100"/>
      </restriction>
   </simpleType>
   <simpleType name="hex32" fb:help="Hex value up to 32 bits (4 bytes)">
      <restriction base="hexBinary">
         <minLength value="1"/>
         <maxLength value="8"/>
      </restriction>
   </simpleType>
   <complexType name="fb105" fb:help="FB105 tunnel definition">
      <annotation>
         <documentation xml:lang="en">
    FB105 tunnel definition
    </documentation>
      </annotation>
      <sequence>
         <element name="route" type="x:fb105-route" minOccurs="0" maxOccurs="unbounded" fb:help="Routes to apply to tunnel when up"/>
      </sequence>
      <attribute name="local-id" type="unsignedByte" fb:help="Unique local end tunnel ID"/>
      <attribute name="remote-id" type="unsignedByte" fb:help="Unique remote end tunnel ID"/>
      <attribute name="mtu" type="unsignedShort" use="optional" default="1500" fb:help="MTU for wrapped packets"/>
      <attribute name="port" type="unsignedShort" use="optional" default="1" fb:help="UDP port to use" fb:col="0"/>
      <attribute name="name" type="NMTOKEN" use="optional" fb:help="Name" fb:key="fb105"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for tunnel wrappers"/>
      <attribute name="payload-table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for payload traffic" fb:col="0"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="ip" type="fb:IP4Addr" use="optional" fb:default="dynamic tunnel" fb:help="Far end IP"/>
      <attribute name="local-ip" type="fb:IP4Addr" use="optional" fb:help="Force specific local end IP"/>
      <attribute name="internal-ip" type="fb:IP46Addr" use="optional" fb:help="Internal IP for traffic originated and sent down tunnel" fb:default="local-ip"/>
      <attribute name="routes" type="x:prefixlist" use="optional" fb:default="None" fb:help="Routes when link up"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for route (highest wins)" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="secret" type="fb:Secret" use="optional" fb:default="Unsigned" fb:help="Shared secret for tunnel"/>
      <attribute name="sign-all" type="boolean" use="optional" default="false" fb:help="All packets must be signed, not just keepalives"/>
      <attribute name="set" type="unsignedByte" use="optional" fb:help="Set ID for reorder ID tagging (create a set of tunnels together)"/>
      <attribute name="fast-udp" type="boolean" use="optional" default="true" fb:help="Send UDP packets marked not to be reordered"/>
      <attribute name="reorder" type="boolean" use="optional" default="false" fb:help="Reorder incoming tunnel packets"/>
      <attribute name="satellite" type="boolean" use="optional" fb:help="Mark links that are high speed and latency for split latency bonding (experimental)" fb:col="0"/>
      <attribute name="keep-alive" type="boolean" use="optional" fb:default="true if ip set" fb:help="Constantly send keep alive packets"/>
      <attribute name="tcp-mss-fix" type="boolean" use="optional" default="true" fb:help="Adjust MSS option in TCP SYN to fix session MSS"/>
      <attribute name="speed" type="unsignedInt" use="optional" fb:default="no shaping" fb:help="Egress rate limit used (b/s)"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="reorder-timeout" type="x:fb105-reorder-timeout" use="optional" default="100" fb:help="Max time to delay out of order packet (ms)" fb:col="0"/>
      <attribute name="reorder-maxq" type="x:fb105-reorder-maxq" use="optional" default="32" fb:help="Max queue length for out of order packets" fb:col="0"/>
      <attribute name="obfuscate" type="x:hex32" use="optional" fb:help="Scramble (not encrypt) data" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="fb105-route" fb:help="FB105 routes">
      <annotation>
         <documentation xml:lang="en">
    Routes for prefixes that are sent to the FB105 tunnel when up
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="ip" type="x:prefixlist" fb:help="One or more network prefixes" fb:col="-2"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="ike-authset" fb:help="Set of authentication algorithms">
      <list itemType="x:ipsec-auth-algorithm" fb:set="true"/>
   </simpleType>
   <simpleType name="ike-cryptset" fb:help="Set of encryption algorithms">
      <list itemType="x:ipsec-crypt-algorithm" fb:set="true"/>
   </simpleType>
   <simpleType name="ike-PRF" fb:help="IKE Pseudo-Random Function">
      <restriction base="string">
         <enumeration value="HMAC-MD5" fb:help="HMAC-MD5"/>
         <enumeration value="HMAC-SHA1" fb:help="HMAC-SHA1"/>
         <enumeration value="AES-XCBC-128" fb:help="AES-XCBC with 128-bit key"/>
         <enumeration value="HMAC-SHA256" fb:help="PRF-HMAC-SHA-256 (rfc4868)"/>
      </restriction>
   </simpleType>
   <simpleType name="ike-PRFset" fb:help="Set of PRFs">
      <list itemType="x:ike-PRF" fb:set="true"/>
   </simpleType>
   <simpleType name="ike-DH" fb:help="IKE Diffie-Hellman group">
      <restriction base="string">
         <enumeration value="none" fb:help="No D-H negotiation (only used with AH/ESP)"/>
         <enumeration value="MODP-1024" fb:help="1024-bit Sophie Germain Prime MODP Group"/>
         <enumeration value="MODP-2048" fb:help="2048-bit Sophie Germain Prime MODP Group"/>
      </restriction>
   </simpleType>
   <simpleType name="ike-DHset" fb:help="Set of DH groups">
      <list itemType="x:ike-DH" fb:set="true"/>
   </simpleType>
   <simpleType name="ike-ESN" fb:help="IKE Sequence Number support">
      <restriction base="string">
         <enumeration value="ALLOW-ESN" fb:help="Allow Extended Sequence Numbers (64 bits)"/>
         <enumeration value="ALLOW-SHORT-SN" fb:help="Allow short sequence numbers (32 bits)"/>
      </restriction>
   </simpleType>
   <simpleType name="ike-ESNset" fb:help="Set of ESN choices">
      <list itemType="x:ike-ESN" fb:set="true"/>
   </simpleType>
   <complexType name="ipsec-route" fb:help="IPsec tunnel routes">
      <annotation>
         <documentation xml:lang="en">
    Routes for prefixes that are sent to the IPsec tunnel
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="ip" type="x:prefixlist" fb:help="One or more network prefixes" fb:col="-2"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="ipsec-ike" fb:help="IPsec configuration (IKEv2)">
      <annotation>
         <documentation xml:lang="en">
    IPsec IKE and manually-keyed connection details
    </documentation>
      </annotation>
      <sequence>
         <element name="connection" type="x:ike-connection" minOccurs="0" maxOccurs="unbounded" fb:help="IKE connections"/>
         <element name="roaming" type="x:ike-roaming" minOccurs="0" maxOccurs="unbounded" fb:help="IKE roaming IP pools"/>
         <element name="IKE-proposal" type="x:ike-proposal" minOccurs="0" maxOccurs="unbounded" fb:help="Proposals for IKE security association"/>
         <element name="IPsec-proposal" type="x:ipsec-proposal" minOccurs="0" maxOccurs="unbounded" fb:help="Proposals for IPsec AH/ESP security association"/>
         <element name="manually-keyed" type="x:ipsec-manual" minOccurs="0" maxOccurs="unbounded" fb:help="IPsec manually-keyed connections (not recommended)"/>
      </sequence>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which IKE connections are allowed" fb:col="2"/>
      <attribute name="trusted" type="x:ipnamerangelist" use="optional" fb:help="List of IP ranges given higher priority when establshing new connections" fb:col="0"/>
      <attribute name="force-NAT" type="x:ipnamerangelist" use="optional" fb:help="List of IP ranges of peers requiring forced NAT-T" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="send-rejects" type="boolean" use="optional" default="false" fb:help="Send rejection messages to unauthenticated clients (gives away that this is an IPSec endpoint during scanning)" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="ike-proposal" fb:help="IKE security proposal">
      <annotation>
         <documentation xml:lang="en">
      Proposal for establishing the IKE security association
    </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Name" fb:key="ikeprop"/>
      <attribute name="authset" type="x:ike-authset" use="optional" fb:default="Accept any supported algorithm" fb:help="Integrity check algorithm for IKE messages"/>
      <attribute name="cryptset" type="x:ike-cryptset" use="optional" fb:default="Accept any supported algorithm" fb:help="Encryption algorithm for IKE messages"/>
      <attribute name="PRFset" type="x:ike-PRFset" use="optional" fb:default="Accept any supported function" fb:help="Pseudo-Random function for key generation"/>
      <attribute name="DHset" type="x:ike-DHset" use="optional" fb:default="Accept any supported group" fb:help="Diffie-Hellman group for IKE negotiation"/>
   </complexType>
   <complexType name="ike-roaming" fb:help="IKE roaming IP pools">
      <annotation>
         <documentation xml:lang="en">
      Pool of IP addresses and associated DNS/NBNS servers for dynamic IP allocation
    </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Name" fb:key="ikepool"/>
      <attribute name="ip" type="x:iprangelist" fb:help="List of IP ranges for allocation to road-warrior clients"/>
      <attribute name="DNS" type="x:iplist" use="optional" fb:help="List of DNS servers available to clients"/>
      <attribute name="NBNS" type="x:iplist" use="optional" fb:help="List of NetBios name servers available to clients"/>
      <attribute name="nat" type="boolean" use="optional" default="false" fb:help="NAT incoming IPv4 traffic unless set otherwise in rules"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="ipsec-proposal" fb:help="IPsec AH/ESP proposal">
      <annotation>
         <documentation xml:lang="en">
      Proposal for establishing the IPsec AH/ESP keying information
    </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Name" fb:key="ipsecprop"/>
      <attribute name="authset" type="x:ike-authset" use="optional" fb:default="Accept any supported algorithm" fb:help="Integrity check algorithm for IPsec traffic"/>
      <attribute name="cryptset" type="x:ike-cryptset" use="optional" fb:default="Accept any supported algorithm" fb:help="Encryption algorithm for IPsec traffic"/>
      <attribute name="DHset" type="x:ike-DHset" use="optional" fb:default="Accept any supported group" fb:help="Diffie-Hellman group for IPsec key negotiation"/>
      <attribute name="ESN" type="x:ike-ESNset" use="optional" fb:default="Accept ESN or short SN" fb:help="Support for extended sequence numbers"/>
   </complexType>
   <simpleType name="ike-authmethod" fb:help="authentication method">
      <restriction base="string">
         <enumeration value="Secret" fb:help="Shared Secret"/>
         <enumeration value="Certificate" fb:help="X.509 certificate"/>
         <enumeration value="EAP" fb:help="Use EAP for authentication"/>
      </restriction>
   </simpleType>
   <simpleType name="ike-mode" fb:help="connection setup mode">
      <restriction base="string">
         <enumeration value="Wait" fb:help="Wait for peer to initiate the connection"/>
         <enumeration value="On-demand" fb:help="Bring up when needed for traffic"/>
         <enumeration value="Immediate" fb:help="Always attempt to bring up connection"/>
      </restriction>
   </simpleType>
   <complexType name="ipsec-connection-common" fb:help="connection common info">
      <annotation>
         <documentation xml:lang="en">
      IPsec settings needed for IKE and manual connections
    </documentation>
      </annotation>
      <sequence>
         <element name="route" type="x:ipsec-route" minOccurs="0" maxOccurs="unbounded" fb:help="Routes to apply to tunnel when up"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" fb:help="Name" use="optional"/>
      <attribute name="local-ip" type="fb:IPAddr" use="optional" fb:help="Local IP"/>
      <attribute name="peer-ips" type="x:ipnamerangelist" use="optional" fb:default="Accept from anywhere" fb:help="peer's IP or range"/>
      <attribute name="type" type="x:ipsec-type" use="optional" fb:help="Encapsulation type" default="ESP"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for IKE traffic and tunnel wrappers" fb:col="0"/>
      <attribute name="payload-table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for payload traffic" fb:col="0"/>
      <attribute name="internal-ip" type="fb:IP46Addr" use="optional" fb:help="Internal IP for traffic originated on the FireBrick and sent down tunnel" fb:default="local-ip" fb:old="internal-ipv"/>
      <attribute name="mtu" type="unsignedShort" use="optional" default="1500" fb:help="MTU for wrapped packets"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="tcp-mss-fix" type="boolean" use="optional" default="true" fb:help="Adjust MSS option in TCP SYN to fix session MSS"/>
      <attribute name="routes" type="x:prefixlist" use="optional" fb:help="Routes when link up"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for route (highest wins)" fb:col="0"/>
      <attribute name="speed" type="unsignedInt" use="optional" fb:default="no shaping" fb:help="Egress rate limit used (b/s)"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="ike-connection" fb:help="connection configuration">
      <annotation>
         <documentation xml:lang="en">
      IPsec IKE connection settings
    </documentation>
      </annotation>
      <complexContent>
         <extension base="x:ipsec-connection-common">
            <attribute name="ike-proposals" type="x:nmtokenlist" use="optional" fb:help="IKE proposal list" fb:default="use built-in default proposals" fb:ref="ikeprop"/>
            <attribute name="ipsec-proposals" type="x:nmtokenlist" use="optional" fb:help="IPsec proposal list" fb:default="use built-in default proposals" fb:ref="ipsecprop"/>
            <attribute name="hw-crypto" type="boolean" use="optional" fb:help="Use hardware crypto support (if available)" fb:default="false"/>
            <attribute name="local-ID" type="string" use="optional" fb:help="Local IKE ID"/>
            <attribute name="peer-ID" type="string" use="optional" fb:help="Peer IKE ID"/>
            <attribute name="roaming-pool" type="NMTOKEN" use="optional" fb:help="IKE roaming IP pool" fb:ref="ikepool"/>
            <attribute name="auth-method" type="x:ike-authmethod" fb:help="method for authenticating self to peer"/>
            <attribute name="peer-auth-method" type="x:ike-authmethod" use="optional" fb:default="Use auth-method" fb:help="method for authenticating peer"/>
            <attribute name="peer-eaplist" type="x:nmtokenlist" use="optional" fb:default="allow any EAP user" fb:help="Admissible EAP users"/>
            <attribute name="query-eap-id" type="boolean" use="optional" default="true" fb:help="Query client for EAP identity"/>
            <attribute name="secret" type="fb:Secret" use="optional" fb:help="shared secret used to authenticate self to peer"/>
            <attribute name="peer-secret" type="fb:Secret" use="optional" fb:default="use secret" fb:help="shared secret used to authenticate peer"/>
            <attribute name="certlist" type="x:nmtokenlist" use="optional" fb:default="use any suitable" fb:help="Certificate(s) to be used to authenticate self"/>
            <attribute name="peer-certlist" type="x:nmtokenlist" use="optional" fb:default="accept any suitable" fb:help="Certificate trust anchor(s) acceptable for authenticating peer"/>
            <attribute name="mode" type="x:ike-mode" use="optional" default="Wait" fb:help="ike connection setup mode"/>
            <attribute name="blackhole" type="boolean" fb:help="Blackhole routed traffic when tunnel is not up" use="optional" default="false"/>
            <attribute name="lifetime" type="fb:duration" fb:help="max lifetime before renegotiation" default="1:00:00" use="optional"/>
            <attribute name="dead-peer-detect" type="fb:duration" fb:help="check peer is alive at least this often - 0 to inhibit" fb:default="30, or 0 if Road Warrior" default="30" use="optional"/>
            <attribute name="peer-ts-from-routes" type="boolean" use="optional" default="false" fb:help="Send traffic selector based on routing" fb:old="ts-from-routes"/>
            <attribute name="local-ts" type="x:iprangelist" use="optional" fb:help="Valid outgoing-source/incoming-destination IPs for tunnelled traffic" fb:default="Allow any"/>
            <attribute name="peer-ts" type="x:iprangelist" use="optional" fb:help="Valid outgoing-destination/incoming-source IPs for tunnelled traffic" fb:default="Allow any"/>
         </extension>
      </complexContent>
   </complexType>
   <simpleType name="ipsec-encapsulation" fb:help="Manually keyed IPsec encapsulation mode">
      <restriction base="string">
         <enumeration value="tunnel" fb:help="IPsec tunnel"/>
         <enumeration value="transport" fb:help="IPsec transport"/>
      </restriction>
   </simpleType>
   <complexType name="ipsec-manual" fb:help="peer configuration">
      <annotation>
         <documentation xml:lang="en">
      IPsec manually keyed connection settings (not recommended, use IKEv2 and secrets instead)
    </documentation>
      </annotation>
      <complexContent>
         <extension base="x:ipsec-connection-common">
            <attribute name="local-spi" type="x:ipsec-spi" use="required" fb:help="Local Security Parameters Index"/>
            <attribute name="remote-spi" type="x:ipsec-spi" use="required" fb:help="Peer Security Parameters Index"/>
            <attribute name="outer-spi" type="x:ipsec-spi" use="optional" fb:help="Security Parameters Index for outer header" fb:col="0"/>
            <attribute name="mode" type="x:ipsec-encapsulation" use="optional" fb:help="Encapsulation mode" default="tunnel"/>
            <attribute name="auth-algorithm" type="x:ipsec-auth-algorithm" use="optional" default="null" fb:help="Manual setting for authentication algorithm"/>
            <attribute name="auth-key" type="hexBinary" use="optional" fb:help="Manual key for authentication" fb:col="3"/>
            <attribute name="crypt-algorithm" type="x:ipsec-crypt-algorithm" use="optional" default="null" fb:help="Manual setting for encryption algorithm"/>
            <attribute name="crypt-key" type="hexBinary" use="optional" fb:help="Manual key for encryption" fb:col="3"/>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="l2tp-relay" fb:help="Relay and local authentication rules for L2TP">
      <annotation>
         <documentation xml:lang="en">
   Rules for relaying L2TP or local authentication
   </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="group-graph" type="x:graphname" use="optional" fb:help="Secondary graph name"/>
      <attribute name="username" type="x:stringlist" use="optional" fb:help="One or more patterns to match username"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Password check"/>
      <attribute name="calling-station-id" type="x:stringlist" use="optional" fb:help="One or more patterns to match calling-station-id"/>
      <attribute name="called-station-id" type="x:stringlist" use="optional" fb:help="One or more patterns to match called-station-id"/>
      <attribute name="remote-ppp-ip" type="fb:IP4Addr" use="optional" fb:help="Remote end PPP IPv4 (local auth)" fb:old="remote-ip"/>
      <attribute name="remote-netmask" type="fb:IP4Addr" use="optional" fb:help="Remote end PPP Netmask (local auth)" fb:col="0"/>
      <attribute name="ip-over-lcp" type="boolean" use="optional" fb:help="Send IP over LCP (local auth)" fb:col="0"/>
      <attribute name="lcp-echo-mim" type="boolean" use="optional" fb:help="Handle LCP echos in the middle on relayed connection" fb:col="0"/>
      <attribute name="payload-table" type="x:routetable" use="optional" fb:default="As per l2tp-incoming" fb:help="Routing table number for payload traffic (or L2TP relay)" fb:col="0"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for remote-ppp-ip/routes (highest wins)" fb:col="0"/>
      <attribute name="routes" type="x:prefixlist" use="optional" fb:help="Additional routes when link up (local auth)"/>
      <attribute name="tx-speed" type="unsignedInt" use="optional" fb:help="Egress rate limit (b/s)"/>
      <attribute name="rx-speed" type="unsignedInt" use="optional" fb:help="Send ingress rate (b/s)"/>
      <attribute name="relay-pick" type="boolean" use="optional" fb:help="If set, try one of the relay IPs at random first" fb:col="0"/>
      <attribute name="relay-ip" type="x:iplist" use="optional" fb:help="Target IP(s) for L2TP connection" fb:col="2"/>
      <attribute name="relay-secret" type="fb:Secret" use="optional" fb:help="Shared secret for L2TP connection"/>
      <attribute name="relay-hostname" type="string" use="optional" fb:help="Hostname for L2TP connection"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="l2tp" fb:help="L2TP settings">
      <annotation>
         <documentation xml:lang="en">

    L2TP settings for incoming and outgoing L2TP connections



    </documentation>
      </annotation>
      <sequence>
         <element name="outgoing" type="x:l2tp-outgoing" minOccurs="0" maxOccurs="unbounded" fb:help="Outgoing L2TP connections"/>
         <element name="incoming" type="x:l2tp-incoming" minOccurs="0" maxOccurs="unbounded" fb:help="Incoming L2TP connections"/>
      </sequence>
      <attribute name="accounting-interval" type="fb:duration" use="optional" default="1:00:00" fb:help="Periodic interim accounting interval"/>
      <attribute name="send-acct-delay" type="boolean" use="optional" fb:help="Send Acct-Delay as well as Event-Timestamp on accounting"/>
      <attribute name="radius-acct-timeout" type="unsignedShort" use="optional" default="3000" fb:help="Time before we give up on a RADIUS accounting request (ms)"/>
      <attribute name="radius-auth-timeout" type="unsignedShort" use="optional" default="3000" fb:help="Time before we give up on a RADIUS authentication request (ms)"/>
   </complexType>
   <complexType name="l2tp-incoming" fb:help="L2TP settings for incoming L2TP connections">
      <annotation>
         <documentation xml:lang="en">
   L2TP tunnel settings for incoming L2TP connections
   </documentation>
      </annotation>
      <sequence>
         <element name="match" type="x:l2tp-relay" minOccurs="0" maxOccurs="unbounded" fb:help="Rules for relaying connections and local authentication"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="remote-hostname" type="string" use="optional" fb:help="Hostname expected on connection"/>
      <attribute name="local-hostname" type="string" use="optional" fb:default="System name" fb:help="Hostname quoted on reply"/>
      <attribute name="secret" type="fb:Secret" use="optional" fb:help="Shared secret (for far end to check)"/>
      <attribute name="graph" type="string" use="optional" fb:help="Graph name"/>
      <attribute name="ping-prefix" type="string" use="optional" fb:help="Prefix to use for ICMP pings of the tunnel peer"/>
      <attribute name="operator-name" type="string" use="optional" fb:col="0" fb:help="Value to send for Operator-Name AVP"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="Any" fb:help="Routing table number for L2TP session" fb:col="0"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="IP of our end for relayed (on same table)" fb:col="0" fb:old="relay-local-ip"/>
      <attribute name="payload-table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for payload traffic" fb:col="0"/>
      <attribute name="payload-source-ip" type="fb:IP46Addr" use="optional" fb:help="IP of our end when originating traffic to LAC" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:help="List of IP ranges from which connects can be made" fb:col="2"/>
      <attribute name="mtu" type="x:mtu" use="optional" fb:help="Default MTU for sessions in this tunnel"/>
      <attribute name="local-ppp-ip" type="fb:IP4Addr" use="optional" fb:help="Local end PPP IPv4" fb:old="pppip"/>
      <attribute name="ipv6ep" type="fb:IP4Addr" use="optional" fb:help="Local end IPv4 for IPv6 tunnels"/>
      <attribute name="ip6-checksum" type="boolean" use="optional" default="true" fb:help="Calculate checksum on IPv6 tunnels"/>
      <attribute name="pppdns1" type="fb:IP4Addr" use="optional" fb:help="PPP DNS1 IPv4 default"/>
      <attribute name="pppdns2" type="fb:IP4Addr" use="optional" fb:help="PPP DNS2 IPv4 default"/>
      <attribute name="dhcpv6dns" type="x:ip6list" use="optional" fb:default="System DNS resolvers" fb:help="List of IPv6 DNS servers" fb:col="2"/>
      <attribute name="dos-limit" type="unsignedInt" use="optional" default="10000" fb:help="Per second per session tx packet drop limit for DOS protection" fb:col="0"/>
      <attribute name="speed" type="unsignedInt" use="optional" fb:help="Default egress rate limit (b/s)"/>
      <attribute name="advise-speed" type="unsignedInt" use="optional" fb:help="Advise clients of their egress rate (may be overridden by RADIUS) (b/s) - This is a FireBrick specific mechanism"/>
      <attribute name="hdlc" type="boolean" use="optional" default="true" fb:help="Send HDLC header (FF03) on all PPP frames" fb:col="0"/>
      <attribute name="lcp-rate" type="unsignedByte" use="optional" default="1" fb:help="LCP interval (seconds)"/>
      <attribute name="lcp-timeout" type="unsignedByte" use="optional" default="10" fb:help="LCP timeout (seconds)"/>
      <attribute name="lcp-data-len" type="unsignedByte" use="optional" fb:help="LCP data field length"/>
      <attribute name="tcp-mss-fix" type="boolean" use="optional" default="false" fb:help="Adjust MSS option in TCP SYN to fix session MSS"/>
      <attribute name="lcp-mru-fix" type="boolean" use="optional" default="false" fb:help="Restart LCP if RAS negotiated MRU is too high"/>
      <attribute name="require-platform" type="boolean" use="optional" default="false" fb:help="All sessions require a platform RADIUS first"/>
      <attribute name="icmp-ppp" type="boolean" use="optional" default="false" fb:help="Use PPP endpoint for ICMP" fb:col="0"/>
      <attribute name="damping" type="boolean" use="optional" default="false" fb:help="Apply damping to sessions if limiting on shaper"/>
      <attribute name="hello-interval" default="60" type="unsignedByte" use="optional" fb:help="Interval between HELLO messages" fb:col="0"/>
      <attribute name="open-timeout" default="60" type="unsignedByte" use="optional" fb:help="Interval before OPEN considered failed" fb:col="0"/>
      <attribute name="fail-lockout" default="60" type="unsignedByte" use="optional" fb:help="Interval kept in failed state" fb:col="0"/>
      <attribute name="retry-timeout" default="60" type="unsignedByte" use="optional" fb:help="Interval to retry sending control messages before fail" fb:col="0"/>
      <attribute name="ppp-init-timeout" type="unsignedByte" use="optional" default="10" fb:help="PPP initial timeout (seconds)"/>
      <attribute name="ppp-final-timeout" type="unsignedByte" use="optional" default="60" fb:help="PPP total timeout (seconds)"/>
      <attribute name="shutdown" type="boolean" use="optional" default="false" fb:help="Refuse all new sessions or tunnels" fb:col="0"/>
      <attribute name="radius" type="string" use="optional" fb:help="Name for RADIUS server config to use" fb:col="0"/>
      <attribute name="require-radius-acct" type="boolean" use="optional" fb:help="Close session if cannot do RADIUS accounting" fb:col="0"/>
      <attribute name="radius-nas-ip" type="x:radius-nas" use="optional" default="lac" fb:help="Pass remote (LAC) or local (LNS) as RADIUS NAS IP / port" fb:col="0" fb:old="relay-nas-ip"/>
      <attribute name="receive-window" fb:default="Not sent" type="unsignedShort" use="optional" fb:help="Receive window to advise on connection" fb:col="0"/>
      <attribute name="session-timeout" type="fb:duration" use="optional" fb:help="Default session timeout"/>
      <attribute name="delegate-framed" type="boolean" default="true" use="optional" fb:help="Delegate all RADIUS framed IPv6 routes (as opposed to only those using the delegated prefix AVP)"/>
      <attribute name="ha-set" type="x:ha-set" use="optional" fb:help="HA Set (send duplicate packets to set)" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="l2tp-outgoing" fb:help="L2TP settings for outgoing L2TP connections">
      <annotation>
         <documentation xml:lang="en">
   L2TP tunnel settings for outgoing L2TP connections
   </documentation>
      </annotation>
      <sequence>
         <element name="route" type="x:ppp-route" minOccurs="0" maxOccurs="unbounded" fb:help="Routes to apply when link is up"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" use="optional" fb:help="Name" fb:key="l2tp"/>
      <attribute name="local-hostname" type="string" use="optional" fb:help="The hostname we quote on tunnel connect" fb:default="System name" fb:old="hostname"/>
      <attribute name="secret" type="fb:Secret" use="optional" fb:help="Shared secret"/>
      <attribute name="server" type="fb:IPNameAddr" fb:help="IP/name of far end" fb:col="2" fb:old="ip"/>
      <attribute name="local-ip" type="fb:IPAddr" use="optional" fb:help="Wrapper IP of our end" fb:col="0"/>
      <attribute name="graph" type="string" use="optional" fb:help="Graph name"/>
      <attribute name="ping-prefix" type="string" use="optional" fb:help="Prefix to use for ICMP pings of the tunnel peer"/>
      <attribute name="tx-speed" type="unsignedInt" use="optional" fb:help="Egress rate limit (b/s)"/>
      <attribute name="rx-speed" type="unsignedInt" use="optional" fb:help="Send ingress rate (b/s)"/>
      <attribute name="ip6-checksum" type="boolean" use="optional" default="true" fb:help="Calculate checksum on IPv6 tunnels"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for L2TP session" fb:col="0"/>
      <attribute name="payload-table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for payload traffic" fb:col="0"/>
      <attribute name="username" type="string" use="optional" fb:help="User name for login"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Password for login"/>
      <attribute name="calling-station-id" type="string" use="optional" fb:help="calling-station-id to send (present but empty means use the unit's serial number)" fb:old="calling"/>
      <attribute name="called-station-id" type="string" use="optional" fb:help="called-station-id to send" fb:old="called"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for remote-ip/routes (highest wins)" fb:col="0"/>
      <attribute name="routes" type="x:prefixlist" use="optional" fb:default="Default gateway" fb:help="Routes when link up"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="mtu" type="x:mtu" use="optional" fb:help="Default MTU for sessions in this tunnel"/>
      <attribute name="hdlc" type="boolean" use="optional" default="true" fb:help="Send HDLC header (FF03) on all PPP frames" fb:col="0"/>
      <attribute name="local" type="fb:IP46Addr" use="optional" fb:help="Local (internal/PPP) IP address" fb:col="0"/>
      <attribute name="remote" type="fb:IP4Addr" use="optional" fb:help="Remote (internal/PPP) IPv4 address" fb:col="0"/>
      <attribute name="nat" type="boolean" use="optional" default="true" fb:help="NAT IPv4 traffic to this link unless otherwise set in rules"/>
      <attribute name="accept-dns" type="boolean" use="optional" default="true" fb:help="Accept DNS servers specified by far end" fb:col="0"/>
      <attribute name="hello-interval" default="10" type="unsignedByte" use="optional" fb:help="Interval between HELLO messages" fb:col="0"/>
      <attribute name="open-timeout" default="10" type="unsignedByte" use="optional" fb:help="Interval before OPEN considered failed" fb:col="0"/>
      <attribute name="ppp-init-timeout" type="unsignedByte" use="optional" default="10" fb:help="PPP initial timeout (seconds)"/>
      <attribute name="ppp-final-timeout" type="unsignedByte" use="optional" default="60" fb:help="PPP total timeout (seconds)"/>
      <attribute name="fail-lockout" default="1" type="unsignedByte" use="optional" fb:help="Interval kept in failed state" fb:col="0"/>
      <attribute name="retry-timeout" default="10" type="unsignedByte" use="optional" fb:help="Interval to retry sending control messages before fail" fb:col="0"/>
      <attribute name="min-retry" default="10" type="fb:duration" use="optional" fb:help="Minimum session time before retrying connection" fb:col="0"/>
      <attribute name="lcp-rate" type="unsignedByte" use="optional" default="10" fb:help="LCP interval (seconds)" fb:col="0"/>
      <attribute name="lcp-timeout" type="unsignedByte" use="optional" default="61" fb:help="LCP timeout (seconds)" fb:col="0"/>
      <attribute name="lcp-data-len" type="unsignedByte" use="optional" fb:help="LCP echo data field length" fb:col="0"/>
      <attribute name="tcp-mss-fix" type="boolean" use="optional" default="false" fb:help="Adjust MSS option in TCP SYN to fix session MSS"/>
      <attribute name="cug" type="x:cug" use="optional" fb:help="Closed user group ID" fb:col="0"/>
      <attribute name="cug-restrict" type="boolean" use="optional" fb:help="Closed user group restricted traffic (only to/from same CUG ID)" fb:col="0"/>
      <attribute name="ha-set" type="x:ha-set" use="optional" fb:help="HA Set (send duplicate packets to set)" fb:col="0"/>
      <attribute name="receive-window" fb:default="Not sent" type="unsignedShort" use="optional" fb:help="Receive window to advise on connection" fb:col="0"/>
      <attribute name="pap" type="boolean" use="optional" fb:help="Use PAP to authenticate" fb:col="0"/>
      <attribute name="proxy" type="boolean" use="optional" fb:help="Send proxy auth details (faster)" default="true" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="port" fb:help="Physical port">
      <restriction base="string">
         <enumeration value=" 0" fb:help="Port 0 (not valid)"/>
         <enumeration value="1" fb:help="Port 1"/>
         <enumeration value="2" fb:help="Port 2"/>
         <enumeration value="3" fb:help="Port 3"/>
         <enumeration value="4" fb:help="Port 4"/>
         <enumeration value="5" fb:help="Port 5"/>
      </restriction>
   </simpleType>
   <simpleType name="ipnamerangelist" fb:help="List of IPranges or ip groups">
      <list itemType="fb:IPNameRange"/>
   </simpleType>
   <simpleType name="iprangelist" fb:help="List of IPranges">
      <list itemType="fb:IPRange"/>
   </simpleType>
   <simpleType name="ip4rangelist" fb:help="List of IP4ranges">
      <list itemType="fb:IP4Range"/>
   </simpleType>
   <simpleType name="subnetlist" fb:help="List of subnets">
      <list itemType="fb:IPSubnet"/>
   </simpleType>
   <simpleType name="iplist" fb:help="List of IP addresses">
      <list itemType="fb:IPAddr"/>
   </simpleType>
   <simpleType name="ipnamelist" fb:help="List of IP addresses or domain names">
      <list itemType="fb:IPNameAddr"/>
   </simpleType>
   <simpleType name="nmtokenlist" fb:help="List of NMTOKEN">
      <list itemType="NMTOKEN"/>
   </simpleType>
   <simpleType name="stringlist" fb:help="List of strings">
      <list itemType="string"/>
   </simpleType>
   <simpleType name="ip4list" fb:help="List of IPv4 addresses">
      <list itemType="fb:IP4Addr"/>
   </simpleType>
   <simpleType name="ip6list" fb:help="List of IPv6 addresses">
      <list itemType="fb:IP6Addr"/>
   </simpleType>
   <simpleType name="prefixlist" fb:help="List of IP Prefixes">
      <list itemType="fb:IPPrefix"/>
   </simpleType>
   <simpleType name="prefix4list" fb:help="List of IPv4 Prefixes">
      <list itemType="fb:IP4Prefix"/>
   </simpleType>
   <simpleType name="filterlist" fb:help="List of IP Prefix filters">
      <list itemType="fb:IPFilter"/>
   </simpleType>
   <simpleType name="communitylist" fb:help="List of BGP communities">
      <list itemType="fb:Community"/>
   </simpleType>
   <simpleType name="portlist" fb:help="List of protocol port ranges">
      <list itemType="fb:PortRange"/>
   </simpleType>
   <simpleType name="protolist" fb:help="List of IP protocols">
      <list itemType="unsignedByte"/>
   </simpleType>
   <simpleType name="unsignedIntList" fb:help="List of integers">
      <list itemType="unsignedInt"/>
   </simpleType>
   <simpleType name="macprefixlist" fb:help="List of MAC prefixes">
      <list itemType="x:macprefix"/>
   </simpleType>
   <simpleType name="maclist" fb:help="List of MACs">
      <list itemType="x:mac"/>
   </simpleType>
   <simpleType name="ports" fb:help="Set of ports">
      <list itemType="x:port" fb:set="true"/>
   </simpleType>
   <simpleType name="routetableset" fb:help="Set of routetables">
      <list itemType="x:routetable"/>
   </simpleType>
   <simpleType name="aslist" fb:help="List of AS numbers">
      <restriction base="x:unsignedIntList">
         <maxLength value="10"/>
      </restriction>
   </simpleType>
   <simpleType name="ra-max" fb:help="Route announcement max interval (seconds)">
      <restriction base="unsignedShort">
         <minInclusive value="4"/>
         <maxInclusive value="1800"/>
      </restriction>
   </simpleType>
   <simpleType name="ra-min" fb:help="Route announcement min interval (seconds)">
      <restriction base="unsignedShort">
         <minInclusive value="3"/>
         <maxInclusive value="1350"/>
      </restriction>
   </simpleType>
   <simpleType name="vlan" fb:help="VLAN ID (0=untagged)">
      <restriction base="unsignedShort">
         <minInclusive value="0"/>
         <maxInclusive value="4095"/>
      </restriction>
   </simpleType>
   <simpleType name="vlanset" fb:help="Set of VLAN IDs">
      <list itemType="x:vlan"/>
   </simpleType>
   <simpleType name="vlan-nz" fb:help="VLAN ID">
      <restriction base="unsignedShort">
         <minInclusive value="1"/>
         <maxInclusive value="4095"/>
      </restriction>
   </simpleType>
   <simpleType name="syslog-severity" fb:help="Syslog severity">
      <annotation>
         <documentation xml:lang="en">
    Log severity - different loggable events log at different levels.
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="EMERG" fb:help="System is unstable"/>
         <enumeration value="ALERT" fb:help="Action must be taken immediately"/>
         <enumeration value="CRIT" fb:help=" Critical conditions"/>
         <enumeration value="ERR" fb:help="Error conditions"/>
         <enumeration value="WARNING" fb:help="Warning conditions"/>
         <enumeration value="NOTICE" fb:help="Normal but significant events"/>
         <enumeration value="INFO" fb:help="Informational"/>
         <enumeration value="DEBUG" fb:help="Debug level messages"/>
         <enumeration value="NO-LOGGING" fb:help="No logging"/>
      </restriction>
   </simpleType>
   <simpleType name="syslog-facility" fb:help="Syslog facility">
      <annotation>
         <documentation xml:lang="en">
    Syslog facility, usually used to control which log file the syslog is written to.
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="KERN" fb:help="Kernel messages"/>
         <enumeration value="USER" fb:help="User level messges"/>
         <enumeration value="MAIL" fb:help="Mail system"/>
         <enumeration value="DAEMON" fb:help="System Daemons"/>
         <enumeration value="AUTH" fb:help="Security/auth"/>
         <enumeration value="SYSLOG" fb:help="Internal to syslogd"/>
         <enumeration value="LPR" fb:help="Printer"/>
         <enumeration value="NEWS" fb:help="News"/>
         <enumeration value="UUCP" fb:help="UUCP"/>
         <enumeration value="CRON" fb:help="Cron deamon"/>
         <enumeration value="AUTHPRIV" fb:help="private security/auth"/>
         <enumeration value="FTP" fb:help="File transfer"/>
         <enumeration value="12" fb:help="Unused"/>
         <enumeration value="13" fb:help="Unused"/>
         <enumeration value="14" fb:help="Unused"/>
         <enumeration value="15" fb:help="Unused"/>
         <enumeration value="LOCAL0" fb:help="Local 0"/>
         <enumeration value="LOCAL1" fb:help="Local 1"/>
         <enumeration value="LOCAL2" fb:help="Local 2"/>
         <enumeration value="LOCAL3" fb:help="Local 3"/>
         <enumeration value="LOCAL4" fb:help="Local 4"/>
         <enumeration value="LOCAL5" fb:help="Local 5"/>
         <enumeration value="LOCAL6" fb:help="Local 6"/>
         <enumeration value="LOCAL7" fb:help="Local 7"/>
      </restriction>
   </simpleType>
   <simpleType name="routetable" fb:help="Route table number">
      <restriction base="unsignedByte">
         <maxInclusive value="99"/>
      </restriction>
   </simpleType>
   <simpleType name="datenum" fb:help="Day number in month">
      <restriction base="unsignedByte">
         <minInclusive value="1"/>
         <maxInclusive value="31"/>
      </restriction>
   </simpleType>
   <simpleType name="dates" fb:help="Set of dates">
      <list itemType="x:datenum" fb:set="true"/>
   </simpleType>
   <simpleType name="cug" fb:help="CUG ID">
      <restriction base="unsignedShort">
         <minInclusive value="1"/>
         <maxInclusive value="32767"/>
      </restriction>
   </simpleType>
   <simpleType name="tun-id" fb:help="Local tunnel ID">
      <restriction base="unsignedShort">
         <minInclusive value="1"/>
         <maxInclusive value="100"/>
      </restriction>
   </simpleType>
   <simpleType name="ses-id" fb:help="Local session ID">
      <restriction base="unsignedShort">
         <minInclusive value="1"/>
         <maxInclusive value="500"/>
      </restriction>
   </simpleType>
   <simpleType name="ha-set" fb:help="High availability set ID">
      <restriction base="string">
         <enumeration value="A"/>
         <enumeration value="B"/>
         <enumeration value="C"/>
         <enumeration value="D"/>
         <enumeration value="E"/>
         <enumeration value="F"/>
         <enumeration value="G"/>
      </restriction>
   </simpleType>
   <simpleType name="radius-nas" fb:help="NAS IP to report">
      <restriction base="string">
         <enumeration value=" false" fb:help="Local LNS IP"/>
         <enumeration value="lns" fb:help="Local LNS IP"/>
         <enumeration value="both" fb:help="Send NAS IP twice (LAC then LNS)"/>
         <enumeration value="lac" fb:help="Remote LAC IP"/>
         <enumeration value=" true" fb:help="Remote LAC IP"/>
      </restriction>
   </simpleType>
   <simpleType name="mtu" fb:help="Max transmission unit">
      <restriction base="unsignedShort">
         <minInclusive value="576"/>
         <maxInclusive value="2000"/>
      </restriction>
   </simpleType>
   <simpleType name="switch" fb:help="Profile manual setting">
      <annotation>
         <documentation xml:lang="en">
    Manual setting control for profile
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="false" fb:help="Profile set to OFF"/>
         <enumeration value="true" fb:help="Profile set to ON"/>
         <enumeration value="control-switch" fb:help="Profile set based on control switch on home page"/>
      </restriction>
   </simpleType>
   <simpleType name="ramode" fb:help="IPv6 route announce level">
      <annotation>
         <documentation xml:lang="en">
    IPv6 route announcement mode and level
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="false" fb:help="Do not announce"/>
         <enumeration value="low" fb:help="Announce as low priority"/>
         <enumeration value="medium" fb:help="Announce as medium priority"/>
         <enumeration value="high" fb:help="Announce as high priority"/>
         <enumeration value="true" fb:help="Announce as default (medium) priority"/>
         <enumeration value="dhcp6triggered" fb:help="When triggered by DHCPv6"/>
      </restriction>
   </simpleType>
   <simpleType name="bgpmode" fb:help="BGP announcement mode">
      <annotation>
         <documentation xml:lang="en">
    BGP mode defines the default advertisement mode for prefixes, based on well-known community tags
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="false" fb:help="Not included in BGP at all"/>
         <enumeration value="no-advertise" fb:help="Not included in BGP, not advertised at all"/>
         <enumeration value="no-export" fb:help="Not normally exported from local AS/confederation"/>
         <enumeration value="local-as" fb:help="Not exported from local AS"/>
         <enumeration value="no-peer" fb:help="Exported with no-peer community tag"/>
         <enumeration value="true" fb:help="Exported as normal with no special tags added"/>
      </restriction>
   </simpleType>
   <simpleType name="peertype" fb:help="BGP peer type">
      <annotation>
         <documentation xml:lang="en">
    Peer type controls many of the defaults for a peer setting. It allows typical settings to be defined with one attribute that reflects the type of peer.
    </documentation>
      </annotation>
      <restriction base="string">
         <enumeration value="normal" fb:help="Normal BGP operation"/>
         <enumeration value="transit" fb:help="EBGP Mark received as no-export"/>
         <enumeration value="peer" fb:help="EBGP Mark received as no-export, only accept peer AS"/>
         <enumeration value="customer" fb:help="EBGP Allow export as if confederate, only accept peer AS"/>
         <enumeration value="internal" fb:help="IBGP allowing own AS"/>
         <enumeration value="reflector" fb:help="IBGP allowing own AS and working in route reflector mode"/>
         <enumeration value="confederate" fb:help="EBGP confederate"/>
         <enumeration value="ixp" fb:help="Internet exchange point peer on route server, soft routes EBGP only"/>
      </restriction>
   </simpleType>
   <simpleType name="day" fb:help="Day name (3 letter)">
      <restriction base="string">
         <enumeration value="Sun" fb:help="Sunday"/>
         <enumeration value="Mon" fb:help="Monday"/>
         <enumeration value="Tue" fb:help="Tuesday"/>
         <enumeration value="Wed" fb:help="Wednesday"/>
         <enumeration value="Thu" fb:help="Thursday"/>
         <enumeration value="Fri" fb:help="Friday"/>
         <enumeration value="Sat" fb:help="Saturday"/>
      </restriction>
   </simpleType>
   <simpleType name="days" fb:help="Set of days">
      <list itemType="x:day" fb:set="true"/>
   </simpleType>
   <simpleType name="month" fb:help="Month name (3 letter)">
      <restriction base="string">
         <enumeration value="Jan" fb:help="January"/>
         <enumeration value="Feb" fb:help="February"/>
         <enumeration value="Mar" fb:help="March"/>
         <enumeration value="Apr" fb:help="April"/>
         <enumeration value="May" fb:help="May"/>
         <enumeration value="Jun" fb:help="June"/>
         <enumeration value="Jul" fb:help="July"/>
         <enumeration value="Aug" fb:help="August"/>
         <enumeration value="Sep" fb:help="September"/>
         <enumeration value="Oct" fb:help="October"/>
         <enumeration value="Nov" fb:help="November"/>
         <enumeration value="Dec" fb:help="December"/>
      </restriction>
   </simpleType>
   <simpleType name="months" fb:help="Set of months">
      <list itemType="x:month" fb:set="true"/>
   </simpleType>
   <simpleType name="mac" fb:help="MAC address">
      <restriction base="hexBinary">
         <minLength value="12"/>
         <maxLength value="12"/>
      </restriction>
   </simpleType>
   <simpleType name="macprefix" fb:help="MAC prefix">
      <restriction base="hexBinary">
         <minLength value="2"/>
         <maxLength value="12"/>
      </restriction>
   </simpleType>
   <simpleType name="macsuffix" fb:help="MAC suffix">
      <restriction base="hexBinary">
         <minLength value="2"/>
         <maxLength value="4"/>
      </restriction>
   </simpleType>
   <simpleType name="macspoof" fb:help="Spoof MAC base address">
      <restriction base="hexBinary">
         <minLength value="8"/>
         <maxLength value="12"/>
      </restriction>
   </simpleType>
   <simpleType name="autoloadtype" fb:help="Type of s/w auto load">
      <restriction base="string">
         <enumeration value="false" fb:help="Do no auto load"/>
         <enumeration value="factory" fb:help="Load factory releases"/>
         <enumeration value="beta" fb:help="Load beta test releases"/>
         <enumeration value="alpha" fb:help="Load test releases"/>
      </restriction>
   </simpleType>
   <simpleType name="lacp-hot-standby" fb:help="LACP hot standby mode">
      <restriction base="string">
         <enumeration value="enabled" fb:help="Normal hot standby"/>
         <enumeration value="nosync" fb:help="Don't set SYNC (helps with some switches)"/>
         <enumeration value="disabled" fb:help="Don't do hot standby"/>
      </restriction>
   </simpleType>
   <simpleType name="radiuspriority" fb:help="Options for controlling platform RADIUS response priority tagging">
      <restriction base="string">
         <enumeration value="equal" fb:help="All the same priority"/>
         <enumeration value="strict" fb:help="In order specified"/>
         <enumeration value="random" fb:help="Random order"/>
         <enumeration value="calling" fb:help="Hashed on calling station id"/>
         <enumeration value="called" fb:help="Hashed on called station id"/>
         <enumeration value="username" fb:help="Hashed on full username"/>
         <enumeration value="user" fb:help="Hashed on username before @"/>
         <enumeration value="realm" fb:help="Hashed on username after @"/>
         <enumeration value="prefix" fb:help="Hashed on username initial letters and numbers only"/>
      </restriction>
   </simpleType>
   <simpleType name="radiustypes" fb:help="Set of radius type">
      <list itemType="x:radiustype" fb:set="true"/>
   </simpleType>
   <simpleType name="radiustype" fb:help="Type of RADIUS server">
      <restriction base="string">
         <enumeration value="authentication" fb:help="Authentication server"/>
         <enumeration value="accounting" fb:help="Accounting server"/>
         <enumeration value="control" fb:help="Allowed to send control (CoA/DM)"/>
      </restriction>
   </simpleType>
   <simpleType name="uknumberformat" fb:help="Number formatting option">
      <restriction base="string">
         <enumeration value="false" fb:help="Don't format numbers for display"/>
         <enumeration value="true" fb:help="Format numbers for display with spacing"/>
         <enumeration value="replace-zero" fb:help="Format numbers for display with spacing and replacing zeros - may look clearer on some CLI devices"/>
      </restriction>
   </simpleType>
   <simpleType name="recordoption" fb:help="Recording option">
      <restriction base="string">
         <enumeration value="false" fb:help="Don't automatically record calls"/>
         <enumeration value="in-only" fb:help="Automatically record incoming calls"/>
         <enumeration value="out-only" fb:help="Automatically record outgoing calls"/>
         <enumeration value="true" fb:help="Automatically record all calls"/>
      </restriction>
   </simpleType>
   <simpleType name="graphname" fb:help="Graph name">
      <restriction base="token">
         <maxLength value="40"/>
      </restriction>
   </simpleType>
   <simpleType name="hostname" fb:help="Host name">
      <restriction base="NMTOKEN">
         <maxLength value="128"/>
      </restriction>
   </simpleType>
   <simpleType name="sfoption" fb:help="Source filter option">
      <restriction base="string">
         <enumeration value="false" fb:help="No source filter checks"/>
         <enumeration value="blackhole" fb:help="Check replies blackholed"/>
         <enumeration value="nowhere" fb:help="Check replies valid"/>
         <enumeration value="self" fb:help="Check replies valid and not self"/>
         <enumeration value="true" fb:help="Check replies down same port/vlan"/>
      </restriction>
   </simpleType>
   <simpleType name="record-beep-option" fb:help="Record beep option">
      <restriction base="string">
         <enumeration value="false" fb:help="No beep"/>
         <enumeration value="button" fb:help="Beep on record button press"/>
         <enumeration value="true" fb:help="Beep on start of record"/>
      </restriction>
   </simpleType>
   <simpleType name="sip-error" fb:help="SIP error code">
      <restriction base="unsignedShort">
         <minInclusive value="400"/>
         <maxInclusive value="699"/>
      </restriction>
   </simpleType>
   <simpleType name="dynamic-graph" fb:help="Type of dynamic graph">
      <restriction base="string">
         <enumeration value="false" fb:help="No dynamic graph"/>
         <enumeration value="ip" fb:help="Use source IP address"/>
         <enumeration value="mac" fb:help="Use source MAC address"/>
      </restriction>
   </simpleType>
   <simpleType name="ipsec-type" fb:help="IPsec encapsulation type">
      <restriction base="string">
         <enumeration value="AH" fb:help="Authentication Header"/>
         <enumeration value="ESP" fb:help="Encapsulating Security Payload"/>
      </restriction>
   </simpleType>
   <simpleType name="ipsec-spi" fb:help="IPsec Security Parameters Index">
      <restriction base="unsignedInt">
         <minInclusive value="256"/>
      </restriction>
   </simpleType>
   <simpleType name="ipsec-auth-algorithm" fb:help="IPsec authentication algorithm">
      <restriction base="string">
         <enumeration value="null" fb:help="No authentication"/>
         <enumeration value="HMAC-MD5" fb:help="HMAC-MD5-96 (RFC 2403)"/>
         <enumeration value="HMAC-SHA1" fb:help="HMAC-SHA1-96 (RFC 2404)"/>
         <enumeration value="AES-XCBC" fb:help="AES-XCBC-MAC-96 (RFC 3566)"/>
         <enumeration value="HMAC-SHA256" fb:help="HMAC-SHA-256-128 (RFC 4868)"/>
      </restriction>
   </simpleType>
   <simpleType name="ipsec-crypt-algorithm" fb:help="IPsec encryption algorithm">
      <restriction base="string">
         <enumeration value="null" fb:help="No encryption (RFC 2410)"/>
         <enumeration value="3DES-CBC" fb:help="3DES-CBC (RFC 2451)"/>
         <enumeration value="blowfish" fb:help="Blowfish CBC (RFC 2451) with 16-byte key"/>
         <enumeration value="blowfish-192" fb:help="Blowfish CBC (RFC 2451) with 24-byte key"/>
         <enumeration value="blowfish-256" fb:help="Blowfish CBC (RFC 2451) with 32-byte key"/>
         <enumeration value="AES-CBC" fb:help="AES-CBC (Rijndael) (RFC 3602) with 16-byte key"/>
         <enumeration value="AES-192-CBC" fb:help="AES-CBC (Rijndael) (RFC 3602) with 24-byte key"/>
         <enumeration value="AES-256-CBC" fb:help="AES-CBC (Rijndael) (RFC 3602) with 32-byte key"/>
      </restriction>
   </simpleType>
   <simpleType name="trunk-mode" fb:help="Trunk port mode">
      <restriction base="string">
         <enumeration value="false" fb:help="Not trunking"/>
         <enumeration value="random" fb:help="Random trunking"/>
         <enumeration value="l2-hash" fb:help="L2 hashed trunking"/>
         <enumeration value="l23-hash" fb:help="L2 and L3 hashed trunking"/>
         <enumeration value="l3-hash" fb:help="L3 hashed trunking"/>
      </restriction>
   </simpleType>
   <simpleType name="mqtt-brokers" fb:help="Select MQTT brokers">
      <restriction base="string">
         <enumeration value="none" fb:help="No broker/internal"/>
         <enumeration value="mqtt" fb:help="MQTT only"/>
         <enumeration value="mqtts" fb:help="MQTTS only"/>
         <enumeration value="mqtt+mqtts" fb:help="MQTT and MQTTS"/>
         <enumeration value="external" fb:help="External only"/>
         <enumeration value="external+mqtt" fb:help="External and MQTT"/>
         <enumeration value="external+mqtts" fb:help="External and MQTTS"/>
         <enumeration value="all" fb:help="All brokers"/>
      </restriction>
   </simpleType>
   <simpleType name="http-mode" fb:help="HTTP/HTTPS security mode">
      <restriction base="string">
         <enumeration value="http-only" fb:help="No HTTPS access"/>
         <enumeration value="http+https" fb:help="Both HTTP and HTTPS access"/>
         <enumeration value="https-only" fb:help="No HTTP access"/>
         <enumeration value="redirect-to-https" fb:help="HTTP accesses are redirected to use HTTPS"/>
         <enumeration value="redirect-to-https-if-acme" fb:help="HTTP accesses are redirected to use HTTPS if ACME set up for hostname"/>
         <enumeration value="redirect-to-https-except-trusted" fb:help="HTTP accesses are redirected to use HTTPS (except trusted IPs)"/>
      </restriction>
   </simpleType>
   <simpleType name="percentage" fb:help="Percentage (0 .. 100)">
      <restriction base="unsignedByte">
         <minInclusive value="0"/>
         <maxInclusive value="100"/>
      </restriction>
   </simpleType>
   <simpleType name="pppoe-calling" fb:help="Additional prefix on PPPoE calling ID">
      <restriction base="string">
         <enumeration value="none" fb:help="None"/>
         <enumeration value="mac" fb:help="MAC"/>
         <enumeration value="vlan" fb:help="Inner VLAN"/>
         <enumeration value="mac-vlan" fb:help="MAC and inner VLAN"/>
         <enumeration value="vlanvlan" fb:help="Outer and inner VLANs padded to 4 digits"/>
      </restriction>
   </simpleType>
   <simpleType name="pppoe-calling-suffix" fb:help="Main calling ID">
      <restriction base="string">
         <enumeration value="none" fb:help="No suffix"/>
         <enumeration value="mac" fb:help="MAC address suffix"/>
      </restriction>
   </simpleType>
   <simpleType name="ppp-dump" fb:help="PPP dump format">
      <restriction base="string">
         <enumeration value="default" fb:help="Mixed hex/decode"/>
         <enumeration value="decoded" fb:help="Decoded only"/>
         <enumeration value="decoded+raw" fb:help="Decoded + raw"/>
         <enumeration value="raw" fb:help="Raw hex"/>
      </restriction>
   </simpleType>
   <simpleType name="shaper-limit" fb:help="Shaper limit (ms)">
      <restriction base="unsignedShort">
         <minInclusive value="0"/>
         <maxInclusive value="1000"/>
      </restriction>
   </simpleType>
   <simpleType name="hex64" fb:help="Hex value up to 64 bits (8 bytes)">
      <restriction base="hexBinary">
         <minLength value="2"/>
         <maxLength value="16"/>
      </restriction>
   </simpleType>
   <simpleType name="privacy-type" fb:help="Privacy tag to use for withheld">
      <restriction base="string">
         <enumeration value="false" fb:help="Do not send Privacy header"/>
         <enumeration value="id" fb:help="Send Privacy:id to mark withheld" fb:old="true"/>
         <enumeration value="user" fb:help="Send Privacy:user to mark withheld"/>
         <enumeration value="user-id" fb:help="Send Privacy:user;id to mark withheld"/>
      </restriction>
   </simpleType>
   <complexType name="pppoe" fb:help="PPPoE settings">
      <annotation>
         <documentation xml:lang="en">
    PPPoE endpoint settings
    </documentation>
      </annotation>
      <sequence>
         <element name="route" type="x:ppp-route" minOccurs="0" maxOccurs="unbounded" fb:help="Routes to apply when ppp link is up"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" use="optional" fb:help="Name" fb:key="pppoe"/>
      <attribute name="port" type="NMTOKEN" fb:help="Port group name" fb:ref="portname"/>
      <attribute name="eth" type="x:port" use="optional" fb:help="Physical port connected to modem (for port reset)"/>
      <attribute name="vlan" type="x:vlan" use="optional" default="0" fb:help="VLAN ID (0=untagged)"/>
      <attribute name="mode" type="x:pppoe-mode" use="optional" default="client" fb:help="PPPoE server/client mode"/>
      <attribute name="incoming-vlans" type="x:vlanset" use="optional" fb:help="VLAN IDs to accept connections on"/>
      <attribute name="service" type="string" use="optional" fb:default="Any service" fb:help="Service name" fb:col="-1"/>
      <attribute name="ac-name" type="string" use="optional" fb:default="Any a/c name as client, else same as 'name'" fb:help="Access concentrator name"/>
      <attribute name="username" type="string" use="optional" fb:help="User name"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="User password"/>
      <attribute name="mtu" type="x:mtu" use="optional" default="1492" fb:help="MTU for link"/>
      <attribute name="speed" type="unsignedInt" use="optional" fb:help="Default egress rate limit (b/s)"/>
      <attribute name="auto-percent" type="unsignedByte" use="optional" fb:help="Try to set egress based on connect message, percentage" fb:default="N/A" fb:col="0"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="tcp-mss-fix" type="boolean" use="optional" default="true" fb:help="Adjust MSS option in TCP SYN to fix session MSS" fb:col="0"/>
      <attribute name="rfc4638" type="boolean" use="optional" fb:default="If over 1492 MTU" fb:help="Send RFC4638 PPP-Max-Payload" fb:col="0"/>
      <attribute name="lcp-rate" type="unsignedByte" use="optional" default="10" fb:help="LCP interval (seconds)" fb:col="0"/>
      <attribute name="lcp-timeout" type="unsignedByte" use="optional" default="61" fb:help="LCP timeout (seconds)" fb:col="0"/>
      <attribute name="routes" type="x:prefixlist" use="optional" fb:default="Default gateway" fb:help="Routes when link up" fb:col="-1"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for route (highest wins)" fb:col="0"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="table" type="x:routetable" use="optional" fb:help="Routing table number for payload" fb:col="0"/>
      <attribute name="local" type="fb:IP4Addr" use="optional" fb:help="Local IPv4 address" fb:col="0"/>
      <attribute name="remote" type="fb:IP4Addr" use="optional" fb:help="Remote IPv4 address" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log" fb:col="-1"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log as events" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="accept-dns" type="boolean" use="optional" default="true" fb:help="Accept DNS servers specified by far end" fb:col="0"/>
      <attribute name="ip-over-lcp" type="boolean" use="optional" fb:default="auto" fb:help="Sends all IP packets as LCP" fb:col="0"/>
      <attribute name="fast-retry" type="boolean" use="optional" fb:help="Aggressive re-connect" fb:col="0"/>
      <attribute name="calling-prefix" type="string" use="optional" fb:help="Prefix on calling number (BRAS mode)" fb:col="0"/>
      <attribute name="calling-id" type="x:pppoe-calling" use="optional" fb:help="Add mac and/or vlan(s) after prefix" fb:col="0"/>
      <attribute name="calling-suffix" type="x:pppoe-calling-suffix" use="optional" fb:help="Override the calling suffix" fb:col="0"/>
      <attribute name="nat" type="boolean" use="optional" default="false" fb:help="NAT IPv4 traffic to this link unless otherwise set by rules"/>
      <attribute name="cug" type="x:cug" use="optional" fb:help="Closed user group ID" fb:col="0"/>
      <attribute name="cug-restrict" type="boolean" use="optional" fb:help="Closed user group restricted traffic (only to/from same CUG ID)" fb:col="0"/>
      <attribute name="mac-suffix" type="x:macsuffix" use="optional" fb:help="MAC ends with this hex value" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="incoming-profile" type="NMTOKEN" use="optional" fb:help="Profile for responding to PADIs" fb:ref="profile"/>
      <attribute name="balance-group" type="x:balance-group-id" use="optional" fb:help="Balance group"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="ppp-route" fb:help="PPP routes">
      <annotation>
         <documentation xml:lang="en">
    Routes that apply when link is up
    </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="ip" type="x:prefixlist" fb:help="One or more network prefixes" fb:col="-2"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref of network (highest wins)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="pppoe-mode" fb:help="Type of PPPoE connection">
      <restriction base="string">
         <enumeration value="client" fb:help="Normal PPPoE client connects to access controller"/>
         <enumeration value="bras-l2tp" fb:help="PPPoE server mode linked to L2TP operation"/>
      </restriction>
   </simpleType>
   <complexType name="ppp-balance">
   include "general-attributes.h"
      <annotation>
         <documentation xml:lang="en">
   PPPoE Server Balancing Settings
   </documentation>
      </annotation>
      <attribute name="capacity" type="unsignedInt" default="10000" fb:help="Bandwidth allocated for PPP balancing in MB/s"/>
      <attribute name="equivalence-threshold" use="optional" type="unsignedInt" default="5000" fb:help="Bandwidth difference required to stop accepting MB/s"/>
      <attribute name="port" type="NMTOKEN" fb:help="Port group name for tx/rx of balance updates" fb:ref="portname"/>
      <attribute name="vlan" type="x:vlan" use="optional" default="0" fb:help="VLAN ID (0=untagged) for tx/rx of balance updates"/>
      <attribute name="macs" type="x:maclist" use="optional" fb:help="MACs to direct to this unit"/>
      <sequence>
         <element name="balance-group" type="x:balance-group" minOccurs="0" maxOccurs="8" fb:help="Balance group settings"/>
      </sequence>
   </complexType>
   <simpleType name="balance-group-id" fb:help="Balance group ID">
      <restriction base="unsignedByte">
         <maxInclusive value="7"/>
      </restriction>
   </simpleType>
   <complexType name="balance-group" fb:help="Balance group">
      <annotation>
         <documentation xml:lang="en">
    PPP balance group
    </documentation>
      </annotation>
      <attribute name="id" type="x:balance-group-id" fb:help="Group ID"/>
      <attribute name="priority" type="unsignedByte" default="127" fb:help="Priority (greater is higher)"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="usb" fb:help="USB 3G/dongle settings">
      <annotation>
         <documentation xml:lang="en">
    USB config settings including 3G data
    </documentation>
      </annotation>
      <sequence>
         <element name="dongle" type="x:dongle" minOccurs="0" maxOccurs="10" fb:help="USB 3G/dongle settings"/>
      </sequence>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Web/console" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Web/Flash/console" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
   </complexType>
   <complexType name="dongle" fb:help="3G/dongle settings">
      <annotation>
         <documentation xml:lang="en">
    3G/dongle config settings
    </documentation>
      </annotation>
      <sequence>
         <element name="route" type="x:ppp-route" minOccurs="0" maxOccurs="unbounded" fb:help="Routes to apply when link is up"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" use="optional" fb:help="Name" fb:key="dongle"/>
      <attribute name="socket" type="string" use="optional" fb:help="What USB socket ID should this config apply to" fb:col="0"/>
      <attribute name="vendor" type="hexBinary" use="optional" fb:help="Vendor ID - used to match a configuration with specific device vendor" fb:col="0"/>
      <attribute name="product" type="hexBinary" use="optional" fb:help="Product ID - used to match a configuration with specific device vendor" fb:col="0"/>
      <attribute name="modeswitch" type="string" use="optional" fb:help="Mode switch mechanism" fb:default="standard switching" fb:col="0"/>
      <attribute name="apn" type="string" use="optional" fb:default="From SIM" fb:help="Mobile access point name"/>
      <attribute name="context" type="x:pdp-context-type" use="optional" fb:default="ip" fb:help="Type of connection to make" fb:col="0"/>
      <attribute name="username" type="string" use="optional" fb:help="User name"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="User password"/>
      <attribute name="mtu" type="x:mtu" use="optional" default="1500" fb:help="MTU for link" fb:col="0"/>
      <attribute name="nat" type="boolean" use="optional" default="true" fb:help="NAT IPv4 traffic to this link unless otherwise set in rules"/>
      <attribute name="speed" type="unsignedInt" use="optional" fb:help="Default egress rate limit (b/s)" fb:col="0"/>
      <attribute name="tcp-mss-fix" type="boolean" use="optional" default="true" fb:help="Adjust MSS option in TCP SYN to fix session MSS" fb:col="0"/>
      <attribute name="routes" type="x:prefixlist" use="optional" fb:default="Default gateway" fb:help="Routes when link up"/>
      <attribute name="localpref" type="unsignedInt" use="optional" default="4294967295" fb:help="Localpref for route (highest wins)" fb:col="0"/>
      <attribute name="dial-string" type="string" use="optional" fb:help="Space separated AT command strings which can include [apn] and [context]" fb:col="0" default="ATV1 ATE0 AT+CFUN=1 AT&amp;D2&amp;C1S0=0S7=60 AT+CGDCONT=1,&quot;[context]&quot;,&quot;[apn]&quot; ATDT*99#"/>
      <attribute name="bgp" type="x:bgpmode" use="optional" fb:default="Auto" fb:help="BGP announce mode for routes"/>
      <attribute name="ospf" type="boolean" use="optional" default="true" fb:help="OSPF announce mode for route"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="From interface" fb:help="Routing table number for payload" fb:col="0"/>
      <attribute name="local" type="fb:IP4Addr" use="optional" fb:help="Local IPv4 address" fb:col="0"/>
      <attribute name="remote" type="fb:IP4Addr" use="optional" fb:help="Remote IPv4 address" fb:col="0"/>
      <attribute name="accept-dns" type="boolean" use="optional" default="true" fb:help="Accept DNS servers specified by far end" fb:col="0"/>
      <attribute name="graph" type="x:graphname" use="optional" fb:help="Graph name"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Log as specified in parent usb config" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as specified in parent usb config" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Log as specified in parent usb config" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="cug" type="x:cug" use="optional" fb:help="Closed user group ID" fb:col="0"/>
      <attribute name="cug-restrict" type="boolean" use="optional" fb:help="Closed user group restricted traffic (only to/from same CUG ID)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="usb9000" fb:help="USB settings">
      <annotation>
         <documentation xml:lang="en">
    USB config settings for FB9000 USB port
    </documentation>
      </annotation>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Web/console" fb:help="Log events and errors" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Web/Flash/console" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="Log debug" fb:ref="log" fb:col="0"/>
   </complexType>
   <simpleType name="pdp-context-type" fb:help="Type of IP connection">
      <restriction base="string">
         <enumeration value="ip" fb:help="IPv4 only"/>
         <enumeration value="ip6" fb:help="IPv6 only"/>
         <enumeration value="ip4ip6" fb:help="IPv4/IPv6 dual stack"/>
         <enumeration value="ppp" fb:help="End to end PPP"/>
      </restriction>
   </simpleType>
   <complexType name="profile" fb:help="Control profile">
      <annotation>
         <documentation xml:lang="en">
    General on/off control profile used in various places in the config.
    </documentation>
      </annotation>
      <sequence>
         <element name="date" type="x:profile-date" minOccurs="0" maxOccurs="unbounded" fb:help="Test passes if within any date range specified"/>
         <element name="time" type="x:profile-time" minOccurs="0" maxOccurs="unbounded" fb:help="Test passes if within any time range specified"/>
         <element name="ping" type="x:profile-ping" minOccurs="0" fb:help="Test passes if address is answering pings"/>
      </sequence>
      <attribute name="name" type="NMTOKEN" fb:help="Profile name" fb:key="profile"/>
      <attribute name="led" type="fb:Colour" use="optional" fb:help="LED colour when active (or not expected state, if expect is set)"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log target" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log additional information" fb:ref="log"/>
      <attribute name="interval" type="fb:duration" use="optional" default="1" fb:help="Time between tests" fb:col="-1"/>
      <attribute name="timeout" type="fb:duration" use="optional" default="10" fb:help="Time before timeout (i.e. how long test has been failing)"/>
      <attribute name="recover" type="fb:duration" use="optional" default="1" fb:help="Time before recover (i.e. how long test has been passing)"/>
      <attribute name="fb105" type="x:nmtokenlist" use="optional" fb:help="FB105 tunnel state (any of these active)" fb:ref="fb105"/>
      <attribute name="ppp" type="x:nmtokenlist" use="optional" fb:help="PPP link state (any of these are up)" fb:ref="pppoe"/>
      <attribute name="l2tp" type="x:nmtokenlist" use="optional" fb:help="Outgoing L2TP link state (any of these are up)" fb:ref="l2tp"/>
      <attribute name="dongle" type="x:nmtokenlist" use="optional" fb:help="3G Dongle state (any of these are ppp up)" fb:ref="dongle"/>
      <attribute name="ports" type="x:ports" use="optional" fb:help="Test passes if any of these physical ports are up" fb:col="-1"/>
      <attribute name="route" type="x:iplist" use="optional" fb:help="Test passes if all specified addresses are routeable"/>
      <attribute name="dhcp" type="x:ipnamelist" use="optional" fb:help="Test passes if any specified addresses are active in DHCP"/>
      <attribute name="vrrp" type="x:nmtokenlist" use="optional" fb:help="VRRP state (any of these is master)" fb:ref="vrrp"/>
      <attribute name="uptime" type="unsignedShort" use="optional" fb:help="Minimum uptime (seconds)" fb:col="-1"/>
      <attribute name="mqtt" type="x:mqtt-brokers" use="optional" default="all" fb:help="Generate MQTT activate/deactivate if topic set"/>
      <attribute name="mqtt-topic" type="string" use="optional" fb:help="Topic for MQTT message on profile change" fb:col="-2"/>
      <attribute name="mqtt-retain" type="boolean" use="optional" fb:help="Set message as retained"/>
      <attribute name="mqtt-on" type="string" use="optional" fb:help="Payload for MQTT message when profile activated" fb:col="2"/>
      <attribute name="mqtt-off" type="string" use="optional" fb:help="Payload for MQTT message when profile de-activated" fb:col="2"/>
      <attribute name="mqtt-control" type="x:mqtt-brokers" use="optional" fb:help="Allow profile control via MQTT via specific brokers" fb:col="-1"/>
      <attribute name="ha-switch" type="boolean" use="optional" fb:help="Announce MQTT control as a home assistant switch"/>
      <attribute name="ha-sensor" type="x:mqtt-brokers" use="optional" fb:help="Announce MQTT state as a home assistant binary sensor via specified brokers"/>
      <attribute name="set" type="x:switch" use="optional" fb:help="Manual override. Test settings ignored; Control switches can use and/or/not/invert" fb:col="-1"/>
      <attribute name="control-switch-group" type="string" use="optional" fb:help="Heading to use when grouping in UI"/>
      <attribute name="control-switch-users" type="x:nmtokenlist" fb:default="Any users" use="optional" fb:help="Restrict users that have access to control switch" fb:ref="user"/>
      <attribute name="control-switch-locks" type="boolean" fb:help="Control switch requires unlock before use." use="optional" default="false"/>
      <attribute name="invert" type="boolean" use="optional" fb:help="Invert final result of testing" fb:col="-1"/>
      <attribute name="initial" type="boolean" default="true" use="optional" fb:help="Defines state at system startup (unless set), or new config, where not known/fixed"/>
      <attribute name="expect" type="boolean" fb:default="none" use="optional" fb:help="Defines state considered 'Good' and shown green on status page" fb:col="1"/>
      <attribute name="or" type="x:nmtokenlist" use="optional" fb:help="Active if any of these other profiles are active regardless of other tests (including 'not' or 'and')" fb:ref="profile"/>
      <attribute name="and" type="x:nmtokenlist" use="optional" fb:help="Active if all specified profiles are active as well as all other tests passing, including 'not'" fb:ref="profile"/>
      <attribute name="not" type="NMTOKEN" use="optional" fb:help="Active if specified profile is inactive as well as all other tests passing, including 'and'" fb:ref="profile"/>
      <attribute name="table" type="x:routetable" use="optional" fb:help="Routing table for ping/route/dhcp" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="profile-date" fb:help="Test passes if within any of the time ranges specified">
      <annotation>
         <documentation xml:lang="en">
    Time range test in profiles
    </documentation>
      </annotation>
      <attribute name="start" use="optional" type="dateTime" fb:help="Start (YYYY-MM-DDTHH:MM:SS)" fb:col="-1"/>
      <attribute name="stop" use="optional" type="dateTime" fb:help="End (YYYY-MM-DDTHH:MM:SS)"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="profile-time" fb:help="Test passes if within any of the date/time ranges specified">
      <annotation>
         <documentation xml:lang="en">
    Time range test in profiles
    </documentation>
      </annotation>
      <attribute name="days" type="x:days" use="optional" fb:help="Which days of week apply, default all" fb:col="-1"/>
      <attribute name="start" type="time" use="optional" fb:help="Start (HH:MM:SS)"/>
      <attribute name="stop" type="time" use="optional" fb:help="End (HH:MM:SS)"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="profile-ping" fb:help="Test passes if any addresses are pingable">
      <annotation>
         <documentation xml:lang="en">
    Ping targets
    </documentation>
      </annotation>
      <attribute name="ip" type="fb:IPAddr" fb:help="Target IP"/>
      <attribute name="ttl" type="unsignedByte" use="optional" fb:help="Time to live / Hop limit"/>
      <attribute name="flow" type="unsignedShort" use="optional" fb:help="Flow label (IPv6)"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="Source IP" fb:col="2"/>
      <attribute name="gateway" type="fb:IPAddr" use="optional" fb:help="Ping via specific gateway (bypasses session tracking if set)" fb:col="2"/>
      <attribute name="accept-any" type="boolean" use="optional" fb:help="Accept any response from target as success"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="rule-set" fb:help="Firewall/mapping rule set">
      <annotation>
         <documentation xml:lang="en">
    Firewalling rule set with entry criteria and default actions
    </documentation>
      </annotation>
      <sequence>
         <element name="rule" type="x:session-rule" minOccurs="0" maxOccurs="unbounded" fb:help="Individual rules, first match applies"/>
         <element name="ip-group" type="x:ip-group" minOccurs="0" maxOccurs="unbounded" fb:help="Named IP groups"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Applicable routing table" fb:col="1"/>
      <attribute name="source-ip" type="x:ipnamerangelist" use="optional" fb:help="Source IP address range(s)" fb:col="-2"/>
      <attribute name="source-port" type="x:portlist" use="optional" fb:help="Source port(s)"/>
      <attribute name="source-interface" type="x:nmtokenlist" use="optional" fb:help="Source interface(s)" fb:ref="-interface"/>
      <attribute name="target-ip" type="x:ipnamerangelist" use="optional" fb:help="Target IP address range(s)" fb:col="-2"/>
      <attribute name="target-port" type="x:portlist" use="optional" fb:help="Target port(s)"/>
      <attribute name="target-interface" type="x:nmtokenlist" use="optional" fb:help="Target interface(s)" fb:ref="-interface"/>
      <attribute name="protocol" type="x:protolist" use="optional" fb:help="Protocol(s) [1=ICMP, 6=TCP, 17=UDP]"/>
      <attribute name="ttl-min" type="unsignedByte" use="optional" default="0" fb:help="Lowest TTL for initial packet of session" fb:col="-2"/>
      <attribute name="ttl-max" type="unsignedByte" use="optional" default="255" fb:help="Highest TTL for initial packet of session" fb:col="-2"/>
      <attribute name="cug" type="x:portlist" use="optional" fb:help="Closed user group ID(s)" fb:col="0"/>
      <attribute name="ip" type="x:ipnamerangelist" use="optional" fb:help="Source or target IP address range(s)" fb:col="-2"/>
      <attribute name="interface" type="x:nmtokenlist" use="optional" fb:help="Source or target interface(s)" fb:ref="-interface"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log session start" fb:ref="log"/>
      <attribute name="log-end" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log session end" fb:ref="log"/>
      <attribute name="log-no-match" type="NMTOKEN" use="optional" fb:default="log-start" fb:help="Log if no match" fb:ref="log"/>
      <attribute name="no-match-action" type="x:firewall-action" fb:help="Default if no rule matches"/>
      <attribute name="startup-delay" type="fb:duration" use="optional" default="1:00" fb:help="Startup interval to use ignore instead of reject/drop" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="session-rule" fb:help="Firewall rules">
      <annotation>
         <documentation xml:lang="en">
    Firewall rule
    </documentation>
         <documentation xml:lang="en">
     The individual firewall rules are checked in order within the rule-set, and the first match applied. The default action for a rule is continue, so once matched the next rule-set is considered.
    </documentation>
      </annotation>
      <sequence>
         <element name="share" type="x:session-share" minOccurs="0" maxOccurs="unbounded" fb:help="Load shared actions"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="source-ip" type="x:ipnamerangelist" use="optional" fb:help="Source IP address range(s)" fb:col="-2"/>
      <attribute name="source-port" type="x:portlist" use="optional" fb:help="Source port(s)"/>
      <attribute name="source-interface" type="x:nmtokenlist" use="optional" fb:help="Source interface(s)" fb:ref="-interface"/>
      <attribute name="target-ip" type="x:ipnamerangelist" use="optional" fb:help="Target IP address range(s)" fb:col="-2"/>
      <attribute name="target-port" type="x:portlist" use="optional" fb:help="Target port(s)"/>
      <attribute name="target-interface" type="x:nmtokenlist" use="optional" fb:help="Target interface(s)" fb:ref="-interface"/>
      <attribute name="protocol" type="x:protolist" use="optional" fb:help="Protocol(s) [1=ICMP, 6=TCP, 17=UDP]"/>
      <attribute name="ttl-min" type="unsignedByte" use="optional" default="0" fb:help="Lowest TTL for initial packet of session" fb:col="-2"/>
      <attribute name="ttl-max" type="unsignedByte" use="optional" default="255" fb:help="Highest TTL for initial packet of session" fb:col="-2"/>
      <attribute name="cug" type="x:portlist" use="optional" fb:help="Closed user group ID(s)" fb:col="0"/>
      <attribute name="ip" type="x:ipnamerangelist" use="optional" fb:help="Source or target IP address range(s)" fb:col="-2"/>
      <attribute name="interface" type="x:nmtokenlist" use="optional" fb:help="Source or target interface(s)" fb:ref="-interface"/>
      <attribute name="source-mac" type="x:macprefixlist" use="optional" fb:help="Source MAC check if from Ethernet"/>
      <attribute name="target-mac" type="x:macprefixlist" use="optional" fb:help="Target MAC check if to Ethernet"/>
      <attribute name="set-source-ip" type="fb:IPRange" use="optional" fb:help="New source IP" fb:col="-2"/>
      <attribute name="set-source-port" type="unsignedShort" use="optional" fb:help="New source port"/>
      <attribute name="set-nat" type="boolean" use="optional" fb:help="Change source IP and port to local for NAT"/>
      <attribute name="set-target-ip" type="fb:IPRange" use="optional" fb:help="New target IP" fb:col="-2"/>
      <attribute name="set-target-port" type="unsignedShort" use="optional" fb:help="New target port"/>
      <attribute name="set-graph" type="string" use="optional" fb:help="Graph name for shaping/logging"/>
      <attribute name="set-gateway" type="fb:IPAddr" use="optional" fb:help="New gateway" fb:col="0"/>
      <attribute name="set-table" type="x:routetable" use="optional" fb:help="Set new routing table" fb:col="0"/>
      <attribute name="set-reverse-graph" type="string" use="optional" fb:help="Graph name for shaping/logging (far side of session)" fb:col="0"/>
      <attribute name="obfuscate" type="x:hex64" use="optional" fb:help="Scramble (not encrypt) data" fb:col="0"/>
      <attribute name="obf-checksum" type="x:chksum-action" use="optional" fb:help="Obfuscation's handling of packet checksums" fb:col="0"/>
      <attribute name="set-initial-timeout" type="fb:duration" use="optional" fb:help="Initial time-out" fb:col="0"/>
      <attribute name="set-ongoing-timeout" type="fb:duration" use="optional" fb:help="Ongoing time-out" fb:col="0"/>
      <attribute name="set-graph-dynamic" type="x:dynamic-graph" use="optional" fb:help="Dynamically create graph"/>
      <attribute name="hash" type="boolean" use="optional" fb:help="Use hash of IPs for load sharing" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="As rule-set" fb:help="Log session start" fb:ref="log"/>
      <attribute name="log-end" type="NMTOKEN" use="optional" fb:default="As rule-set" fb:help="Log session end" fb:ref="log"/>
      <attribute name="action" type="x:firewall-action" use="optional" default="continue" fb:help="Action taken on match" fb:default="Finish this rule-set and continue to next"/>
      <attribute name="pcp" type="boolean" use="optional" fb:help="If mapped by NAT-PMP / PCP" fb:col="0"/>
      <attribute name="evil-bit" type="boolean" use="optional" fb:help="RFC3514" fb:col="0"/>
      <attribute name="set-evil-bit" type="boolean" use="optional" fb:help="RFC3514" fb:col="0"/>
      <attribute name="set-dscp" type="unsignedByte" use="optional" fb:help="Override IP DSCP" fb:defult="None" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="session-share" fb:help="Firewall load sharing">
      <annotation>
         <documentation xml:lang="en">
    Firewall actions for load sharing
    </documentation>
      </annotation>
      <attribute name="weight" type="positiveInteger" use="optional" default="1" fb:help="Weighting of load share"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="set-source-ip" type="fb:IPRange" use="optional" fb:help="New source IP" fb:col="-2"/>
      <attribute name="set-source-port" type="unsignedShort" use="optional" fb:help="New source port"/>
      <attribute name="set-nat" type="boolean" use="optional" fb:help="Change source IP and port to local for NAT"/>
      <attribute name="set-target-ip" type="fb:IPRange" use="optional" fb:help="New target IP" fb:col="-2"/>
      <attribute name="set-target-port" type="unsignedShort" use="optional" fb:help="New target port"/>
      <attribute name="set-graph" type="string" use="optional" fb:help="Graph name for shaping/logging"/>
      <attribute name="set-gateway" type="fb:IPAddr" use="optional" fb:help="New gateway" fb:col="0"/>
      <attribute name="set-table" type="x:routetable" use="optional" fb:help="Set new routing table" fb:col="0"/>
      <attribute name="set-reverse-graph" type="string" use="optional" fb:help="Graph name for shaping/logging (far side of session)" fb:col="0"/>
      <attribute name="obfuscate" type="x:hex64" use="optional" fb:help="Scramble (not encrypt) data" fb:col="0"/>
      <attribute name="obf-checksum" type="x:chksum-action" use="optional" fb:help="Obfuscation's handling of packet checksums" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
   </complexType>
   <simpleType name="firewall-action" fb:help="Firewall action">
      <restriction base="string">
         <enumeration value="continue" fb:help="Continue rule-set checking"/>
         <enumeration value="accept" fb:help="Allow but no more rule-set checking"/>
         <enumeration value="reject" fb:help="End all rule checking now and set to send ICMP reject"/>
         <enumeration value="drop" fb:help="End all rule checking now and set to drop"/>
         <enumeration value="ignore" fb:help="End all rule checking and ignore (drop) just this packet, not making a session"/>
      </restriction>
   </simpleType>
   <simpleType name="chksum-action" fb:help="Handling of TCP/UDP packet checksum">
      <restriction base="string">
         <enumeration value="leave" fb:help="Don't correct checksum"/>
         <enumeration value="udp-remove" fb:help="Remove checksum for UDP packets"/>
         <enumeration value="recalc" fb:help="Recalculate new checksum"/>
         <enumeration value="check-recalc" fb:help="Check old value and recalculate new"/>
      </restriction>
   </simpleType>
   <complexType name="route-override" fb:help="Routing override rules">
      <annotation>
         <documentation xml:lang="en">
    Routing override rules
    </documentation>
      </annotation>
      <sequence>
         <element name="rule" type="x:session-route-rule" minOccurs="0" maxOccurs="unbounded" fb:help="Individual rules, first match applies"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Applicable routing table" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="session-route-rule" fb:help="Routing override rule">
      <annotation>
         <documentation xml:lang="en">
    Routing override rule
    </documentation>
      </annotation>
      <sequence>
         <element name="share" type="x:session-route-share" minOccurs="0" maxOccurs="unbounded" fb:help="Load shared actions"/>
      </sequence>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="source-ip" type="x:ipnamerangelist" use="optional" fb:help="Source IP address range(s)" fb:col="-2"/>
      <attribute name="source-port" type="x:portlist" use="optional" fb:help="Source port(s)"/>
      <attribute name="source-interface" type="x:nmtokenlist" use="optional" fb:help="Source interface(s)" fb:ref="-interface"/>
      <attribute name="target-ip" type="x:ipnamerangelist" use="optional" fb:help="Target IP address range(s)" fb:col="-2"/>
      <attribute name="target-port" type="x:portlist" use="optional" fb:help="Target port(s)"/>
      <attribute name="target-interface" type="x:nmtokenlist" use="optional" fb:help="Target interface(s)" fb:ref="-interface"/>
      <attribute name="protocol" type="x:protolist" use="optional" fb:help="Protocol(s) [1=ICMP, 6=TCP, 17=UDP]"/>
      <attribute name="ttl-min" type="unsignedByte" use="optional" default="0" fb:help="Lowest TTL for initial packet of session" fb:col="-2"/>
      <attribute name="ttl-max" type="unsignedByte" use="optional" default="255" fb:help="Highest TTL for initial packet of session" fb:col="-2"/>
      <attribute name="cug" type="x:portlist" use="optional" fb:help="Closed user group ID(s)" fb:col="0"/>
      <attribute name="set-gateway" type="fb:IPAddr" use="optional" fb:help="New gateway" fb:col="2"/>
      <attribute name="set-nat" type="boolean" use="optional" fb:help="Changed source IP and port to local for NAT"/>
      <attribute name="set-graph" type="string" use="optional" fb:help="Graph name for shaping/logging (if not set by rule-set)" fb:col="0"/>
      <attribute name="hash" type="boolean" use="optional" fb:help="Use hash of IPs for load sharing" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="session-route-share" fb:help="Route override load sharing">
      <annotation>
         <documentation xml:lang="en">
    Route override setting for load sharing
    </documentation>
      </annotation>
      <attribute name="weight" type="positiveInteger" use="optional" default="1" fb:help="Weighting of load share"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="set-gateway" type="fb:IPAddr" use="optional" fb:help="New gateway" fb:col="2"/>
      <attribute name="set-nat" type="boolean" use="optional" fb:help="Changed source IP and port to local for NAT"/>
      <attribute name="set-graph" type="string" use="optional" fb:help="Graph name for shaping/logging (if not set by rule-set)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
   </complexType>
   <complexType name="shaper" fb:help="Traffic shaper">
      <annotation>
         <documentation xml:lang="en">
 Settings for a named traffic shaper
 </documentation>
      </annotation>
      <sequence>
         <element name="override" type="x:shaper-override" minOccurs="0" maxOccurs="unbounded" fb:help="Profile specific variations on main settings"/>
      </sequence>
      <attribute name="name" type="x:graphname" fb:help="Graph name"/>
      <attribute name="share" type="boolean" use="optional" default="false" fb:help="If shaper is shared with other devices" fb:col="0"/>
      <attribute name="tx" type="unsignedLong" use="optional" fb:help="Tx rate limit/target (b/s)" fb:col="1"/>
      <attribute name="rx" type="unsignedLong" use="optional" fb:help="Rx rate limit/target (b/s)" fb:col="1"/>
      <attribute name="tx-min" type="unsignedLong" use="optional" fb:help="Tx rate limit min" fb:col="0"/>
      <attribute name="rx-min" type="unsignedLong" use="optional" fb:help="Rx rate limit min" fb:col="0"/>
      <attribute name="tx-max" type="unsignedLong" use="optional" fb:help="Tx rate limit max" fb:col="0"/>
      <attribute name="rx-max" type="unsignedLong" use="optional" fb:help="Rx rate limit max" fb:col="0"/>
      <attribute name="tx-step" type="unsignedLong" use="optional" fb:help="Tx rate reduction per hour" fb:col="0"/>
      <attribute name="rx-step" type="unsignedLong" use="optional" fb:help="Rx rate reduction per hour" fb:col="0"/>
      <attribute name="tx-min-burst" type="fb:duration" use="optional" fb:help="Tx minimum allowed burst time" fb:col="0"/>
      <attribute name="rx-min-burst" type="fb:duration" use="optional" fb:help="Rx minimum allowed burst time" fb:col="0"/>
      <attribute name="tx-limit" type="x:shaper-limit" use="optional" fb:help="Tx low level burst limit (ms) - ½ for large packets" fb:col="0" fb:default="400ms"/>
      <attribute name="rx-limit" type="x:shaper-limit" use="optional" fb:help="Rx low level burst limit (ms) - ½ for large packets" fb:col="0" fb:default="400ms"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="shaper-override" fb:help="Traffic shaper override based on profile">
      <annotation>
         <documentation xml:lang="en">
 Settings for a named traffic shaper
 </documentation>
      </annotation>
      <attribute name="profile" type="NMTOKEN" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="tx" type="unsignedLong" use="optional" fb:help="Tx rate limit/target (b/s)" fb:col="1"/>
      <attribute name="rx" type="unsignedLong" use="optional" fb:help="Rx rate limit/target (b/s)" fb:col="1"/>
      <attribute name="tx-min" type="unsignedLong" use="optional" fb:help="Tx rate limit min" fb:col="0"/>
      <attribute name="rx-min" type="unsignedLong" use="optional" fb:help="Rx rate limit min" fb:col="0"/>
      <attribute name="tx-max" type="unsignedLong" use="optional" fb:help="Tx rate limit max" fb:col="0"/>
      <attribute name="rx-max" type="unsignedLong" use="optional" fb:help="Rx rate limit max" fb:col="0"/>
      <attribute name="tx-step" type="unsignedLong" use="optional" fb:help="Tx rate reduction per hour" fb:col="0"/>
      <attribute name="rx-step" type="unsignedLong" use="optional" fb:help="Rx rate reduction per hour" fb:col="0"/>
      <attribute name="tx-min-burst" type="fb:duration" use="optional" fb:help="Tx minimum allowed burst time" fb:col="0"/>
      <attribute name="rx-min-burst" type="fb:duration" use="optional" fb:help="Rx minimum allowed burst time" fb:col="0"/>
      <attribute name="tx-limit" type="x:shaper-limit" use="optional" fb:help="Tx low level burst limit (ms) - ½ for large packets" fb:col="0" fb:default="400ms"/>
      <attribute name="rx-limit" type="x:shaper-limit" use="optional" fb:help="Rx low level burst limit (ms) - ½ for large packets" fb:col="0" fb:default="400ms"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="voip" fb:help="Voice over IP config">
      <annotation>
         <documentation xml:lang="en">
  Voice over IP config
  </documentation>
      </annotation>
      <sequence>
         <element name="carrier" type="x:carrier" minOccurs="0" maxOccurs="300" fb:help="VoIP carriers"/>
         <element name="telephone" type="x:telephone" minOccurs="0" maxOccurs="300" fb:help="VoIP users"/>
         <element name="tone" type="x:tone" minOccurs="0" maxOccurs="25" fb:help="Defined tones"/>
         <element name="group" type="x:ringgroup" minOccurs="0" maxOccurs="100" fb:help="Ring groups"/>
         <element name="directory" type="x:directory" minOccurs="0" maxOccurs="300" fb:help="Directory"/>
      </sequence>
      <attribute name="realm" type="string" use="optional" default="FireBrick" fb:help="Default realm"/>
      <attribute name="user-agent" type="string" use="optional" fb:default="Version specific" fb:help="User-Agent to send" fb:col="0"/>
      <attribute name="country" type="string" use="optional" default="44" fb:help="Local country code"/>
      <attribute name="international" type="string" use="optional" default="00" fb:help="International dialling prefix"/>
      <attribute name="national" type="string" use="optional" default="0" fb:help="National dialling prefix"/>
      <attribute name="area-code" type="string" use="optional" fb:help="Local area code (without national prefix)"/>
      <attribute name="withhold" type="string" use="optional" default="141" fb:help="CLI withhold prefix"/>
      <attribute name="release" type="string" use="optional" default="1470" fb:help="CLI release prefix"/>
      <attribute name="pickup" type="string" use="optional" default="*" fb:help="Call pickup/steal prefix"/>
      <attribute name="emergency" type="x:stringlist" use="optional" default="112 999" fb:help="Emergency numbers"/>
      <attribute name="emergency-uri" type="string" use="optional" fb:default="Use outbound carrier" fb:help="SIP URI for emergency calls"/>
      <attribute name="default-carrier" type="NMTOKEN" use="optional" fb:help="Default carrier to use for external calls" fb:ref="carrier"/>
      <attribute name="backup-carrier" type="NMTOKEN" use="optional" fb:help="Backup carrier to use for external calls" fb:ref="carrier"/>
      <attribute name="record-server" type="string" use="optional" fb:help="Call recording server hostname or address"/>
      <attribute name="record-table" type="x:routetable" use="optional" default="0" fb:help="Routing table for call recording" fb:col="0"/>
      <attribute name="record-mandatory" type="boolean" use="optional" fb:help="Drop call if recording fails" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log calls" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug and SIP messages" fb:ref="log"/>
      <attribute name="log-cdr" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="Log CDR records" fb:ref="log"/>
      <attribute name="log-sip-call" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="INVITE, ACK, CANCEL, BYE, REFER" fb:ref="log"/>
      <attribute name="log-sip-register" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="REGISTER" fb:ref="log"/>
      <attribute name="log-sip-blf" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="SUBSCRIBE, NOTIFY, PUBLISH" fb:ref="log"/>
      <attribute name="log-sip-other" type="NMTOKEN" use="optional" fb:default="Not logged" fb:help="OPTIONS, INFO, etc" fb:ref="log"/>
      <attribute name="local-digits" type="string" use="optional" default="23456789" fb:help="Local numbers start with these digits" fb:col="0"/>
      <attribute name="local-min-len" type="unsignedByte" use="optional" default="5" fb:help="Local numbers min length" fb:col="0"/>
      <attribute name="radius-register" type="string" use="optional" fb:help="Name for RADIUS server config to use for registrations" fb:col="0"/>
      <attribute name="radius-call" type="string" use="optional" fb:help="Name for RADIUS server config to use call routing" fb:col="0"/>
      <attribute name="radius-cdr" type="string" use="optional" fb:help="Name for RADIUS server config to use for CDRs" fb:col="0"/>
      <attribute name="radius-challenge" type="boolean" use="optional" fb:help="Send RADIUS auth to get challenge response" fb:col="0"/>
      <attribute name="radius-timeout" type="unsignedShort" use="optional" default="1000" fb:help="Maximum time to make attempts for RADIUS requests (ms)" fb:col="0"/>
      <attribute name="security-replies" type="boolean" use="optional" default="true" fb:help="Don't challenge or error reply to unrecognised non local IP request" fb:col="0"/>
      <attribute name="long-headers" type="boolean" use="optional" default="false" fb:help="Send long SIP headers" fb:col="0"/>
      <attribute name="wrap-headers" type="boolean" use="optional" default="true" fb:help="Wrap long SIP header lines" fb:col="0"/>
      <attribute name="call-progress" type="boolean" use="optional" default="true" fb:help="Send call progress at 3 seconds" fb:col="0"/>
      <attribute name="domain" type="string" use="optional" fb:help="Domain to use for us on outgoing SIP connections"/>
      <attribute name="auth-source-ip" type="fb:IP46Addr" use="optional" fb:help="Default source address to use when sending authenticated messages" fb:col="0"/>
      <attribute name="send-pre-auth" type="boolean" use="optional" default="true" fb:help="Send Auth header with username before receiving challenge" fb:col="0"/>
      <attribute name="pre-auth-bodge" type="boolean" use="optional" default="true" fb:help="Strip ! from start of username to indicate no pre-auth" fb:col="0"/>
      <attribute name="source-ip" type="fb:IP46Addr" use="optional" fb:help="Default source address to use when sending messages" fb:col="0"/>
      <attribute name="record-beep" type="x:record-beep-option" use="optional" default="true" fb:help="Send beep at start of recording" fb:col="0"/>
      <attribute name="max-ring" type="fb:duration" use="optional" default="5:00" fb:help="Max time limit on call setup" fb:col="0"/>
      <attribute name="pabx" type="boolean" use="optional" default="true" fb:help="Operate as office PABX" fb:col="0"/>
      <attribute name="mqtt" type="x:mqtt-brokers" use="optional" fb:default="Don't send" fb:help="Generate MQTT for call events" fb:col="0"/>
      <attribute name="mqtt-blf" type="x:mqtt-brokers" use="optional" fb:default="Don't send" fb:help="Generate MQTT for BLF" fb:col="0"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="telephone" fb:help="VoIP telephone authentication user details">
      <annotation>
         <documentation xml:lang="en">
  VoIP telephone details
  </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="User name (local part of 'from')" fb:key="voipuser"/>
      <attribute name="display-name" type="string" use="optional" fb:help="Text name to use"/>
      <attribute name="username" type="string" use="optional" fb:help="Authentication username"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Authentication password"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to registrations from subnets tagged as local" fb:col="1"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which registration accepted" fb:col="2"/>
      <attribute name="area-code" type="string" use="optional" fb:help="Local area code (without national prefix) for use from this phone" fb:col="0"/>
      <attribute name="ddi" type="string" use="optional" fb:help="Full telephone number (international format starting +)"/>
      <attribute name="cui" type="string" use="optional" fb:help="Chargeable user identity for call accounting" fb:col="0"/>
      <attribute name="extn" type="string" use="optional" fb:help="Local extension number"/>
      <attribute name="uk-cli-text" type="x:uknumberformat" use="optional" fb:default="Auto" fb:help="Send display name as UK formatted number" fb:col="0"/>
      <attribute name="expires" type="fb:duration" use="optional" default="1:00:00" fb:help="Registration expiry time" fb:col="0"/>
      <attribute name="carrier" type="NMTOKEN" use="optional" fb:help="Carrier to use for outbound calls" fb:ref="carrier"/>
      <attribute name="realm" type="string" use="optional" fb:help="Realm" fb:col="0"/>
      <attribute name="max-calls" type="unsignedInt" use="optional" fb:help="Maximum simultaneous calls allowed"/>
      <attribute name="wrap-up" type="fb:duration" use="optional" fb:help="Wrap up time before new call"/>
      <attribute name="allow-pickup" type="x:stringlist" use="optional" fb:help="Only allow pickup from these extensions" fb:default="Allow all if PABX mode"/>
      <attribute name="allow-subscribe" type="x:stringlist" use="optional" fb:help="Only allow subscribe (Busy Lamp Field) from these extensions"/>
      <attribute name="record" type="x:recordoption" use="optional" fb:help="Automatically record calls"/>
      <attribute name="email" type="string" use="optional" fb:help="Email address (sent to call recording server)"/>
      <attribute name="anon-numeric" type="boolean" use="optional" fb:help="Mark anonymous calls just using withhold prefix, and leave display name" fb:col="0"/>
      <attribute name="outgoing-cli" type="x:voip-format" use="optional" fb:default="auto" fb:help="CLI number format passed to telephone" fb:col="0" fb:old="cli-format"/>
      <attribute name="uri" type="string" use="optional" fb:help="Direct URI for extn" fb:col="0"/>
      <attribute name="force-dtmf" type="boolean" use="optional" fb:help="Always send DTMF in-band" fb:col="0"/>
      <attribute name="send-p-a-id" type="boolean" use="optional" default="true" fb:help="Send P-Asserted-Identity" fb:col="0"/>
      <attribute name="screen" type="x:voip-screen" use="optional" default="non-rejected" fb:help="Screen calls" fb:col="1" fb:old="acr"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="carrier" fb:help="VoIP carrier details">
      <annotation>
         <documentation xml:lang="en">
  VoIP carrier details
  </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Carrier name" fb:key="carrier"/>
      <attribute name="display-name" type="string" use="optional" fb:help="Text name to use"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="List of IP ranges from which invite accepted" fb:col="2"/>
      <attribute name="registrar" type="string" use="optional" fb:help="Carrier hostname for registration" fb:col="2"/>
      <attribute name="proxy" type="string" use="optional" fb:help="Carrier proxy hostname or address for registration and calls" fb:col="2"/>
      <attribute name="from" type="string" use="optional" fb:help="From SIP address for outbound registration and invites" fb:col="2"/>
      <attribute name="to" type="x:stringlist" use="optional" fb:help="To SIP request address for inbound invites, may be @domain for any at a domain" fb:col="2"/>
      <attribute name="trust-cli" type="boolean" use="optional" default="true" fb:help="Trust inbound calling line identity"/>
      <attribute name="send-p-a-id" type="boolean" use="optional" default="true" fb:help="Send P-Asserted-Identity" fb:col="0"/>
      <attribute name="send-privacy" type="x:privacy-type" use="optional" default="id" fb:help="Send Privacy (if withheld)" fb:col="0"/>
      <attribute name="send-hold" type="boolean" use="optional" default="true" fb:help="Pass hold state to carrier" fb:col="0"/>
      <attribute name="hold-tone" type="boolean" use="optional" default="true" fb:help="Send hold tones to carrier" fb:col="0"/>
      <attribute name="force-dtmf" type="boolean" use="optional" fb:help="Always send DTMF in-band" fb:col="0"/>
      <attribute name="send-pre-auth" type="boolean" use="optional" fb:default="As general config" fb:help="Send Auth header with username before receiving challenge" fb:col="0"/>
      <attribute name="tone-queue" type="string" use="optional" fb:help="Name of tone to generate for queue with no media" fb:col="0"/>
      <attribute name="tone-wait" type="string" use="optional" fb:help="Name of tone to generate for wait with no media" fb:col="0"/>
      <attribute name="tone-progress" type="string" use="optional" fb:help="Name of tone to generate for progress with no media" fb:col="0"/>
      <attribute name="tone-hold" type="string" use="optional" fb:help="Name of tone to generate for hold with no media" fb:col="0"/>
      <attribute name="tone-ring" type="string" use="optional" fb:help="Name of tone to generate for ring with no media" fb:col="0"/>
      <attribute name="map-404" type="x:sip-error" use="optional" fb:help="Map SIP error 404 to an alternative" fb:col="0"/>
      <attribute name="withhold" type="string" use="optional" fb:help="Mark withheld outbound calls using this dial prefix and send CLI in p-asserted-identity or remote-party-id"/>
      <attribute name="username" type="string" use="optional" fb:help="Carrier username for outbound registration or inbound authenticated calls"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Carrier password for outbound registration or inbound authenticated calls"/>
      <attribute name="expires" type="fb:duration" use="optional" default="1:00:00" fb:help="Registration expiry time"/>
      <attribute name="pre-expire" type="fb:duration" use="optional" default="30" fb:help="Re-register time before expiry" fb:col="0"/>
      <attribute name="extn" type="string" use="optional" fb:help="Local number assumed for incoming call, use X for digits from end of called numbers"/>
      <attribute name="outgoing-format" type="x:voip-format" use="optional" default="national" fb:help="Dialled number format for outgoing calls"/>
      <attribute name="outgoing-cli" type="x:voip-format" use="optional" default="national" fb:help="CLI number format for outgoing calls" fb:old="cli-format"/>
      <attribute name="incoming-format" type="x:voip-format" use="optional" default="national" fb:help="Dialled number format on incoming calls"/>
      <attribute name="incoming-cli" type="x:voip-format" use="optional" default="transparent" fb:help="CLI number format on incoming calls" fb:old="cli-format"/>
      <attribute name="max-calls" type="unsignedInt" use="optional" fb:help="Maximum simultaneous calls allowed"/>
      <attribute name="proxy-ip" type="fb:IPAddr" use="optional" fb:help="Target proxy IP to use" fb:col="0"/>
      <attribute name="proxy-port" type="unsignedShort" use="optional" fb:help="Target proxy port to use" fb:col="0"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="Source IP to use" fb:col="0"/>
      <attribute name="cui" type="string" use="optional" fb:help="Chargeable user identity for call accounting of incoming calls" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="tone" fb:help="Tone definitions">
      <annotation>
         <documentation xml:lang="en">
  Definition of tones used
  </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Tone name" fb:key="tone"/>
      <attribute name="plan" type="string" fb:help="Plan for frequency and duration, e.g. 400ms@400Hz-3dB+450Hz-3dB"/>
   </complexType>
   <complexType name="ringgroup" fb:help="Ring groups">
      <annotation>
         <documentation xml:lang="en">
  Ring groups
  </documentation>
      </annotation>
      <attribute name="name" type="NMTOKEN" fb:help="Group name" fb:key="ringgroup"/>
      <attribute name="display-name" type="string" use="optional" fb:help="Text name to use"/>
      <attribute name="extn" type="x:stringlist" use="optional" fb:help="Local extension number"/>
      <attribute name="ddi" type="x:stringlist" use="optional" fb:help="Full telephone number (international format starting +)"/>
      <attribute name="cui" type="string" use="optional" fb:help="Chargeable user identity for call accounting" fb:col="0"/>
      <attribute name="ring" type="x:stringlist" use="optional" fb:help="Numbers to ring"/>
      <attribute name="order" type="x:ring-group-order" default="strict" use="optional" fb:help="Order of ring"/>
      <attribute name="type" type="x:ring-group-type" default="all" use="optional" fb:help="Type of ring when one call in queue"/>
      <attribute name="limit" type="unsignedByte" use="optional" fb:help="Number allowed to queue"/>
      <attribute name="overflow" type="x:stringlist" use="optional" fb:help="Numbers to ring when more than one call in queue"/>
      <attribute name="redirect" type="boolean" use="optional" fb:help="Allow calls to be diverted before ringing"/>
      <attribute name="carrier" type="NMTOKEN" use="optional" fb:help="Carrier to use for external calls" fb:ref="carrier"/>
      <attribute name="initial-time" type="fb:duration" use="optional" fb:help="Don't progress to second number until this time" fb:col="0"/>
      <attribute name="progress-time" type="fb:duration" use="optional" default="6" fb:help="Time between each target called" fb:col="0"/>
      <attribute name="overflow-time" type="fb:duration" use="optional" default="30" fb:help="Include overflow after this time at head of queue" fb:col="0"/>
      <attribute name="ringall-time" type="fb:duration" use="optional" fb:help="Switch to ring all after this time at head of queue" fb:col="0"/>
      <attribute name="answer-time" type="fb:duration" use="optional" default="30" fb:help="Answer caller if ringing this long" fb:col="0"/>
      <attribute name="allow-pickup" type="x:stringlist" use="optional" fb:help="Only allow pickup from these extensions"/>
      <attribute name="allow-subscribe" type="x:stringlist" use="optional" fb:help="Only allow subscribe (Busy Lamp Field) from these extensions"/>
      <attribute name="out-of-hours-group" type="NMTOKEN" use="optional" fb:help="Alternative group if this is out of profile (cascades)" fb:ref="ringgroup"/>
      <attribute name="out-of-hours-ring" type="x:stringlist" use="optional" fb:help="Numbers to ring if out of profile and no out-of-hours-group set" fb:old="out-of-hours" fb:col="0"/>
      <attribute name="email" type="string" use="optional" fb:help="Email address (sent to call recording server)"/>
      <attribute name="screen" type="x:voip-screen" use="optional" default="non-rejected" fb:help="Screen calls" fb:col="1"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="directory" fb:help="Directory entry">
      <annotation>
         <documentation xml:lang="en">
  Directory
  </documentation>
      </annotation>
      <attribute name="number" type="string" fb:help="Calling number"/>
      <attribute name="name" type="string" use="optional" fb:help="Display name"/>
      <attribute name="screen" type="x:voip-screen-set" use="optional" fb:help="Screen/categorise this call"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="voip-screen-set" fb:help="Directory screen setting">
      <restriction base="string">
         <enumeration value="reject" fb:help="Reject call"/>
         <enumeration value="accept" fb:help="Accept call"/>
      </restriction>
   </simpleType>
   <simpleType name="voip-screen" fb:help="Call screen setting">
      <restriction base="string">
         <enumeration value=" false" fb:help="Non ACR"/>
         <enumeration value="no-calls" fb:help="Reject all calls"/>
         <enumeration value="accepted" fb:help="Only directory screen accept calls"/>
         <enumeration value="found" fb:help="Only directory screen found calls"/>
         <enumeration value="non-rejected" fb:help="All non rejected calls"/>
         <enumeration value="acr" fb:help="All non withhled calls"/>
         <enumeration value=" true" fb:help="ACR"/>
      </restriction>
   </simpleType>
   <simpleType name="voip-format" fb:help="Number presentation format">
      <restriction base="string">
         <enumeration value="transparent" fb:help="Unchanged"/>
         <enumeration value="international" fb:help="Full international number"/>
         <enumeration value="int-no-plus" fb:help="International without leading plus"/>
         <enumeration value="national" fb:help="With nat/int prefix"/>
         <enumeration value="local" fb:help="Local number/extension"/>
         <enumeration value="block" fb:help="Do not use for calls"/>
      </restriction>
   </simpleType>
   <simpleType name="ring-group-order" fb:help="Order of ring">
      <restriction base="string">
         <enumeration value="strict" fb:help="Order in config"/>
         <enumeration value="random" fb:help="Random order"/>
         <enumeration value="cyclic" fb:help="Cycling from last call"/>
         <enumeration value="oldest" fb:help="Oldest used phone first"/>
      </restriction>
   </simpleType>
   <simpleType name="ring-group-type" fb:help="Type of ring when one call in queue">
      <restriction base="string">
         <enumeration value="all" fb:help="All phones"/>
         <enumeration value="cascade" fb:help="Increasing number of phones"/>
         <enumeration value="sequence" fb:help="One phone at a time"/>
      </restriction>
   </simpleType>
   <complexType name="mqtt-service" fb:help="MQTT">
      <annotation>
         <documentation xml:lang="en">
  MQTT Services configuration
  </documentation>
      </annotation>
      <sequence>
         <element name="mqtts" minOccurs="0" type="x:mqtts-config" fb:help="Secure MQTTS config"/>
         <element name="mqtt" minOccurs="0" type="x:mqtt-config" fb:help="Insecure MQTT config"/>
         <element name="external" minOccurs="0" type="x:mqtt-external" fb:help="External MQTT/MQTTS config"/>
         <element name="map" minOccurs="0" maxOccurs="100" type="x:mqtt-map" fb:help="MQTT message mapping"/>
      </sequence>
      <attribute name="session-timeout" type="fb:duration" use="optional" default="1:00:00" fb:help="Session state clearing when off line"/>
      <attribute name="retain-timeout" type="fb:duration" use="optional" default="1:00:00:00" fb:help="Retained message clearing when off line"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:help="Log events" fb:default="Not logging" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:help="Log errors" fb:default="Log as event" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log" fb:col="0"/>
      <attribute name="accept-v5" type="boolean" use="optional" fb:help="Accept v5 connections (experimental)"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="mqtt-config" fb:help="Insecure MQTT service">
      <annotation>
         <documentation xml:lang="en">
  Insecure MQTT Service configuration (use with care as no encryption)
  </documentation>
      </annotation>
      <attribute name="port" type="unsignedShort" use="optional" default="1883" fb:help="Service port"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="IPs allowed" fb:col="2"/>
      <attribute name="username" type="string" use="optional" fb:help="Username" fb:col="2"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Password" fb:col="2"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="Any" fb:help="Routing table" fb:col="0"/>
      <attribute name="relay-mqtts" type="boolean" use="optional" fb:help="Relay received messages to MQTTS"/>
      <attribute name="relay-external" type="boolean" use="optional" fb:help="Relay received messages to external broker"/>
   </complexType>
   <complexType name="mqtts-config" fb:help="Secure MQTTS service">
      <annotation>
         <documentation xml:lang="en">
  Secure MQTTS Service configuration
  </documentation>
      </annotation>
      <attribute name="port" type="unsignedShort" use="optional" default="8883" fb:help="Service port"/>
      <attribute name="local-only" type="boolean" use="optional" default="true" fb:help="Restrict access to locally connected Ethernet subnets only"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Allow from anywhere" fb:help="IPs allowed" fb:col="2"/>
      <attribute name="username" type="string" use="optional" fb:help="Username" fb:col="2"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Password" fb:col="2"/>
      <attribute name="self-sign" type="boolean" use="optional" default="true" fb:help="Create self signed certificate for MQTTS when necessary" fb:col="0"/>
      <attribute name="certlist" type="x:nmtokenlist" use="optional" fb:default="use any suitable" fb:help="Certificate(s) to be used for MQTTS sessions" fb:col="0"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="Any" fb:help="Routing table" fb:col="0"/>
      <attribute name="relay-mqtt" type="boolean" use="optional" fb:help="Relay received messages to MQTT"/>
      <attribute name="relay-external" type="boolean" use="optional" fb:help="Relay received messages to external broker"/>
      <attribute name="allow-weak-cipher" type="boolean" use="optional" default="true" fb:help="Accept weaker ciphers as commonly used on IoT devices" fb:col="0"/>
   </complexType>
   <complexType name="mqtt-external" fb:help="External MQTT/MQTTS connection">
      <annotation>
         <documentation xml:lang="en">
  External MQTT/MQTTS Connection configuration
  </documentation>
      </annotation>
      <attribute name="server" type="string" use="required" fb:help="Server name/ip" fb:col="2"/>
      <attribute name="port" type="unsignedShort" use="optional" fb:default="1883/8883" fb:help="Service port"/>
      <attribute name="mqtts" type="boolean" use="optional" default="true" fb:help="Use MQTTS (MQTT over TLS)"/>
      <attribute name="username" type="string" use="optional" fb:help="Username" fb:col="2"/>
      <attribute name="password" type="fb:Secret" use="optional" fb:help="Password" fb:col="2"/>
      <attribute name="will-topic" type="string" use="optional" fb:default="FireBrick/serial" fb:help="Will/connect topic" fb:col="-2"/>
      <attribute name="relay-mqtts" type="boolean" use="optional" fb:help="Relay received messages to MQTTS"/>
      <attribute name="relay-mqtt" type="boolean" use="optional" fb:help="Relay received messages to MQTT"/>
      <attribute name="connect-payload" type="string" use="optional" fb:help="Connect payload" fb:col="-2"/>
      <attribute name="subscribe" type="x:stringlist" use="optional" fb:help="Subscriptions" fb:default="Auto" fb:col="2"/>
      <attribute name="will-payload" type="string" use="optional" fb:help="Will payload" fb:col="-2"/>
      <attribute name="will-retain" type="boolean" use="optional" fb:help="Will/connect retain"/>
      <attribute name="limit-send" type="boolean" use="optional" fb:help="Don't send what we subscribed"/>
      <attribute name="clientid" type="string" use="optional" fb:help="MQTT client ID" fb:col="0"/>
      <attribute name="table" type="x:routetable" use="optional" fb:default="Any" fb:help="Routing table" fb:col="0"/>
      <attribute name="keep-alive" type="fb:duration" use="optional" default="1:00" fb:help="Keep alive time" fb:col="0"/>
   </complexType>
   <complexType name="mqtt-map" fb:help="MQTT message mapping">
      <annotation>
         <documentation xml:lang="en">
  Map MQTT topic/payload
  </documentation>
      </annotation>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="from" type="x:mqtt-brokers" use="optional" fb:help="Where message is from"/>
      <attribute name="topic" type="string" fb:help="Topic to match (can use mqtt wildcard)" fb:col="-2" fb:old="from-topic"/>
      <attribute name="payload" type="string" use="optional" fb:help="Payload pattern to match" fb:col="2" fb:old="from-payload"/>
      <attribute name="set-topic" type="string" use="optional" fb:help="New topic" fb:col="-2" fb:old="to-topic"/>
      <attribute name="set-payload" type="string" use="optional" fb:help="New payload" fb:col="2" fb:old="to-payload"/>
   </complexType>
   <complexType name="radius-service" fb:help="RADIUS service definition">
      <annotation>
         <documentation xml:lang="en">
   RADIUS server and proxy definitions
   </documentation>
      </annotation>
      <sequence>
         <element name="match" type="x:radius-service-match" minOccurs="0" maxOccurs="unbounded" fb:help="Matching rules for specific responses"/>
         <element name="server" type="x:radius-server" minOccurs="0" maxOccurs="unbounded" fb:help="RADIUS server settings"/>
      </sequence>
      <attribute name="auth-port" type="unsignedShort" use="optional" default="1812" fb:help="Authentication UDP port" fb:col="0"/>
      <attribute name="acct-port" type="unsignedShort" use="optional" default="1813" fb:help="Accounting UDP port" fb:col="0"/>
      <attribute name="control-port" type="unsignedShort" use="optional" default="3799" fb:help="Control UDP port (CoA/DM)" fb:col="0"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:help="Log debug" fb:ref="log"/>
      <attribute name="mqtt" type="x:mqtt-brokers" use="optional" fb:default="Don't send" fb:help="Generate MQTT for radius events" fb:col="0"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:help="Allowed source IP address of RADIUS request" fb:col="1"/>
      <attribute name="secret" type="fb:Secret" use="optional" fb:help="Shared secret for RADIUS requests (needed for replies)"/>
      <attribute name="authenticator" type="boolean" use="optional" fb:help="Require message authenticator"/>
      <attribute name="target-ip" type="x:ipnamelist" use="optional" fb:help="Target IP(s) or hostname for primary L2TP connection" fb:col="2"/>
      <attribute name="backup-ip" type="x:ipnamelist" use="optional" fb:help="Target IP(s) or hostname for backup L2TP connection" fb:col="2"/>
      <attribute name="order" type="x:radiuspriority" use="optional" fb:help="Priority tagging of endpoints sent"/>
      <attribute name="tagged" type="boolean" use="optional" fb:help="Tag all attributes that support tagging"/>
      <attribute name="target-secret" type="fb:Secret" use="optional" fb:help="Shared secret for L2TP connection" fb:col="2"/>
      <attribute name="target-hostname" type="string" use="optional" fb:help="Hostname for L2TP connection" fb:col="2"/>
      <attribute name="relay-ip" type="x:iplist" use="optional" fb:help="Address to copy RADIUS request" fb:col="2"/>
      <attribute name="relay-port" type="unsignedShort" use="optional" default="1812" fb:help="Authentication UDP port for copy RADIUS request"/>
      <attribute name="relay-table" type="x:routetable" use="optional" fb:help="Routing table number for copy of RADIUS request" fb:col="0"/>
      <attribute name="erx-virtual-router-name" type="string" use="optional" fb:help="Juniper attribute 1 (Also SIN502 Context-Name)" fb:col="0" fb:old="context-name"/>
      <attribute name="erx-tunnel-virtual-router" type="string" use="optional" fb:help="Juniper attribute 8" fb:col="0"/>
      <attribute name="erx-ingress-policy-name" type="string" use="optional" fb:help="Juniper attribute 10" fb:col="0"/>
      <attribute name="erx-egress-policy-name" type="string" use="optional" fb:help="Juniper attribute 11" fb:col="0"/>
      <attribute name="erx-tunnel-switch-profile" type="string" use="optional" fb:help="Juniper attribute 91" fb:col="0"/>
      <attribute name="nsn-conditional" type="boolean" use="optional" fb:help="Only send NSN settings if username is not same as calling station id" fb:col="0"/>
      <attribute name="nsn-tunnel-user-auth-method" type="unsignedInt" use="optional" fb:help="Additional response for GTP usage" fb:col="0"/>
      <attribute name="nsn-tunnel-override-username" type="unsignedByte" use="optional" fb:help="Additional response for GTP usage" fb:col="0"/>
      <attribute name="aruba-vlan" type="x:vlan" use="optional" fb:default="Don't send" fb:help="Aruba VLAN"/>
      <attribute name="tunnel-client-return" type="boolean" use="optional" fb:help="Return tunnel client as radius IP" fb:col="0"/>
      <attribute name="tunnel-assignment-id" type="string" use="optional" fb:help="Tunnel Assignment ID to send"/>
      <attribute name="class" type="string" use="optional" fb:help="Class field to send"/>
      <attribute name="dummy-ip" type="boolean" use="optional" default="true" fb:help="Send dummy framed IP response" fb:col="0"/>
      <attribute name="reject" type="boolean" use="optional" fb:help="Reject request (rarely what you want)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="radius-service-match" fb:help="Matching rules for RADIUS service">
      <annotation>
         <documentation xml:lang="en">
   Rules for matching incoming RADIUS requests
   </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="ip" type="x:ipnamerangelist" use="optional" fb:help="Match target IP address of RADIUS request" fb:col="1"/>
      <attribute name="nas-ip" type="x:ipnamerangelist" use="optional" fb:help="Match NAS-IP address in RADIUS request" fb:col="1"/>
      <attribute name="username" type="x:stringlist" use="optional" fb:help="One or more patterns to match username"/>
      <attribute name="calling-station-id" type="x:stringlist" use="optional" fb:help="One or more patterns to match calling-station-id"/>
      <attribute name="called-station-id" type="x:stringlist" use="optional" fb:help="One or more patterns to match called-station-id"/>
      <attribute name="mac-local" type="boolean" use="optional" fb:help="Match only local or non local MAC addresses if username is a MAC" fb:col="0"/>
      <attribute name="essid-name" type="x:stringlist" use="optional" fb:help="One or more patterns to match ESSID Name"/>
      <attribute name="ap-group" type="x:stringlist" use="optional" fb:help="One or more patterns to match AP Group"/>
      <attribute name="location-id" type="x:stringlist" use="optional" fb:help="One or more patterns to match Location ID"/>
      <attribute name="device-type" type="x:stringlist" use="optional" fb:help="One or more patterns to match Device Type"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:help="Allowed source IP address of RADIUS request" fb:col="1"/>
      <attribute name="secret" type="fb:Secret" use="optional" fb:help="Shared secret for RADIUS requests (needed for replies)"/>
      <attribute name="authenticator" type="boolean" use="optional" fb:help="Require message authenticator"/>
      <attribute name="target-ip" type="x:ipnamelist" use="optional" fb:help="Target IP(s) or hostname for primary L2TP connection" fb:col="2"/>
      <attribute name="backup-ip" type="x:ipnamelist" use="optional" fb:help="Target IP(s) or hostname for backup L2TP connection" fb:col="2"/>
      <attribute name="order" type="x:radiuspriority" use="optional" fb:help="Priority tagging of endpoints sent"/>
      <attribute name="tagged" type="boolean" use="optional" fb:help="Tag all attributes that support tagging"/>
      <attribute name="target-secret" type="fb:Secret" use="optional" fb:help="Shared secret for L2TP connection" fb:col="2"/>
      <attribute name="target-hostname" type="string" use="optional" fb:help="Hostname for L2TP connection" fb:col="2"/>
      <attribute name="relay-ip" type="x:iplist" use="optional" fb:help="Address to copy RADIUS request" fb:col="2"/>
      <attribute name="relay-port" type="unsignedShort" use="optional" default="1812" fb:help="Authentication UDP port for copy RADIUS request"/>
      <attribute name="relay-table" type="x:routetable" use="optional" fb:help="Routing table number for copy of RADIUS request" fb:col="0"/>
      <attribute name="erx-virtual-router-name" type="string" use="optional" fb:help="Juniper attribute 1 (Also SIN502 Context-Name)" fb:col="0" fb:old="context-name"/>
      <attribute name="erx-tunnel-virtual-router" type="string" use="optional" fb:help="Juniper attribute 8" fb:col="0"/>
      <attribute name="erx-ingress-policy-name" type="string" use="optional" fb:help="Juniper attribute 10" fb:col="0"/>
      <attribute name="erx-egress-policy-name" type="string" use="optional" fb:help="Juniper attribute 11" fb:col="0"/>
      <attribute name="erx-tunnel-switch-profile" type="string" use="optional" fb:help="Juniper attribute 91" fb:col="0"/>
      <attribute name="nsn-conditional" type="boolean" use="optional" fb:help="Only send NSN settings if username is not same as calling station id" fb:col="0"/>
      <attribute name="nsn-tunnel-user-auth-method" type="unsignedInt" use="optional" fb:help="Additional response for GTP usage" fb:col="0"/>
      <attribute name="nsn-tunnel-override-username" type="unsignedByte" use="optional" fb:help="Additional response for GTP usage" fb:col="0"/>
      <attribute name="aruba-vlan" type="x:vlan" use="optional" fb:default="Don't send" fb:help="Aruba VLAN"/>
      <attribute name="tunnel-client-return" type="boolean" use="optional" fb:help="Return tunnel client as radius IP" fb:col="0"/>
      <attribute name="tunnel-assignment-id" type="string" use="optional" fb:help="Tunnel Assignment ID to send"/>
      <attribute name="class" type="string" use="optional" fb:help="Class field to send"/>
      <attribute name="dummy-ip" type="boolean" use="optional" default="true" fb:help="Send dummy framed IP response" fb:col="0"/>
      <attribute name="reject" type="boolean" use="optional" fb:help="Reject request (rarely what you want)" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
      <attribute name="stop" type="boolean" default="true" use="optional" fb:help="Stop checking if this matches"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events matching this" fb:ref="log"/>
   </complexType>
   <complexType name="radius-server" fb:help="RADIUS server settings">
      <annotation>
         <documentation xml:lang="en">
   Server settings for outgoing RADIUS
   </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="port" type="unsignedShort" use="optional" fb:default="From services/radius settings" fb:help="UDP port"/>
      <attribute name="type" type="x:radiustypes" use="optional" fb:default="All" fb:help="Server type"/>
      <attribute name="secret" type="fb:Secret" fb:help="Shared secret for RADIUS requests" fb:col="2"/>
      <attribute name="host" type="x:ipnamelist" fb:help="One or more hostname/IPs of RADIUS servers" fb:col="2"/>
      <attribute name="allow" type="x:ipnamerangelist" use="optional" fb:default="Must match host" fb:help="Allowed control request source IPs instead of host check" fb:col="2"/>
      <attribute name="table" type="x:routetable" use="optional" fb:help="Routing table number" fb:col="0"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="Fix source IP" fb:col="0"/>
      <attribute name="queue" type="unsignedInt" use="optional" fb:help="Concurrent requests over all of these servers (per type)"/>
      <attribute name="min-timeout" type="fb:duration" use="optional" default="2" fb:help="Minimum final timeout"/>
      <attribute name="max-timeout" type="fb:duration" use="optional" default="10" fb:help="Maximum final timeout"/>
      <attribute name="scale-timeout" type="unsignedByte" use="optional" default="2" fb:help="Timeout scaling factor" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <complexType name="etun" fb:help="Ether tunnel">
      <annotation>
         <documentation xml:lang="en">
  Ether tunnel
  </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number" fb:col="0"/>
      <attribute name="source-ip" use="optional" type="fb:IPAddr" fb:help="Our IP address"/>
      <attribute name="eth-port" type="NMTOKEN" fb:help="Port group name" fb:ref="portname"/>
      <attribute name="ip" type="fb:IPAddr" fb:help="Far end IP address"/>
      <attribute name="log" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log events" fb:ref="log"/>
      <attribute name="log-error" type="NMTOKEN" use="optional" fb:default="Log as event" fb:help="Log errors" fb:ref="log"/>
      <attribute name="log-debug" type="NMTOKEN" use="optional" fb:default="Not logging" fb:help="Log debug" fb:ref="log"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
   </complexType>
   <complexType name="sampling" fb:help="Packet sampling configuration">
      <annotation>
         <documentation xml:lang="en">
  Packet sampling configuration
  </documentation>
      </annotation>
      <attribute name="name" type="string" use="optional" fb:help="Name"/>
      <attribute name="protocol" type="x:sampling-protocol" default="sflow" fb:help="Protocol used to export sampling data"/>
      <attribute name="collector-ip" type="fb:IPAddr" fb:help="IP address of collector"/>
      <attribute name="collector-port" type="unsignedShort" use="optional" fb:default="6343 for sFlow, 4739 for IPFIX" fb:help="UDP port which collector listens on"/>
      <attribute name="sample-rate" type="x:sample-rate" use="optional" default="1000" fb:help="Sample rate (uniform random prob 1/N)"/>
      <attribute name="snap-length" type="unsignedShort" use="optional" default="64" fb:help="Packet header snap length"/>
      <attribute name="template-refresh" type="fb:duration" use="optional" default="600" fb:help="Template resend interval"/>
      <attribute name="sample-flush" type="fb:duration" use="optional" fb:default="1 sec for sFlow; 30 for IPFIX" fb:help="Sample max cache time"/>
      <attribute name="stats-interval" type="fb:duration" use="optional" default="60" fb:help="Stats export interval"/>
      <attribute name="mtu" type="x:mtu" use="optional" default="1500" fb:col="0"/>
      <attribute name="table" type="x:routetable" use="optional" default="0" fb:help="Routing table number for sample data" fb:col="0"/>
      <attribute name="source-ip" type="fb:IPAddr" use="optional" fb:help="Source IP address to use" fb:col="0"/>
      <attribute name="source-port" type="unsignedShort" use="optional" fb:help="UDP source port" fb:default="Use collector-port" fb:col="0"/>
      <attribute name="agent-ip" type="fb:IPAddr" use="optional" fb:help="IP address used to identify this agent" fb:default="use source-ip" fb:col="0"/>
      <attribute name="profile" type="NMTOKEN" use="optional" fb:help="Profile name" fb:ref="profile"/>
      <attribute name="source" type="string" use="optional" fb:help="Source of data, used in automated config management" fb:col="0"/>
      <attribute name="comment" type="string" use="optional" fb:help="Comment" fb:col="2"/>
   </complexType>
   <simpleType name="sampling-mode" fb:help="Sampling mode">
      <restriction base="string">
         <enumeration value="off" fb:help="Don't perform sampling"/>
         <enumeration value="ingress" fb:help="Sample incoming traffic"/>
         <enumeration value="egress" fb:help="Sample outgoing traffic"/>
         <enumeration value="both" fb:help="Sample incoming and outgoing traffic"/>
      </restriction>
   </simpleType>
   <simpleType name="sample-rate" fb:help="Sampling rate">
      <restriction base="unsignedShort">
         <minInclusive value="100"/>
         <maxInclusive value="10000"/>
      </restriction>
   </simpleType>
   <simpleType name="sampling-protocol" fb:help="Sampling protocol">
      <restriction base="string">
         <enumeration value="sflow" fb:help="Use sFlow protocol"/>
         <enumeration value="ipfix-psamp" fb:help="Use IPFIX/PSAMP protocol"/>
         <enumeration value="ipfix-legacy" fb:help="Use legacy (Cisco-style) IPFIX"/>
      </restriction>
   </simpleType>
</schema>
