summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/dns-forwarding/vyatta-dns-forwarding.pl8
-rw-r--r--templates/service/dns-forwarding/ignore-interface/node.def19
2 files changed, 27 insertions, 0 deletions
diff --git a/scripts/dns-forwarding/vyatta-dns-forwarding.pl b/scripts/dns-forwarding/vyatta-dns-forwarding.pl
index 4eebf6d7..1fb2282a 100644
--- a/scripts/dns-forwarding/vyatta-dns-forwarding.pl
+++ b/scripts/dns-forwarding/vyatta-dns-forwarding.pl
@@ -62,6 +62,14 @@ sub dnsforwarding_get_values {
my $config = new VyattaConfig;
$config->setLevel("service dns-forwarding");
+
+ my @ignore_interfaces = $config->returnValues("ignore-interface");
+ if ($#ignore_interfaces >= 0) {
+ foreach my $interface (@ignore_interfaces) {
+ $output .= "except-interface=$interface\n";
+ }
+ }
+
my $cache_size = $config->returnValue("cache-size");
if (defined $cache_size) {
$output .= "cache-size=$cache_size\n";
diff --git a/templates/service/dns-forwarding/ignore-interface/node.def b/templates/service/dns-forwarding/ignore-interface/node.def
new file mode 100644
index 00000000..5355eecf
--- /dev/null
+++ b/templates/service/dns-forwarding/ignore-interface/node.def
@@ -0,0 +1,19 @@
+multi:
+type: txt
+help: Set interface to ignore DNS queries on
+syntax:expression: exec "
+ intf_array=($(awk '$1 ~ /:$/ { print $1 }' /proc/net/dev))
+ intf_array_len=${#intf_array[*]}
+ i=0
+ while [ $i -lt $intf_array_len ]; do
+ if [ \"${intf_array[$i]}\" == \"$VAR(@):\" ] ; then
+ exit 0
+ fi
+ let i++
+ done
+ echo Invalid ethernet interface [$VAR(@)]
+ exit 1 "
+
+allowed: local -a array ;
+ array=($(awk '$1 ~ /:$/ { print $1 }' /proc/net/dev));
+ echo -n ${array[@]%:}