<?xml version="1.0"?> <interfaceDefinition> <node name="interfaces"> <children> <tagNode name="wireguard" owner="${vyos_conf_scripts_dir}/interfaces-wireguard.py"> <properties> <help>WireGuard interface name</help> <priority>459</priority> <!-- subsequent ones may be removed, just make sure ethernet ifs are present --> <constraint> <regex>^wg[0-9]{1,4}</regex> </constraint> <constraintErrorMessage>illegal interface name</constraintErrorMessage> <valueHelp> <format>wgN</format> <description>WireGuard interface name</description> </valueHelp> </properties> <children> <leafNode name="address"> <properties> <help>IP address</help> <constraint> <validator name="ip-cidr"/> </constraint> <valueHelp> <format>ipv4net</format> <description>IPv4 address and prefix length</description> </valueHelp> <valueHelp> <format>ipv6net</format> <description>IPv6 address and prefix length</description> </valueHelp> <multi/> </properties> </leafNode> <leafNode name="description"> <properties> <help>description</help> <constraint> <regex>^.{1,100}$</regex> </constraint> <constraintErrorMessage>interface description is too long (limit 100 characters)</constraintErrorMessage> </properties> </leafNode> <leafNode name="disable"> <properties> <help>disables interface</help> <valueless/> </properties> </leafNode> <leafNode name="port"> <properties> <help>Local port number to accept connections</help> <constraint> <validator name="numeric" argument="--range 1024-65535"/> </constraint> </properties> </leafNode> <leafNode name="mtu"> <properties> <help>interface mtu size(default: 1420)</help> <constraint> <validator name="numeric" argument="--range 68-9000"/> </constraint> </properties> </leafNode> <leafNode name="fwmark"> <properties> <help>A 32-bit fwmark value set on all outgoing packets</help> <valueHelp> <format>number</format> <description>value which marks the packet for QoS/shaper</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 1-255"/> </constraint> </properties> </leafNode> <leafNode name="private-key"> <properties> <help>Private key to use on that interface</help> <completionHelp> <script>${vyos_op_scripts_dir}/wireguard.py --listkdir</script> </completionHelp> </properties> </leafNode> <tagNode name="peer"> <properties> <help>peer alias</help> <constraint> <regex>[^ ]{1,100}$</regex> </constraint> <constraintErrorMessage>peer alias too long (limit 100 characters)</constraintErrorMessage> </properties> <children> <leafNode name="disable"> <properties> <help>disables peer</help> <valueless/> </properties> </leafNode> <leafNode name="pubkey"> <properties> <help>base64 encoded public key</help> <constraint> <regex>^[0-9a-zA-Z\+/]{43}=$</regex> </constraint> <constraintErrorMessage>Key is not valid 44-character (32-bytes) base64</constraintErrorMessage> </properties> </leafNode> <leafNode name="preshared-key"> <properties> <help>base64 encoded preshared key</help> <constraint> <regex>^[0-9a-zA-Z\+/]{43}=$</regex> </constraint> <constraintErrorMessage>Key is not valid 44-character (32-bytes) base64</constraintErrorMessage> </properties> </leafNode> <leafNode name="allowed-ips"> <properties> <help>IP addresses allowed to traverse the peer</help> <constraint> <validator name="ip-prefix"/> </constraint> <multi/> </properties> </leafNode> <!-- eventually check format IP:port --> <leafNode name="endpoint"> <properties> <help>Remote endpoint (IP:port)</help> </properties> </leafNode> <leafNode name="persistent-keepalive"> <properties> <help>how often send keep alives in seconds</help> <constraint> <validator name="numeric" argument="--range 1-65535"/> </constraint> </properties> </leafNode> </children> </tagNode> </children> </tagNode> </children> </node> </interfaceDefinition>