summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2018-03-16 20:09:59 +0100
committerChristian Poessinger <christian@poessinger.com>2018-04-15 17:50:57 +0200
commit1df3827994bfef6c166bdb0f51cc51c212507361 (patch)
treed9b5c719548f5da011350a90b628654c5e499dbd
parentbdda9e84e55d80fafc7cd115d7beb858d4a1a00d (diff)
downloadvyos-1x-1df3827994bfef6c166bdb0f51cc51c212507361.tar.gz
vyos-1x-1df3827994bfef6c166bdb0f51cc51c212507361.zip
Initial CLI interface support for XML DNS forwarder
-rw-r--r--interface-definitions/dns-forwarding.xml96
-rwxr-xr-xsrc/conf-mode/vyos-config-dns-forwarding.py45
2 files changed, 141 insertions, 0 deletions
diff --git a/interface-definitions/dns-forwarding.xml b/interface-definitions/dns-forwarding.xml
new file mode 100644
index 000000000..d9af20e9f
--- /dev/null
+++ b/interface-definitions/dns-forwarding.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+
+<!-- DNS forwarder configuration -->
+
+<interfaceDefinition>
+ <node name="service">
+ <children>
+ <node name="dns">
+ <children>
+ <node name="forwarding" owner="${vyos_sbindir}/vyos-config-dns-forwarding.py">
+ <properties>
+ <help>DNS forwarding</help>
+ <priority>918</priority>
+ </properties>
+ <children>
+ <leafNode name="cache-size">
+ <properties>
+ <help>DNS forwarding cache size</help>
+ <valueHelp>
+ <format>u32:0-10000</format>
+ <description>DNS forwarding cache size</description>
+ </valueHelp>
+ <type>u32</type>
+ </properties>
+ </leafNode>
+ <leafNode name="dhcp">
+ <properties>
+ <help>Use nameservers received from DHCP server for specified interface</help>
+ <multi/>
+ </properties>
+ </leafNode>
+ <tagNode name="domain">
+ <properties>
+ <help>DNS domain to forward to a local server</help>
+ </properties>
+ <children>
+ <leafNode name="server">
+ <properties>
+ <help>Domain Name Server (DNS) to forward queries</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Domain Name Server (DNS) IPv4 address</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>Domain Name Server (DNS) IPv6 address</description>
+ </valueHelp>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <leafNode name="ignore-hosts-file">
+ <properties>
+ <help>Do not use local /etc/hosts file in name resolution</help>
+ </properties>
+ </leafNode>
+ <leafNode name="listen-on">
+ <properties>
+ <help>Interface to listen for DNS queries [REQUIRED]</help>
+ <completionHelp>
+ <script>${vyatta_sbindir}/vyatta-interfaces.pl --show all</script>
+ </completionHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="name-server">
+ <properties>
+ <help>Domain Name Server (DNS)</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Domain Name Server (DNS) IPv4 address</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>Domain Name Server (DNS) IPv6 address</description>
+ </valueHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="query-all-servers">
+ <properties>
+ <help>Query all DNS servers, respond and cache fastest result</help>
+ </properties>
+ </leafNode>
+ <leafNode name="system">
+ <properties>
+ <help>DNS forwarding to system nameservers</help>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+ </node>
+</interfaceDefinition>
diff --git a/src/conf-mode/vyos-config-dns-forwarding.py b/src/conf-mode/vyos-config-dns-forwarding.py
new file mode 100755
index 000000000..27e7a5ef5
--- /dev/null
+++ b/src/conf-mode/vyos-config-dns-forwarding.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2018 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#
+
+import sys
+import os
+
+from vyos.config import Config
+from vyos.util import ConfigError
+
+def get_config():
+ return None
+
+def verify(dns):
+ return None
+
+def generate(dns):
+ return None
+
+def apply(dns):
+ return None
+
+if __name__ == '__main__':
+ try:
+ c = get_config()
+ verify(c)
+ generate(c)
+ apply(c)
+ except ConfigError as e:
+ print(e)
+ sys.exit(1)