summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog12
-rw-r--r--templates/interfaces/bonding/node.tag/disable-link-detect/node.def3
-rw-r--r--templates/interfaces/bonding/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/bandwidth/node.def16
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/cost/node.def11
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/dead-interval/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/hello-interval/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/priority/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/retransmit-interval/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/ip/ospf/transmit-delay/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.def8
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/password/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/authentication/plaintext-password/node.def22
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/split-horizon/disable/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/split-horizon/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/ip/rip/split-horizon/poison-reverse/node.def14
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/disable-link-detect/node.def3
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/bandwidth/node.def17
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/cost/node.def16
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/dead-interval/node.def17
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/hello-interval/node.def17
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/priority/node.def17
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/retransmit-interval/node.def17
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/transmit-delay/node.def17
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.def8
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def29
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/plaintext-password/node.def24
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/disable/node.def13
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def16
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/cost/node.def11
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/priority/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def12
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def5
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def23
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def20
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/disable/node.def13
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def1
-rw-r--r--templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def13
-rw-r--r--templates/interfaces/bridge/node.tag/disable-link-detect/node.def3
-rw-r--r--templates/interfaces/bridge/node.tag/ip/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.def23
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def9
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/node.def11
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/authentication/node.def2
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/authentication/plaintext-password/node.def23
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/bandwidth/node.def16
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/cost/node.def11
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/dead-interval/node.def12
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/hello-interval/node.def12
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/mtu-ignore/node.def10
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/network/node.def20
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/priority/node.def12
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/retransmit-interval/node.def12
-rw-r--r--templates/interfaces/bridge/node.tag/ip/ospf/transmit-delay/node.def12
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.def8
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/password/node.def23
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/authentication/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/authentication/plaintext-password/node.def22
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/split-horizon/disable/node.def12
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/split-horizon/node.def1
-rw-r--r--templates/interfaces/bridge/node.tag/ip/rip/split-horizon/poison-reverse/node.def14
-rw-r--r--templates/protocols/bgp/disable/node.def12
-rw-r--r--templates/protocols/bgp/node.def2
-rw-r--r--templates/protocols/ospf/node.def2
-rw-r--r--templates/protocols/rip/node.def2
112 files changed, 1141 insertions, 15 deletions
diff --git a/debian/changelog b/debian/changelog
index 185ac40b..e3f0b8f3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+vyatta-cfg-quagga (0.16) unstable; urgency=low
+
+ [ Stephen Hemminger ]
+ * force BGP on
+
+ [ slioch ]
+ * changes to support bgp start/stop
+ * applied same changes to ospf and rip as to bgp re: start/stop router
+ daemon hooks
+
+ -- slioch <slioch@eng-140.vyatta.com> Thu, 19 Feb 2009 20:34:15 -0800
+
vyatta-cfg-quagga (0.15) unstable; urgency=low
* Fix email in changlog
diff --git a/templates/interfaces/bonding/node.tag/disable-link-detect/node.def b/templates/interfaces/bonding/node.tag/disable-link-detect/node.def
new file mode 100644
index 00000000..83858ec1
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/disable-link-detect/node.def
@@ -0,0 +1,3 @@
+help: Set to ignore link state changes on this interface
+update:/opt/vyatta/sbin/vyatta-link-detect $VAR(../@) on
+delete:/opt/vyatta/sbin/vyatta-link-detect $VAR(../@) off
diff --git a/templates/interfaces/bonding/node.tag/ip/node.def b/templates/interfaces/bonding/node.tag/ip/node.def
new file mode 100644
index 00000000..92e252e1
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Set IPv4 parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..0d156a55
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Set 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-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ vyatta-vtysh -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/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..e007b689
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set 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/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..d14a2583
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Set md5 key
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..341af509
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Set MD5 key id
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..ff352a01
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Set OSPF interface authentication
+
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..95215c89
--- /dev/null
+++ b/templates/interfaces/bonding/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-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..309d2f17
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Set bandwidth for specified interface (kilobits/sec)
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/cost/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..d57876cd
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,11 @@
+type: u32
+help: Set interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+delete:expression: "vyatta-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..5e4170cb
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..885ccb43
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval between hello packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..1bce2ca9
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable Maximum Transmission Unit (MTU) mismatch detection
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/network/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..347aee8a
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Set 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-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..1702547a
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: Set Open Shortest Path First (OSPF) parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/ip/ospf/priority/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..32321e3b
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf priority $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..a325fe38
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf retransmit-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/bonding/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..2c64ca30
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf transmit-delay $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..8d165fe6
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,8 @@
+tag:
+type: u32
+help: Set MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; \
+ "ID must be between 1 and 255"
+
+commit:expression: $VAR(../plaintext-password/) == "" ; \
+ "plaintext-password already set"
diff --git a/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..488acd8c
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Set authentication password
diff --git a/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..bcebd5ab
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Set 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-vtysh \
+ -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-vtysh --noerror \
+ -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/bonding/node.tag/ip/rip/authentication/node.def b/templates/interfaces/bonding/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..8756de35
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Set authentication method
diff --git a/templates/interfaces/bonding/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/bonding/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..e21e5878
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,22 @@
+type: txt
+help: Set 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 ; "
+
+commit:expression: $VAR(../md5/) == "" ; "md5 password already set"
+
+update: vyatta-vtysh \
+ -c "configure terminal" -c "interface $VAR(../../../../@)" \
+ -c "ip rip authentication mode text" \
+ -c "ip rip authentication string $VAR(@)";
+
+delete: vyatta-vtysh \
+ -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/bonding/node.tag/ip/rip/node.def b/templates/interfaces/bonding/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..d1f72a5f
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: Set Routing Information Protocol (RIP) for specified interface
diff --git a/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/disable/node.def b/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/disable/node.def
new file mode 100644
index 00000000..f40e77d1
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/disable/node.def
@@ -0,0 +1,12 @@
+help: Disable split horizon on specified interface
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+commit:expression: ($VAR(../poison-reverse/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for ethernet interface $VAR(../../../../@)"
diff --git a/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..ba39b616
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1 @@
+help: Set to control split horizon parameters on this interface
diff --git a/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..f608d9c3
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,14 @@
+help: Enable poison reverse for split-horizon
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" \
+ -c \"ip rip split-horizon \" "
+
+commit:expression: ($VAR(../disable/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for ethernet interface $VAR(../../../../@)"
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/disable-link-detect/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/disable-link-detect/node.def
new file mode 100644
index 00000000..92222182
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/disable-link-detect/node.def
@@ -0,0 +1,3 @@
+help: Set to ignore link state changes on this interface
+update:/opt/vyatta/sbin/vyatta-link-detect "$VAR(../../@).$VAR(../@)" on
+delete:/opt/vyatta/sbin/vyatta-link-detect "$VAR(../../@).$VAR(../@)" off
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/node.def
new file mode 100644
index 00000000..92e252e1
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Set IPv4 parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..54628133
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Set 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-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../../@).$VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ vyatta-vtysh -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/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..ef35f7da
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set 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/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..3d83feec
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Set MD5 key
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..8f0d87de
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Set MD5 key id
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..ff352a01
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Set OSPF interface authentication
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..0f10b991
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Set 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-vtysh \
+ -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-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..25ef0e1e
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Set bandwidth (kilobits/sec)
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@)\" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/cost/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..bf48e818
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Set interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..2ed57960
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Set interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..e5a0de68
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Set interval between hello packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..8636b767
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable Maximum Transmission Unit (MTU) mismatch detection
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/network/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..92c0d77d
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Set 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-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@)\"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..1702547a
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: Set Open Shortest Path First (OSPF) parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/priority/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..01db7f60
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Set router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf priority $VAR(@)\"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..6b3c8e38
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Set interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf retransmit-interval $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..cbb93986
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,17 @@
+type: u32
+help: Set link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@).$VAR(../../../@) \" \
+ -c \"ip ospf transmit-delay $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..8d165fe6
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,8 @@
+tag:
+type: u32
+help: Set MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; \
+ "ID must be between 1 and 255"
+
+commit:expression: $VAR(../plaintext-password/) == "" ; \
+ "plaintext-password already set"
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..488acd8c
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Set authentication password
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..73aa92d2
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,29 @@
+type: txt
+help: Set 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-vtysh \
+ -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-vtysh --noerror \
+ -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/bonding/node.tag/vif/node.tag/ip/rip/authentication/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..8756de35
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Set authentication method
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..acf34ef9
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,24 @@
+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 ; "
+
+commit:expression: $VAR(../md5/) == "" ; "md5 password already set"
+
+update: vyatta-vtysh \
+ -c "configure terminal" \
+ -c "interface $VAR(../../../../../@).$VAR(../../../../@)" \
+ -c "ip rip authentication mode text" \
+ -c "ip rip authentication string $VAR(@)"
+
+delete: vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/ip/rip/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..793075b4
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: Set Routing Inforamtion Protocol (RIP) parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/disable/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/disable/node.def
new file mode 100644
index 00000000..d38e883e
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/disable/node.def
@@ -0,0 +1,13 @@
+help: Disable split horizon on specified interface
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+commit:expression: ($VAR(../poison-reverse/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for ethernet Virtual InterFace $VAR(../../../../@)"
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..ba39b616
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1 @@
+help: Set to control split horizon parameters on this interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..24b76c23
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,12 @@
+help: Enable split-horizon with poison reverse
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../../@).$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon\" -c \"ip rip split-horizon \" "
+commit:expression: ($VAR(../disable/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for ethernet Virtual InterFace $VAR(../../../../@)"
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/node.def
new file mode 100644
index 00000000..624c74dc
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Set interface IPv4 parameters
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..1b70a938
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Set 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-vtysh -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ vyatta-vtysh -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..ef35f7da
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set 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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..d14a2583
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Set md5 key
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..2814e66b
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Set MD5 key id
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..ff352a01
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Set OSPF interface authentication
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..f8432137
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/authentication/plaintext-password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Set 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-vtysh \
+ -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-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..c2660d09
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Set bandwidth in kilobits/sec
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/cost/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..f9459d6a
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,11 @@
+type: u32
+help: Set interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+delete:expression: "vyatta-vtysh -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..8edaca26
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..93e2d7a1
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval between HELLO packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..966566a4
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable Maximum Transmission Unit (MTU) mismatch detection
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/network/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..132c663a
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Set 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-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface pppoe$VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..1702547a
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: Set Open Shortest Path First (OSPF) parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/priority/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..acc84ac0
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf priority $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..92884596
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf retransmit-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..78fd0e10
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../@)\" \
+ -c \"ip ospf transmit-delay $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..e1819c01
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,5 @@
+tag:
+type: u32
+help: Set MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; "ID must be between 1 and 255"
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..488acd8c
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Set authentication password
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..c7b1cfe5
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Set 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-vtysh \
+ -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-vtysh --noerror \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..8756de35
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Set authentication method
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..9d147205
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Set 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-vtysh \
+ -c \"configure terminal\" -c \"interface pppoe$VAR(../../../../@)\" \
+ -c \"ip rip authentication mode text\" \
+ -c \"ip rip authentication string $VAR(@)\"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..3ec8041e
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: Set Routing Information Protocol (RIP) parameters for specified interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/disable/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/disable/node.def
new file mode 100644
index 00000000..1ca1dd11
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/disable/node.def
@@ -0,0 +1,13 @@
+help: Disable split horizon on specified interface
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+commit:expression: ($VAR(../poison-reverse/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for PPPoE interface $VAR(../../../../@)"
+
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..ba39b616
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1 @@
+help: Set to control split horizon parameters on this interface
diff --git a/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..76b03e21
--- /dev/null
+++ b/templates/interfaces/bonding/node.tag/vif/node.tag/pppoe/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,13 @@
+help: Enable split-horizon with poison reverse
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface pppoe$VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" \
+ -c \"ip rip split-horizon \" "
+commit:expression: ($VAR(../disable/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for PPPoE interface $VAR(../../../../@)"
+
diff --git a/templates/interfaces/bridge/node.tag/disable-link-detect/node.def b/templates/interfaces/bridge/node.tag/disable-link-detect/node.def
new file mode 100644
index 00000000..83858ec1
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/disable-link-detect/node.def
@@ -0,0 +1,3 @@
+help: Set to ignore link state changes on this interface
+update:/opt/vyatta/sbin/vyatta-link-detect $VAR(../@) on
+delete:/opt/vyatta/sbin/vyatta-link-detect $VAR(../@) off
diff --git a/templates/interfaces/bridge/node.tag/ip/node.def b/templates/interfaces/bridge/node.tag/ip/node.def
new file mode 100644
index 00000000..92e252e1
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/node.def
@@ -0,0 +1 @@
+help: Set IPv4 parameters for specified interface
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.def
new file mode 100644
index 00000000..0d156a55
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.def
@@ -0,0 +1,23 @@
+tag:
+type: u32
+help: Set 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-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../../@) \" \
+ -c \"no ip ospf message-digest-key $VAR(@)\"; \
+ rm /tmp/ospf-md5.$PPID; \
+ else \
+ vyatta-vtysh -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/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
new file mode 100644
index 00000000..e007b689
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/md5-key/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set 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/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
new file mode 100644
index 00000000..d14a2583
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/key-id/node.tag/node.def
@@ -0,0 +1 @@
+help: Set md5 key
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/node.def
new file mode 100644
index 00000000..341af509
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/md5/node.def
@@ -0,0 +1,11 @@
+help: Set MD5 key id
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication message-digest\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \"; "
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/authentication/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/node.def
new file mode 100644
index 00000000..ff352a01
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/node.def
@@ -0,0 +1,2 @@
+help: Set OSPF interface authentication
+
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/authentication/plaintext-password/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..95215c89
--- /dev/null
+++ b/templates/interfaces/bridge/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-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip ospf authentication \" \
+ -c \"ip ospf authentication \" \
+ -c \"ip ospf authentication-key $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/bandwidth/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/bandwidth/node.def
new file mode 100644
index 00000000..309d2f17
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/bandwidth/node.def
@@ -0,0 +1,16 @@
+type: u32
+help: Set bandwidth for specified interface (kilobits/sec)
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10000000; \
+ "Must be between 1-10000000"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"bandwidth $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/cost/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/cost/node.def
new file mode 100644
index 00000000..d57876cd
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/cost/node.def
@@ -0,0 +1,11 @@
+type: u32
+help: Set interface cost
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf cost $VAR(@) \"; "
+delete:expression: "vyatta-vtysh -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf cost \"; "
+comp_help: possible completions:
+ <1-65535> Set Cost
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/dead-interval/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/dead-interval/node.def
new file mode 100644
index 00000000..5e4170cb
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/dead-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval after which a neighbor is declared dead
+default: 40
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf dead-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/hello-interval/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/hello-interval/node.def
new file mode 100644
index 00000000..885ccb43
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/hello-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval between hello packets
+default: 10
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@) \" \
+ -c \"ip ospf hello-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/mtu-ignore/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/mtu-ignore/node.def
new file mode 100644
index 00000000..1bce2ca9
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/mtu-ignore/node.def
@@ -0,0 +1,10 @@
+help: Disable Maximum Transmission Unit (MTU) mismatch detection
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf mtu-ignore\"; "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@)\" \
+ -c \"no ip ospf mtu-ignore\"; "
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/network/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/network/node.def
new file mode 100644
index 00000000..347aee8a
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/network/node.def
@@ -0,0 +1,20 @@
+type: txt
+help: Set 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-vtysh \
+ -c \"configure terminal\" \
+ -c \"interface $VAR(../../../@) \" \
+ -c \"ip ospf network $VAR(@) \"; "
+
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/node.def
new file mode 100644
index 00000000..1702547a
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/node.def
@@ -0,0 +1 @@
+help: Set Open Shortest Path First (OSPF) parameters for specified interface
diff --git a/templates/interfaces/bridge/node.tag/ip/ospf/priority/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/priority/node.def
new file mode 100644
index 00000000..32321e3b
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/priority/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set router priority
+default: 1
+syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf priority $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/retransmit-interval/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/retransmit-interval/node.def
new file mode 100644
index 00000000..a325fe38
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/retransmit-interval/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set interval between retransmitting lost link state advertisements
+default: 5
+syntax:expression: $VAR(@) >= 3 && $VAR(@) <= 65535; "Must be between 3-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf retransmit-interval $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/ospf/transmit-delay/node.def b/templates/interfaces/bridge/node.tag/ip/ospf/transmit-delay/node.def
new file mode 100644
index 00000000..2c64ca30
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/ospf/transmit-delay/node.def
@@ -0,0 +1,12 @@
+type: u32
+help: Set link state transmit delay
+default: 1
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Must be between 1-65535"
+update:expression: "vyatta-vtysh \
+ -c \"configure terminal\" -c \"interface $VAR(../../../@)\" \
+ -c \"ip ospf transmit-delay $VAR(@)\"; "
+delete:expression: "vyatta-vtysh \
+ -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/bridge/node.tag/ip/rip/authentication/md5/node.def b/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.def
new file mode 100644
index 00000000..8d165fe6
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.def
@@ -0,0 +1,8 @@
+tag:
+type: u32
+help: Set MD5 authentication key ID
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 255; \
+ "ID must be between 1 and 255"
+
+commit:expression: $VAR(../plaintext-password/) == "" ; \
+ "plaintext-password already set"
diff --git a/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/node.def b/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/node.def
new file mode 100644
index 00000000..488acd8c
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/node.def
@@ -0,0 +1 @@
+help: Set authentication password
diff --git a/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/password/node.def b/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
new file mode 100644
index 00000000..bcebd5ab
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/authentication/md5/node.tag/password/node.def
@@ -0,0 +1,23 @@
+type: txt
+help: Set 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-vtysh \
+ -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-vtysh --noerror \
+ -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/bridge/node.tag/ip/rip/authentication/node.def b/templates/interfaces/bridge/node.tag/ip/rip/authentication/node.def
new file mode 100644
index 00000000..8756de35
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/authentication/node.def
@@ -0,0 +1 @@
+help: Set authentication method
diff --git a/templates/interfaces/bridge/node.tag/ip/rip/authentication/plaintext-password/node.def b/templates/interfaces/bridge/node.tag/ip/rip/authentication/plaintext-password/node.def
new file mode 100644
index 00000000..e21e5878
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/authentication/plaintext-password/node.def
@@ -0,0 +1,22 @@
+type: txt
+help: Set 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 ; "
+
+commit:expression: $VAR(../md5/) == "" ; "md5 password already set"
+
+update: vyatta-vtysh \
+ -c "configure terminal" -c "interface $VAR(../../../../@)" \
+ -c "ip rip authentication mode text" \
+ -c "ip rip authentication string $VAR(@)";
+
+delete: vyatta-vtysh \
+ -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/bridge/node.tag/ip/rip/node.def b/templates/interfaces/bridge/node.tag/ip/rip/node.def
new file mode 100644
index 00000000..d1f72a5f
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/node.def
@@ -0,0 +1 @@
+help: Set Routing Information Protocol (RIP) for specified interface
diff --git a/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/disable/node.def b/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/disable/node.def
new file mode 100644
index 00000000..f40e77d1
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/disable/node.def
@@ -0,0 +1,12 @@
+help: Disable split horizon on specified interface
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"ip rip split-horizon \" "
+
+commit:expression: ($VAR(../poison-reverse/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for ethernet interface $VAR(../../../../@)"
diff --git a/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/node.def b/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/node.def
new file mode 100644
index 00000000..ba39b616
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/node.def
@@ -0,0 +1 @@
+help: Set to control split horizon parameters on this interface
diff --git a/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/poison-reverse/node.def b/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/poison-reverse/node.def
new file mode 100644
index 00000000..f608d9c3
--- /dev/null
+++ b/templates/interfaces/bridge/node.tag/ip/rip/split-horizon/poison-reverse/node.def
@@ -0,0 +1,14 @@
+help: Enable poison reverse for split-horizon
+create:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"ip rip split-horizon poisoned-reverse \" "
+
+delete:expression: "vyatta-vtysh \
+ -c \"configure terminal \" \
+ -c \"interface $VAR(../../../../@) \" \
+ -c \"no ip rip split-horizon \" \
+ -c \"ip rip split-horizon \" "
+
+commit:expression: ($VAR(../disable/) == ""); "You cannot have 'split-horizon poison-reverse' enabled with 'split-horizon' disabled for ethernet interface $VAR(../../../../@)"
+
diff --git a/templates/protocols/bgp/disable/node.def b/templates/protocols/bgp/disable/node.def
deleted file mode 100644
index 2795453f..00000000
--- a/templates/protocols/bgp/disable/node.def
+++ /dev/null
@@ -1,12 +0,0 @@
-type: bool
-help: Disable BGP daemon
-default: false
-update: if [ $VAR(@) == "true" ];
- then sudo ${vyatta_sbindir}/vyatta-protocol stop bgpd
- else sudo ${vyatta_sbindir}/vyatta-protocol start bgpd
- fi
-possible completions:
- true Stop BGP daemon
- false Start BGP daemon
-
-allowed: echo "true false"
diff --git a/templates/protocols/bgp/node.def b/templates/protocols/bgp/node.def
index 803362db..91d7261b 100644
--- a/templates/protocols/bgp/node.def
+++ b/templates/protocols/bgp/node.def
@@ -4,7 +4,7 @@ help: Configure Border Gateway Protocol (BGP) parameters
comp_help: \1 <1-4294967294>\tAS number
syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4294967294 ; \
"AS number must be between 1 and 4294967294"
-begin: sudo /opt/vyatta/sbin/quagga-manager start bgpd
+create: sudo /opt/vyatta/sbin/quagga-manager start bgpd
update: vyatta-vtysh -c "configure terminal" -c "router bgp $VAR(@)"
# we need to set default parameters in BGP here since we can't do it in
# startup scripts as we don't know the AS number at that point
diff --git a/templates/protocols/ospf/node.def b/templates/protocols/ospf/node.def
index 731d39f1..1fd39bfe 100644
--- a/templates/protocols/ospf/node.def
+++ b/templates/protocols/ospf/node.def
@@ -1,5 +1,5 @@
help: Configure Open Shortest Path First protocol (OSPF) parameters
-begin: sudo /opt/vyatta/sbin/quagga-manager start ospfd
+create: sudo /opt/vyatta/sbin/quagga-manager start ospfd
create: vyatta-vtysh -c "configure terminal" -c "router ospf"
delete: vyatta-vtysh -c "configure terminal" -c "no router ospf"
end: sudo /opt/vyatta/sbin/quagga-manager update
diff --git a/templates/protocols/rip/node.def b/templates/protocols/rip/node.def
index b7f085a5..648ecf49 100644
--- a/templates/protocols/rip/node.def
+++ b/templates/protocols/rip/node.def
@@ -1,5 +1,5 @@
help: Configure Routing Information Protocol (RIP) parameters
-begin: sudo /opt/vyatta/sbin/quagga-manager start ripd
+create: sudo /opt/vyatta/sbin/quagga-manager start ripd
create: vyatta-vtysh -c "configure terminal" -c "router rip"
delete: vyatta-vtysh -c "configure terminal" -c "no router rip"
end: sudo /opt/vyatta/sbin/quagga-manager update