summaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
authorBob Gilligan <gilligan@vyatta.com>2008-02-29 14:33:57 -0800
committerBob Gilligan <gilligan@vyatta.com>2008-02-29 14:33:57 -0800
commit6baa45770b6c282df9e8268e1bc2cabaf816061b (patch)
tree970af8e31de0bdb6ca68576cddb885aad38be236 /templates
parentf8407a3cf509be10f119d270fe1076f5d4b55a13 (diff)
downloadvyatta-cfg-quagga-6baa45770b6c282df9e8268e1bc2cabaf816061b.tar.gz
vyatta-cfg-quagga-6baa45770b6c282df9e8268e1bc2cabaf816061b.zip
Bugfix: 2818.
Add "ip" commands to serial, multilink and pppoe config trees.
Diffstat (limited to 'templates')
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def16
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/cost/node.def11
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def12
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def12
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/priority/node.def12
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def12
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def12
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def5
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def23
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def20
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def10
-rw-r--r--templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def11
-rw-r--r--templates/interfaces/multilink/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/bandwidth/node.def16
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/cost/node.def11
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/dead-interval/node.def12
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/hello-interval/node.def12
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/priority/node.def12
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/retransmit-interval/node.def12
-rw-r--r--templates/interfaces/multilink/node.tag/ip/ospf/transmit-delay/node.def12
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.def5
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/password/node.def23
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/authentication/plaintext-password/node.def20
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/split-horizon/node.def10
-rw-r--r--templates/interfaces/multilink/node.tag/ip/rip/split-horizon/poison-reverse/node.def11
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/bandwidth/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/cost/node.def16
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/dead-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/hello-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/priority/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/retransmit-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/transmit-delay/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.def5
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def29
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/plaintext-password/node.def22
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/node.def12
-rw-r--r--templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def10
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/bandwidth/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/cost/node.def16
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/dead-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/hello-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/priority/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/retransmit-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/transmit-delay/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.def5
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def29
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/plaintext-password/node.def22
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/node.def12
-rw-r--r--templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def10
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/bandwidth/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/cost/node.def16
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/dead-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/hello-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/priority/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/retransmit-interval/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/transmit-delay/node.def17
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.def5
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def29
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/plaintext-password/node.def22
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/node.def12
-rw-r--r--templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def10
125 files changed, 1420 insertions, 0 deletions
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/node.def
new file mode 100644
index 00000000..713cca47
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Interface IPv4 configuration commands
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..f49686c2
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Configure MD5 key id
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between (1-255)"
+commit:expression: $VAR(md5-key/) != ""; \
+ "Must add the md5-key for key-id $VAR(@)"
+
+delete:expression: "touch /tmp/ospf-md5.$PPID"
+
+end:expression: "\
+ if [ -f \"/tmp/ospf-md5.$PPID\" ]; then \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../../@) \" \
+ -c \"ip ospf message-digest-key $VAR(@) md5 $VAR(md5-key/@)\"; \
+ fi; "
+
+comp_help: possible completions:
+ <1-255> Set the key id
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..7cbcad83
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Configure md5 key
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..c90f5cf9
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Configure md5 key
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..25cf7b24
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Configure MD5 key id
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..51ef9a4f
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Configure OSPF interface authentication
+
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..bbaa3247
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Configure plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \
+ echo Password must be 8 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"no ip ospf authentication-key \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (8 characters or less)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..c75167bd
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Bandwidth in kilobits/sec
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"no bandwidth $VAR(@) \"; "
+
+comp_help: possible completions:
+ <1-10000000> Set bandwidth in kilobits/sec (for calculating OSPF cost)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/cost/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..62396909
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,11 @@
+type: u32
+help: Interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..1511e149
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf dead-interval \"; "
+comp_help: possible completions:
+ <1-65535> Seconds (default 40)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..c80a843a
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Interval between HELLO packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"no ip ospf hello-interval \"; "
+comp_help: possible completions:
+ <1-65535> Seconds (default 10)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..8c44486d
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable mtu mismatch detection
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/network/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..5ca16ffa
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Network type
+syntax:expression: $VAR(@) in "broadcast", "non-broadcast", "point-to-multipoint", "point-to-point"; \
+ "Must be (broadcast|non-broadcast|point-to-multipoint|point-to-point)"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"no ip ospf network \"; "
+
+comp_help: possible completions:
+ broadcast Set broadcast network type
+ non-broadcast Set non-broadcast network type
+ point-to-multipoint Set point-to-multipoint network type
+ point-to-point Set point-to-point network type
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..a01474ec
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: OSPF interface commands
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/priority/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..160f95dd
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf priority $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf priority \"; "
+comp_help: possible completions:
+ <0-255> Priority (default 1)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..97287668
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf retransmit-interval $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf retransmit-interval \"; "
+comp_help: possible completions:
+ <3-65535> Seconds (default 5)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..1a524b5f
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf transmit-delay $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf transmit-delay \"; "
+comp_help: possible completions:
+ <1-65535> Seconds (default 1)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..873a4370
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,5 @@
+tag:
+type: u32
+help: MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between 1 and 255"
+
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..4306d008
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Authentication password
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..ab0a7ba6
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Authentication password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../../../@)\" \
+ -c \"ip rip authentication mode md5\" \
+ -c \"ip rip authentication key-chain pppoe$VAR(../../../../../@)-rip\" \
+ -c \"key chain pppoe$VAR(../../../../../@)-rip\" -c \"key $VAR(../@)\" \
+ -c \"key-string $VAR(@)\" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -noerr \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../../../@)\" \
+ -c \"no ip rip authentication mode md5\" \
+ -c \"no ip rip authentication key-chain pppoe$VAR(../../../../../@)-rip\" \
+ -c \"no key chain pppoe$VAR(../../../../../@)-rip\" "
+
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..22039cf7
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Authentication method
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..219bbf4d
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo Password must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../../@)\" \
+ -c \"ip rip authentication mode text\" \
+ -c \"ip rip authentication string $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../../@)\" \
+ -c \"no ip rip authentication mode\" \
+ -c \"no ip rip authentication string $VAR(@)\"; "
+
+comp_help: possible completions:
+ <text> Password (16 characters or less)
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..4cf2a137
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: RIP interface commands
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..dee817a5
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1,10 @@
+help: Enable split horizon on this interface
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"no ip rip split-horizon \" "
diff --git a/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..c994fc61
--- /dev/null
+++ b/templates/interfaces/ethernet/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,11 @@
+help: With poison reverse
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" \
+ -c \"ip rip split-horizon \" "
diff --git a/templates/interfaces/multilink/node.tag/ip/node.def b/templates/interfaces/multilink/node.tag/ip/node.def
new file mode 100644
index 00000000..713cca47
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Interface IPv4 configuration commands
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..9d1353a1
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Configure MD5 key id
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between (1-255)"
+commit:expression: $VAR(md5-key/) != ""; \
+ "Must add the md5-key for key-id $VAR(@)"
+
+delete:expression: "touch /tmp/ospf-md5.$PPID"
+
+end:expression: "\
+ if [ -f \"/tmp/ospf-md5.$PPID\" ]; then \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@) \" \
+ -c \"ip ospf message-digest-key $VAR(@) md5 $VAR(md5-key/@)\"; \
+ fi; "
+
+comp_help: possible completions:
+ <1-255> Set the key id
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..7cbcad83
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Configure md5 key
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..c90f5cf9
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Configure md5 key
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..132ac718
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Configure MD5 key id
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..51ef9a4f
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Configure OSPF interface authentication
+
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..a55e38b0
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Configure plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \
+ echo Password must be 8 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"no ip ospf authentication-key \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (8 characters or less)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..af429604
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Bandwidth in kilobits/sec
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"no bandwidth $VAR(@) \"; "
+
+comp_help: possible completions:
+ <1-10000000> Set bandwidth in kilobits/sec (for calculating OSPF cost)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/cost/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..1ef9665e
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,11 @@
+type: u32
+help: Interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..78005e38
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf dead-interval \"; "
+comp_help: possible completions:
+ <1-65535> Seconds (default 40)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..3ae56a7f
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Interval between HELLO packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@) \" \
+ -c \"no ip ospf hello-interval \"; "
+comp_help: possible completions:
+ <1-65535> Seconds (default 10)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..8179fb87
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable mtu mismatch detection
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/network/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..5664aa46
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Network type
+syntax:expression: $VAR(@) in "broadcast", "non-broadcast", "point-to-multipoint", "point-to-point"; \
+ "Must be (broadcast|non-broadcast|point-to-multipoint|point-to-point)"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"no ip ospf network \"; "
+
+comp_help: possible completions:
+ broadcast Set broadcast network type
+ non-broadcast Set non-broadcast network type
+ point-to-multipoint Set point-to-multipoint network type
+ point-to-point Set point-to-point network type
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..a01474ec
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: OSPF interface commands
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/priority/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..7224417b
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf priority $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf priority \"; "
+comp_help: possible completions:
+ <0-255> Priority (default 1)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..90205584
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf retransmit-interval $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf retransmit-interval \"; "
+comp_help: possible completions:
+ <3-65535> Seconds (default 5)
diff --git a/templates/interfaces/multilink/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/multilink/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..39ba835f
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf transmit-delay $VAR(@)\"; "
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf transmit-delay \"; "
+comp_help: possible completions:
+ <1-65535> Seconds (default 1)
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..873a4370
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,5 @@
+tag:
+type: u32
+help: MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between 1 and 255"
+
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..4306d008
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Authentication password
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..c07b459b
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Authentication password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../../../@)\" \
+ -c \"ip rip authentication mode md5\" \
+ -c \"ip rip authentication key-chain $VAR(../../../../../@)-rip\" \
+ -c \"key chain $VAR(../../../../../@)-rip\" -c \"key $VAR(../@)\" \
+ -c \"key-string $VAR(@)\" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -noerr \
+ -c \"configure terminal\" -c \"interface $VAR(../../../../../@)\" \
+ -c \"no ip rip authentication mode md5\" \
+ -c \"no ip rip authentication key-chain $VAR(../../../../../@)-rip\" \
+ -c \"no key chain $VAR(../../../../../@)-rip\" "
+
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/authentication/node.def b/templates/interfaces/multilink/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..22039cf7
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Authentication method
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/multilink/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..bb6c0eeb
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo Password must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../../@)\" \
+ -c \"ip rip authentication mode text\" \
+ -c \"ip rip authentication string $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" -c \"interface $VAR(../../../../@)\" \
+ -c \"no ip rip authentication mode\" \
+ -c \"no ip rip authentication string $VAR(@)\"; "
+
+comp_help: possible completions:
+ <text> Password (16 characters or less)
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/node.def b/templates/interfaces/multilink/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..4cf2a137
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: RIP interface commands
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/multilink/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..b91bfff7
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1,10 @@
+help: Enable split horizon on this interface
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"no ip rip split-horizon \" "
diff --git a/templates/interfaces/multilink/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/multilink/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..9057a4cd
--- /dev/null
+++ b/templates/interfaces/multilink/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,11 @@
+help: With poison reverse
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" \
+ -c \"ip rip split-horizon \" "
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/node.def
new file mode 100644
index 00000000..713cca47
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Interface IPv4 configuration commands
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..c52e938c
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Configure MD5 key id
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between (1-255)"
+commit:expression: $VAR(md5-key/) != ""; \
+ "Must add the md5-key for key-id $VAR(@)"
+
+delete:expression: "touch /tmp/ospf-md5.$PPID"
+
+end:expression: "\
+ if [ -f \"/tmp/ospf-md5.$PPID\" ]; then \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"ip ospf message-digest-key $VAR(@) md5 $VAR(md5-key/@)\"; \
+ fi; "
+
+comp_help: possible completions:
+ <1-255> Set the key id
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..7cbcad83
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Configure md5 key
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..c90f5cf9
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Configure md5 key
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..c1977c7c
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Configure MD5 key id
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..51ef9a4f
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Configure OSPF interface authentication
+
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..892c2392
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Configure plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \
+ echo Password must be 8 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"no ip ospf authentication-key \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (8 characters or less)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..ae9c2803
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Bandwidth in kilobits/sec
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no bandwidth $VAR(@) \"; "
+
+comp_help: possible completions:
+ <1-10000000> Set bandwidth in kilobits/sec (for calculating OSPF cost)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/cost/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..95716870
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..165a0232
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no ip ospf dead-interval \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 40)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..2b57c08b
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval between HELLO packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf hello-interval \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 10)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..e4b4d713
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable mtu mismatch detection
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/network/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..70d0e201
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Network type
+syntax:expression: $VAR(@) in "broadcast", "non-broadcast", "point-to-multipoint", "point-to-point"; \
+ "Must be (broadcast|non-broadcast|point-to-multipoint|point-to-point)"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf network \"; "
+
+comp_help: possible completions:
+ broadcast Set broadcast network type
+ non-broadcast Set non-broadcast network type
+ point-to-multipoint Set point-to-multipoint network type
+ point-to-point Set point-to-point network type
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..a01474ec
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: OSPF interface commands
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/priority/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..8a186a9d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf priority $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf priority \"; "
+
+comp_help: possible completions:
+ <0-255> Priority (default 1)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..9531ec6f
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf retransmit-interval $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf retransmit-interval \"; "
+
+comp_help: possible completions:
+ <3-65535> Seconds (default 5)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..abe2098d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf transmit-delay $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf transmit-delay \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 1)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..873a4370
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,5 @@
+tag:
+type: u32
+help: MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between 1 and 255"
+
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..4306d008
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Authentication password
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..a2d01a78
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,29 @@
+type: txt
+help: Authentication password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"ip rip authentication mode md5 \" \
+ -c \"ip rip authentication \
+ key-chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"key chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"key $VAR(../@) \" \
+ -c \"key-string $VAR(@) \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -noerr \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip rip authentication mode md5 \" \
+ -c \"no ip rip authentication key-chain \
+ $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"no \
+ key chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip\" "
+
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..22039cf7
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Authentication method
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..1e124e8d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,22 @@
+type: txt
+help: Plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo Password must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip authentication mode text \" \
+ -c \"ip rip authentication string $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip authentication mode \" \
+ -c \"no ip rip authentication string $VAR(@) \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..4cf2a137
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: RIP interface commands
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..d9bb64ec
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1,12 @@
+help: Enable split horizon on this interface
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+
diff --git a/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..c5dfdfb8
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/cisco-hdlc/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,10 @@
+help: With poison reverse
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon\" -c \"ip rip split-horizon \" "
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/node.def
new file mode 100644
index 00000000..713cca47
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Interface IPv4 configuration commands
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..c52e938c
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Configure MD5 key id
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between (1-255)"
+commit:expression: $VAR(md5-key/) != ""; \
+ "Must add the md5-key for key-id $VAR(@)"
+
+delete:expression: "touch /tmp/ospf-md5.$PPID"
+
+end:expression: "\
+ if [ -f \"/tmp/ospf-md5.$PPID\" ]; then \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"ip ospf message-digest-key $VAR(@) md5 $VAR(md5-key/@)\"; \
+ fi; "
+
+comp_help: possible completions:
+ <1-255> Set the key id
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..7cbcad83
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Configure md5 key
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..c90f5cf9
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Configure md5 key
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..c1977c7c
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Configure MD5 key id
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..51ef9a4f
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Configure OSPF interface authentication
+
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..892c2392
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Configure plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \
+ echo Password must be 8 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"no ip ospf authentication-key \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (8 characters or less)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..ae9c2803
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Bandwidth in kilobits/sec
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no bandwidth $VAR(@) \"; "
+
+comp_help: possible completions:
+ <1-10000000> Set bandwidth in kilobits/sec (for calculating OSPF cost)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/cost/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..95716870
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..165a0232
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no ip ospf dead-interval \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 40)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..2b57c08b
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval between HELLO packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf hello-interval \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 10)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..e4b4d713
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable mtu mismatch detection
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/network/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..70d0e201
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Network type
+syntax:expression: $VAR(@) in "broadcast", "non-broadcast", "point-to-multipoint", "point-to-point"; \
+ "Must be (broadcast|non-broadcast|point-to-multipoint|point-to-point)"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf network \"; "
+
+comp_help: possible completions:
+ broadcast Set broadcast network type
+ non-broadcast Set non-broadcast network type
+ point-to-multipoint Set point-to-multipoint network type
+ point-to-point Set point-to-point network type
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..a01474ec
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: OSPF interface commands
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/priority/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..8a186a9d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf priority $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf priority \"; "
+
+comp_help: possible completions:
+ <0-255> Priority (default 1)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..9531ec6f
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf retransmit-interval $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf retransmit-interval \"; "
+
+comp_help: possible completions:
+ <3-65535> Seconds (default 5)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..abe2098d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf transmit-delay $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf transmit-delay \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 1)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..873a4370
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,5 @@
+tag:
+type: u32
+help: MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between 1 and 255"
+
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..4306d008
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Authentication password
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..a2d01a78
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,29 @@
+type: txt
+help: Authentication password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"ip rip authentication mode md5 \" \
+ -c \"ip rip authentication \
+ key-chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"key chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"key $VAR(../@) \" \
+ -c \"key-string $VAR(@) \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -noerr \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip rip authentication mode md5 \" \
+ -c \"no ip rip authentication key-chain \
+ $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"no \
+ key chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip\" "
+
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..22039cf7
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Authentication method
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..1e124e8d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,22 @@
+type: txt
+help: Plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo Password must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip authentication mode text \" \
+ -c \"ip rip authentication string $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip authentication mode \" \
+ -c \"no ip rip authentication string $VAR(@) \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..4cf2a137
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: RIP interface commands
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..d9bb64ec
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1,12 @@
+help: Enable split horizon on this interface
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+
diff --git a/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..c5dfdfb8
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/frame-relay/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,10 @@
+help: With poison reverse
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon\" -c \"ip rip split-horizon \" "
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/node.def
new file mode 100644
index 00000000..713cca47
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Interface IPv4 configuration commands
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..c52e938c
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Configure MD5 key id
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between (1-255)"
+commit:expression: $VAR(md5-key/) != ""; \
+ "Must add the md5-key for key-id $VAR(@)"
+
+delete:expression: "touch /tmp/ospf-md5.$PPID"
+
+end:expression: "\
+ if [ -f \"/tmp/ospf-md5.$PPID\" ]; then \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"ip ospf message-digest-key $VAR(@) md5 $VAR(md5-key/@)\"; \
+ fi; "
+
+comp_help: possible completions:
+ <1-255> Set the key id
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..7cbcad83
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Configure md5 key
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..c90f5cf9
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Configure md5 key
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..c1977c7c
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Configure MD5 key id
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..51ef9a4f
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Configure OSPF interface authentication
+
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..892c2392
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Configure plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \
+ echo Password must be 8 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"no ip ospf authentication-key \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (8 characters or less)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..ae9c2803
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Bandwidth in kilobits/sec
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no bandwidth $VAR(@) \"; "
+
+comp_help: possible completions:
+ <1-10000000> Set bandwidth in kilobits/sec (for calculating OSPF cost)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/cost/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..95716870
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..165a0232
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@)\" \
+ -c \"no ip ospf dead-interval \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 40)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..2b57c08b
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval between HELLO packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf hello-interval \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 10)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..e4b4d713
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable mtu mismatch detection
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/network/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..70d0e201
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Network type
+syntax:expression: $VAR(@) in "broadcast", "non-broadcast", "point-to-multipoint", "point-to-point"; \
+ "Must be (broadcast|non-broadcast|point-to-multipoint|point-to-point)"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf network \"; "
+
+comp_help: possible completions:
+ broadcast Set broadcast network type
+ non-broadcast Set non-broadcast network type
+ point-to-multipoint Set point-to-multipoint network type
+ point-to-point Set point-to-point network type
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..a01474ec
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: OSPF interface commands
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/priority/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..8a186a9d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf priority $VAR(@)\"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf priority \"; "
+
+comp_help: possible completions:
+ <0-255> Priority (default 1)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..9531ec6f
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf retransmit-interval $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf retransmit-interval \"; "
+
+comp_help: possible completions:
+ <3-65535> Seconds (default 5)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..abe2098d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf transmit-delay $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf transmit-delay \"; "
+
+comp_help: possible completions:
+ <1-65535> Seconds (default 1)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..873a4370
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,5 @@
+tag:
+type: u32
+help: MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between 1 and 255"
+
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..4306d008
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Authentication password
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..a2d01a78
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,29 @@
+type: txt
+help: Authentication password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo MD5 key must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"ip rip authentication mode md5 \" \
+ -c \"ip rip authentication \
+ key-chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"key chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"key $VAR(../@) \" \
+ -c \"key-string $VAR(@) \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -noerr \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip rip authentication mode md5 \" \
+ -c \"no ip rip authentication key-chain \
+ $VAR(../../../../../../../@).$VAR(../../../../../@)-rip \" \
+ -c \"no \
+ key chain $VAR(../../../../../../../@).$VAR(../../../../../@)-rip\" "
+
+comp_help: possible completions:
+ <text> MD5 Key (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..22039cf7
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Authentication method
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..1e124e8d
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,22 @@
+type: txt
+help: Plain text password
+syntax:expression: exec " \
+ if [ `echo -n $VAR(@) | wc -c` -gt 16 ]; then \
+ echo Password must be 16 characters or less ; \
+ exit 1 ; \
+ fi ; "
+
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip authentication mode text \" \
+ -c \"ip rip authentication string $VAR(@) \"; "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip authentication mode \" \
+ -c \"no ip rip authentication string $VAR(@) \"; "
+
+comp_help: possible completions:
+ <text> Plain text password (16 characters or less)
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..4cf2a137
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: RIP interface commands
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..d9bb64ec
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1,12 @@
+help: Enable split horizon on this interface
+update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+
diff --git a/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..c5dfdfb8
--- /dev/null
+++ b/templates/interfaces/serial/node.tag/ppp/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,10 @@
+help: With poison reverse
+create:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon\" -c \"ip rip split-horizon \" "