summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--templates/policy/as-path-list/node.tag/rule/node.tag/regex/node.def2
-rw-r--r--templates/policy/prefix-list/node.def2
-rw-r--r--templates/policy/prefix-list/node.tag/rule/node.def1
-rw-r--r--templates/policy/route-map/node.def3
-rw-r--r--templates/policy/route-map/node.tag/description/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.def5
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/action/node.def10
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/call/node.def15
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/continue/node.def18
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/description/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/as-path/node.def19
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/community/community-list/node.def6
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/community/exact-match/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/community/node.def6
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/interface/node.def20
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/access-list/node.def24
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/prefix-list/node.def21
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/access-list/node.def24
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/prefix-list/node.def21
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/access-list/node.def24
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/prefix-list/node.def21
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/metric/node.def18
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/node.def1
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/origin/node.def19
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/peer/node.def18
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/match/tag/node.def17
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/on-match/goto/node.def22
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/on-match/next/node.def18
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/on-match/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/as/node.def5
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/ip/node.def3
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/node.def32
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/as-path-prepend/node.def20
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/atomic-aggregate/node.def16
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/comm-list/node.def6
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/delete/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/node.def44
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/community/node.def22
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/ip-next-hop/node.def17
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/local-preference/node.def17
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/metric-type/node.def21
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/metric/node.def18
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/node.def2
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/origin/node.def19
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/originator-id/node.def17
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/tag/node.def17
-rw-r--r--templates/policy/route-map/node.tag/rule/node.tag/set/weight/node.def17
51 files changed, 363 insertions, 303 deletions
diff --git a/templates/policy/as-path-list/node.tag/rule/node.tag/regex/node.def b/templates/policy/as-path-list/node.tag/rule/node.tag/regex/node.def
index 6afc2c35..9b79e6b3 100644
--- a/templates/policy/as-path-list/node.tag/rule/node.tag/regex/node.def
+++ b/templates/policy/as-path-list/node.tag/rule/node.tag/regex/node.def
@@ -1,6 +1,6 @@
type: txt
help: match against an AS path regular expression
-comp_help: \1 <txt>\t\tas-path regular expression
+comp_help: \1 <aa:nn>\tas-path regular expression (ex: "50:1 6553:1201")
# TODO: check regex syntax; \
# "invalid chars in regex syntax"
commit:expression: $VAR(../action/@) != ""; "policy as-path-list $VAR(../../@) rule $VAR(../@): You must specify an action"
diff --git a/templates/policy/prefix-list/node.def b/templates/policy/prefix-list/node.def
index eec6608e..1680a287 100644
--- a/templates/policy/prefix-list/node.def
+++ b/templates/policy/prefix-list/node.def
@@ -1,5 +1,5 @@
tag:
type: txt
help: IP prefix-list filter
-comp_help: \1 <txt> prefix-list list name
+comp_help: \1 <txt>\tprefix-list list name
syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9.]+$" ; "prefix-list name must be alpha-numeric"
diff --git a/templates/policy/prefix-list/node.tag/rule/node.def b/templates/policy/prefix-list/node.tag/rule/node.def
index 4813f596..f68dce7e 100644
--- a/templates/policy/prefix-list/node.tag/rule/node.def
+++ b/templates/policy/prefix-list/node.tag/rule/node.def
@@ -2,6 +2,7 @@ tag:
type: u32
help: create a rule for this prefix-list
comp_help: \1 <1-65535>\tprefix-list rule number
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "rule number must be between 1 and 65535"
commit:expression: $VAR(./prefix/) != ""; "policy prefix-list $VAR(../@) rule $VAR(@): You must specify a prefix"
commit:expression: $VAR(./action/) != ""; "policy prefix-list $VAR(../@) rule $VAR(@): You must specify an action"
delete: touch /tmp/protocols-$VAR(../@)-$VAR(@).$PPID ;
diff --git a/templates/policy/route-map/node.def b/templates/policy/route-map/node.def
index dfdc6494..64161140 100644
--- a/templates/policy/route-map/node.def
+++ b/templates/policy/route-map/node.def
@@ -1,4 +1,5 @@
tag:
type: txt
-help: Create route-map or enter route-map command mode
+help: IP route-map
+comp_help: \1 <txt>\t\troute-map name
syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9.]+$" ; "route-map $VAR(@): name must be alpha-numeric"
diff --git a/templates/policy/route-map/node.tag/description/node.def b/templates/policy/route-map/node.tag/description/node.def
index b2a5d581..77835b24 100644
--- a/templates/policy/route-map/node.tag/description/node.def
+++ b/templates/policy/route-map/node.tag/description/node.def
@@ -1,2 +1,2 @@
type: txt
-help: Route map description
+help: set a description for this access-list
diff --git a/templates/policy/route-map/node.tag/rule/node.def b/templates/policy/route-map/node.tag/rule/node.def
index b5a8e367..081ea884 100644
--- a/templates/policy/route-map/node.tag/rule/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.def
@@ -1,7 +1,8 @@
tag:
type: u32
-help: Specify route-map rule number
-syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "route-map $VAR(../@): rule number $VAR(@) must be between 1 and 65535"
+help: create a rule for this access-list
+comp_help: \1 <1-65535>\troute-map rule number
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "rule number must be between 1 and 65535"
delete: if [ -f /tmp/route-map-$VAR(../@)-rule-$VAR(@)-action.$PPID ]; then
${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" -c "no route-map $VAR(../@) $VAR(./@/action/@) $VAR(@)";
rm -f /tmp/route-map-$VAR(../@)-rule-$VAR(@)-action.$PPID;
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/action/node.def b/templates/policy/route-map/node.tag/rule/node.tag/action/node.def
index 3967558c..6b744ae8 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/action/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/action/node.def
@@ -1,11 +1,13 @@
type: txt
-help: Action to take on prefixes matching this rule
-syntax:expression: $VAR(@) in "permit", "deny"; "route-map $VAR(../../@) $VAR(@) $VAR(../@) action: must be permit or deny"
+help: action to take on prefixes matching this rule
+comp_help: \1 permit\tpermit matching prefixes
+ deny\t\tdeny matching prefixes
+syntax:expression: $VAR(@) in "permit", "deny"; "action must be permit or deny"
update: /opt/vyatta/sbin/vyatta-policy.pl --check-routemap-action "policy route-map $VAR(../../@) rule $VAR(../@) action";
if [ $? -eq 0 ]; then
${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" -c "route-map $VAR(../../@) $VAR(@) $VAR(../@)";
else
- echo " You can not change the action for \"route-map $VAR(../../@) rule $VAR(../@)\".";
+ echo "policy route-map $VAR(../../@) rule $VAR(../@): You can not change the action.";
echo " To change the action you must first delete the rule ";
echo -e " \"delete route-map $VAR(../../@) rule $VAR(../@)\" and commit it. \\n";
exit 1;
@@ -14,7 +16,7 @@ delete: /opt/vyatta/sbin/vyatta-policy.pl --check-delete-routemap-action "policy
if [ $? -eq 0 ]; then
touch /tmp/route-map-$VAR(../../@)-rule-$VAR(../@)-action.$PPID ;
else
- echo " Action is a required node for \"route-map $VAR(../../@) rule $VAR(../@)\". ";
+ echo "policy route-map $VAR(../../@) rule $VAR(../@): Action is a required parameter. ";
echo -e " To delete that node you must delete \"route-map $VAR(../../@) rule $VAR(../@)\". \\n";
exit 1;
fi;
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/call/node.def b/templates/policy/route-map/node.tag/rule/node.tag/call/node.def
index ee36359e..a80ea711 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/call/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/call/node.def
@@ -1,8 +1,9 @@
type: txt
-help: Target route-map name
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" "; "route-map $VAR(@) doesn't exist"
-commit:expression: $VAR(../action/) != ""; "must define an action for route-map $VAR(../../@) rule $VAR(../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" -c \"route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)\" \
- -c \"call $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" -c \"route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)\" \
- -c \"no call \" "
+help: call another route-map on match
+comp_help: \1 <txt>\t\troute-map name
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" "; "policy route-map $VAR(../../@) rule $VAR(../@) call: called route-map $VAR(@) doesn't exist"
+commit:expression: $VAR(../action/) != ""; "policy route-map $VAR(../../@) rule $VAR(../@): you must define an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" -c "route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)" \
+ -c "call $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" -c "route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)" \
+ -c "no call "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/continue/node.def b/templates/policy/route-map/node.tag/rule/node.tag/continue/node.def
index a8616682..4b7f500d 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/continue/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/continue/node.def
@@ -1,10 +1,12 @@
type: u32
-help: Continue on a different entry within the route-map
+help: jump to a different rule in this route-map on a match
+comp_help: \1 <1-65535>\trule number
syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "continue must be between 1 and 65535"
-syntax:expression: $VAR(@) > $VAR(../../@); "you may only continue forward in the route-map"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\"
- -c \"route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)\" \
- -c \"continue $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\"
- -c \"route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)\" \
- -c \"no continue \" "
+commit:expression: $VAR(@) > $VAR(../@); "you may only continue forward in the route-map"
+commit:expression: $VAR(../action/) != ""; "policy route-map $VAR(../../@) rule $VAR(../@): you must define an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)" \
+ -c "continue $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../@) $VAR(../action/@) $VAR(../@)" \
+ -c "no continue "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/description/node.def b/templates/policy/route-map/node.tag/rule/node.tag/description/node.def
index 9d03b86c..562ab020 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/description/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/description/node.def
@@ -1,2 +1,2 @@
type: txt
-help: Route map rule description
+help: set a description for this rule
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/as-path/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/as-path/node.def
index 5df86392..18d88542 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/as-path/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/as-path/node.def
@@ -1,10 +1,11 @@
type: txt
-help: Match BGP AS path list
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" "; "AS path list $VAR(@) doesn't exist"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"match as-path $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no match as-path $VAR(@)\" "
+help: match against a BGP as-path-list
+comp_help: \1 <txt>\t\tas-path-list name
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): You must specify an action"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" "; "policy route-map $VAR(../../../@) rule $VAR(../../@) match as-path: AS path list $VAR(@) doesn't exist"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "match as-path $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no match as-path $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/community/community-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/community/community-list/node.def
index a167e553..a586b6c3 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/community/community-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/community/community-list/node.def
@@ -1,3 +1,5 @@
type: u32
-help: Match community list
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy community-list $VAR(@)\" "; "community-list $VAR(@) doesn't exist"
+help: match against a BGP community-list
+comp_help: \1 <1-99>\tBGP community list (standard)
+ <100-500>\tBGP community list (expanded)
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy community-list $VAR(@)\" "; "policy route-map $VAR(../../../../@) rule $VAR(../../../@) match community: community-list $VAR(@) doesn't exist"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/community/exact-match/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/community/exact-match/node.def
index 41922336..b145701c 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/community/exact-match/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/community/exact-match/node.def
@@ -1 +1 @@
-help: Do exact matching of communities
+help: match an exact matching of the community-list
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/community/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/community/node.def
index 7c6f91c4..e97b21ea 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/community/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/community/node.def
@@ -1,4 +1,4 @@
-help: Match BGP community list
+help: match a BGP community-list
delete: echo route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@) >> /tmp/delete-policy-route-map-$VAR(../../../@)-$VAR(../../@)-match-community.$PPID
end: if [ -f /tmp/delete-policy-route-map-$VAR(../../../@)-$VAR(../../@)-match-community.$PPID ]; then
routemap=`cat /tmp/delete-policy-route-map-$VAR(../../../@)-$VAR(../../@)-match-community.$PPID`
@@ -7,11 +7,11 @@ end: if [ -f /tmp/delete-policy-route-map-$VAR(../../../@)-$VAR(../../@)-match-
exit 0;
else
if [ -z "$VAR(./community-list/@)" ]; then
- echo route-map $VAR(../../../@) rule $VAR(../../@) match community: You must configure a community-list ;
+ echo route-map $VAR(../../../@) rule $VAR(../../@) match community: you must configure a community-list ;
exit 1 ;
fi ;
if [ -z "$VAR(../../action/@)" ]; then
- echo route-map $VAR(../../../@) rule $VAR(../../@): You must configure an action ;
+ echo route-map $VAR(../../../@) rule $VAR(../../@): you must configure an action ;
exit 1 ;
fi ;
routemap='route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)';
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/interface/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/interface/node.def
index 782fdea0..27dd26ba 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/interface/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/interface/node.def
@@ -1,15 +1,15 @@
type: txt
-help: Match first hop interface of route
-# TODO: this node isn't returning an error, but it also isn't adding anything to vyatta
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
+help: match the first hop interface of a route
+comp_help: \1 <txt>\t\tinterface name
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): You must specify an action"
syntax:expression: exec " \
if [ -z \"`ip addr | grep $VAR(@) `\" ]; then \
- echo $VAR(@) doesn\\'t exist on this system ; \
+ echo policy route-map $VAR(../../../@) rule $VAR(../../@) match interface: interface $VAR(@) doesn\\'t exist on this system ; \
exit 1 ; \
fi ; "
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"match interface $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no match interface $VAR(@)\" "
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "match interface $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no match interface $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/access-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/access-list/node.def
index b9335c70..46e92a4d 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/access-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/access-list/node.def
@@ -1,11 +1,15 @@
type: u32
-help: access-list number
-commit:expression: $VAR(../prefix-list/) == ""; "You may only specify a prefix-list or access-list"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; "access-list $VAR(@) does not exist"
-commit:expression: $VAR(../../../../action/) != ""; "You must specify an action for route-map $VAR(../../../../../@) rule $VAR(../../../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"match ip address $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"no match ip address $VAR(@)\" "
+help: match against an IP access-list
+comp_help: \1 <1-99>\tIP standard access list number
+ <100-199>\tIP extended access list number
+ <1300-1999>\tIP standard access list number (expanded range)
+ <2000-2699>\tIP extended access list number (expanded range)
+commit:expression: $VAR(../prefix-list/) == ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip address access-list: you may only specify a prefix-list or access-list"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip address access-list: access-list $VAR(@) does not exist"
+commit:expression: $VAR(../../../../action/) != ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "match ip address $VAR(@) "
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "no match ip address $VAR(@) "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/node.def
index a90f87be..9785335b 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/node.def
@@ -1 +1 @@
-help: Match address of route
+help: match IP address of route
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/prefix-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/prefix-list/node.def
index c3ab9b28..f3bea4ca 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/prefix-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/address/prefix-list/node.def
@@ -1,11 +1,12 @@
type: txt
-help: prefix-list name
-commit:expression: $VAR(../access-list/) == ""; "You can only specify a prefix-list or access-list"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; "prefix-list $VAR(@) does not exist"
-commit:expression: $VAR(../../../../action/) != ""; "You must specify an action for route-map $VAR(../../../../../@) rule $VAR(../../../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"match ip address prefix-list $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"no match ip address prefix-list $VAR(@)\" "
+help: match against an IP prefix-list
+comp_help: \1 <txt>\t\tprefix-list name
+commit:expression: $VAR(../access-list/) == ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip address prefix-list: you may only specify a prefix-list or access-list"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip address prefix-list: prefix-list $VAR(@) does not exist"
+commit:expression: $VAR(../../../../action/) != ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "match ip address prefix-list $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "no match ip address prefix-list $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/access-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/access-list/node.def
index 6bcb4a3c..605cb15f 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/access-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/access-list/node.def
@@ -1,11 +1,15 @@
type: u32
-help: access-list number
-commit:expression: $VAR(../prefix-list/) == ""; "You may only specify a prefix-list or access-list"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; "access-list $VAR(@) does not exist"
-commit:expression: $VAR(../../../../action/) != ""; "You must specify an action for route-map $VAR(../../../../../@) rule $VAR(../../../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"match ip next-hop $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"no match ip next-hop $VAR(@)\" "
+help: match against an IP access-list
+comp_help: \1 <1-99>\tIP standard access list number
+ <100-199>\tIP extended access list number
+ <1300-1999>\tIP standard access list number (expanded range)
+ <2000-2699>\tIP extended access list number (expanded range)
+commit:expression: $VAR(../prefix-list/) == ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip nexthop access-list: you may only specify a prefix-list or access-list"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip nexthop access-list: access-list $VAR(@) does not exist"
+commit:expression: $VAR(../../../../action/) != ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "match ip next-hop $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "no match ip next-hop $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/node.def
index b0439561..7e174582 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/node.def
@@ -1 +1 @@
-help: Match next-hop address of route
+help: match IP next-hop of route
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/prefix-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/prefix-list/node.def
index 346794ca..619cb178 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/prefix-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/nexthop/prefix-list/node.def
@@ -1,11 +1,12 @@
type: txt
-help: prefix-list name
-commit:expression: $VAR(../access-list/) == ""; "You can only specify a prefix-list or access-list"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; "prefix-list $VAR(@) does not exist"
-commit:expression: $VAR(../../../../action/) != ""; "You must specify an action for route-map $VAR(../../../../../@) rule $VAR(../../../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"match ip next-hop prefix-list $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"no match ip next-hop prefix-list $VAR(@)\" "
+help: match against an IP prefix-list
+comp_help: \1 <txt>\t\tprefix-list name
+commit:expression: $VAR(../access-list/) == ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip nexthop prefix-list: you can only specify a prefix-list or access-list"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip nexthop prefix-list: prefix-list $VAR(@) does not exist"
+commit:expression: $VAR(../../../../action/) != ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "match ip next-hop prefix-list $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "no match ip next-hop prefix-list $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/node.def
index 6cea7554..5537a779 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/node.def
@@ -1 +1 @@
-help: IP information
+help: match IP prefix parameters
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/access-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/access-list/node.def
index 85bcf447..ecbefe89 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/access-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/access-list/node.def
@@ -1,11 +1,15 @@
type: u32
-help: access-list number
-commit:expression: $VAR(../prefix-list/) == ""; "You may only specify a prefix-list or access-list"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; "access-list $VAR(@) does not exist"
-commit:expression: $VAR(../../../../action/) != ""; "You must specify an action for route-map $VAR(../../../../../@) rule $VAR(../../../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"match ip route-source $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"no match ip route-source $VAR(@)\" "
+help: match against an IP access-list
+comp_help: \1 <1-99>\tIP standard access list number
+ <100-199>\tIP extended access list number
+ <1300-1999>\tIP standard access list number (expanded range)
+ <2000-2699>\tIP extended access list number (expanded range)
+commit:expression: $VAR(../prefix-list/) == ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip route-source access-list: you may only specify a prefix-list or access-list"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip route-source access-list: access-list $VAR(@) does not exist"
+commit:expression: $VAR(../../../../action/) != ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "match ip route-source $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "no match ip route-source $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/node.def
index 084598c8..6b45a452 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/node.def
@@ -1 +1 @@
-help: Match route-source
+help: match IP route-source
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/prefix-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/prefix-list/node.def
index 2db6c602..f7f2adf6 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/prefix-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/ip/route-source/prefix-list/node.def
@@ -1,11 +1,12 @@
type: txt
-help: prefix-list name
-commit:expression: $VAR(../access-list/) == ""; "You can only specify a prefix-list or access-list"
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; "prefix-list $VAR(@) does not exist"
-commit:expression: $VAR(../../../../action/) != ""; "You must specify an action for route-map $VAR(../../../../../@) rule $VAR(../../../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"match ip route-source prefix-list $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)\" \
- -c \"no match ip route-source prefix-list $VAR(@)\" "
+help: match against an IP prefix-list
+comp_help: \1 <txt>\t\tprefix-list name
+commit:expression: $VAR(../access-list/) == ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip route-source prefix-list: you can only specify a prefix-list or access-list"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip route-source prefix-list: prefix-list $VAR(@) does not exist"
+commit:expression: $VAR(../../../../action/) != ""; "policy route-map $VAR(../../../../../@) rule $VAR(../../../../@) match ip route-source prefix-list: you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "match ip route-source prefix-list $VAR(@)"
+delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal" \
+ -c "route-map $VAR(../../../../../@) $VAR(../../../../action/@) $VAR(../../../../@)" \
+ -c "no match ip route-source prefix-list $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/metric/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/metric/node.def
index ec674ef1..da0877e0 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/metric/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/metric/node.def
@@ -1,10 +1,12 @@
type: u32
-help: Match metric of route
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"match metric $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no match metric $VAR(@)\" "
+help: match metric of route
+comp_help: \1 <1-65535>\troute metric
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "metric must be between 1 and 65535"
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "match metric $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no match metric $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/node.def
new file mode 100644
index 00000000..be9f97f7
--- /dev/null
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/node.def
@@ -0,0 +1 @@
+help: match against route parameters
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/origin/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/origin/node.def
index 1c7a5919..122c3500 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/origin/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/origin/node.def
@@ -1,11 +1,14 @@
type: txt
-help: BGP origin code
+help: match BGP origin code
+comp_help: \1 egp\t\texterior gateway protocol origin
+ igp\t\tinterior gateway protocol origin
+ incomplete\tincomplete origin
syntax:expression: $VAR(@) in "egp", "igp", "incomplete"; "origin must be egp, igp, or incomplete"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"match origin $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no match origin $VAR(@)\" "
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "match origin $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no match origin $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/peer/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/peer/node.def
index 696f2d93..fe5f872d 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/peer/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/peer/node.def
@@ -1,11 +1,13 @@
type: txt
-help: Match peer address
+help: match peer address
+comp_help: \1 <x.x.x.x>\tpeer IP address
+ local\t\tstatic or redistributed routes
syntax:expression: exec "/opt/vyatta/sbin/vyatta-policy.pl --check-peer-syntax $VAR(@)"; "peer must be either an IP or local"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"match peer $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no match peer \" "
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "match peer $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no match peer "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/match/tag/node.def b/templates/policy/route-map/node.tag/rule/node.tag/match/tag/node.def
index af88a29f..a113ed3c 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/match/tag/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/match/tag/node.def
@@ -1,11 +1,12 @@
type: u32
-help: Match tag of route
+help: match route tag
+comp_help: \1 <1-65535>\troute tag
syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "tag must be between 1 and 65535"
-commit:expression: $VAR(../../action) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"match tag $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no match tag $VAR(@)\" "
+commit:expression: $VAR(../../action) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "match tag $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no match tag $VAR(@)"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/on-match/goto/node.def b/templates/policy/route-map/node.tag/rule/node.tag/on-match/goto/node.def
index 2203a9d6..caa5355e 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/on-match/goto/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/on-match/goto/node.def
@@ -1,11 +1,13 @@
type: u32
-help: Goto sequence number
-syntax:expression: $VAR(../next/) == ""; "you can set only goto or next"
-syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "tag must be between 1 and 65535"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"on-match goto $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no on-match goto \" "
+help: on match goto rule number
+comp_help: \1 <1-65535>\trule number
+syntax:expression: $VAR(../next/) == ""; "you may set only goto or next"
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "goto must be a rule number between 1 and 65535"
+commit:expression: $VAR(@) > $VAR(../../@); "policy route-map $VAR(../../../@) rule $VAR(../../@): you may only go forward in the route-map"
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "on-match goto $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no on-match goto "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/on-match/next/node.def b/templates/policy/route-map/node.tag/rule/node.tag/on-match/next/node.def
index 1e7e9bbe..1bbc62a6 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/on-match/next/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/on-match/next/node.def
@@ -1,10 +1,10 @@
-help: Goto next sequence number
-syntax:expression: $VAR(../goto/) == ""; "you can set only goto or next"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"on-match next \" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no on-match next \" "
+help: on match goto next sequence number
+syntax:expression: $VAR(../goto/) == ""; "you may set only goto or next"
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "on-match next "
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no on-match next "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/on-match/node.def b/templates/policy/route-map/node.tag/rule/node.tag/on-match/node.def
index 718fe124..322f8267 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/on-match/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/on-match/node.def
@@ -1 +1 @@
-help: Exit policy on matches
+help: set the exit policy on matches
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/as/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/as/node.def
index e0d63209..666dc54b 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/as/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/as/node.def
@@ -1,3 +1,4 @@
type: u32
-help: AS number of aggregator
-syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4294967294; "AS number must be between 1 and 4294967294"
+help: set the AS number of an aggregation
+comp_help: \1 <1-65535>\tBGP AS number
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4294967294; "BGP AS number must be between 1 and 4294967294"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/ip/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/ip/node.def
index 59f601c8..c6a6e878 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/ip/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/ip/node.def
@@ -1,2 +1,3 @@
type: ipv4
-help: IP address of aggregator
+help: set the IP address of an aggregation
+comp_help: \1 <x.x.x.x>\tIP address
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/node.def
index 84cca487..f24c09b3 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/aggregator/node.def
@@ -1,16 +1,16 @@
-help: BGP aggregator attribute
-commit:expression: $VAR(./as/) != "" && $VAR(./ip/) != ""; "Must configure both as and ip"
-commit:expression: $VAR(../../action/) != ""; "Must configure an action"
-delete:expression: "echo $VAR(./as/@) $VAR(./ip/@) > /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID"
-end:expression: "if [ -f \"/tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID\" ]; then \
- as=$(cat /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID); \
- ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set aggregator as $as\" ; \
- rm -rf /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID; \
- else \
- as=\"$VAR(./as/@) $VAR(./ip/@)\"; \
- ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set aggregator as $as\" ; \
- fi ; "
+help: set the BGP aggregator attribute
+commit:expression: $VAR(./as/) != "" && $VAR(./ip/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@) set aggregator: you must configure both as and ip"
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must configure an action"
+delete: echo $VAR(./as/@) $VAR(./ip/@) > /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID
+end: if [ -f "/tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID" ]; then
+ as=$(cat /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID);
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set aggregator as $as" ;
+ rm -rf /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-aggregator.$PPID;
+ else
+ as="$VAR(./as/@) $VAR(./ip/@)";
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set aggregator as $as" ;
+ fi ;
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/as-path-prepend/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/as-path-prepend/node.def
index b9c1ae27..74f76321 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/as-path-prepend/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/as-path-prepend/node.def
@@ -1,11 +1,11 @@
type: txt
-help: Prepend string for a BGP AS-path attribute
-syntax:expression: exec "/opt/vyatta/sbin/vyatta-check-as-prepend.pl \"$VAR(@)\" "; "Invalid AS path."
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set as-path prepend $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set as-path prepend \" "
-comp_help: Enter a list of AS numbers to prepend. Use double quotes around the list (f.g. "456 64500 45001")
+help: set prepend string for a BGP AS-path attribute
+comp_help: \1 <txt>\t\tBGP AS path prepend string (ex: "456 64500 45001")
+syntax:expression: exec "/opt/vyatta/sbin/vyatta-check-as-prepend.pl \"$VAR(@)\" "; "invalid AS path string"
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set as-path prepend $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set as-path prepend "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/atomic-aggregate/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/atomic-aggregate/node.def
index 0cc8560b..bf2b5f26 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/atomic-aggregate/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/atomic-aggregate/node.def
@@ -1,8 +1,8 @@
-help: BGP atomic aggregate attribute
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set atomic-aggregate\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set atomic-aggregate\" "
+help: set BGP atomic aggregate attribute
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set atomic-aggregate"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set atomic-aggregate"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/comm-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/comm-list/node.def
index eed327b9..9153c209 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/comm-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/comm-list/node.def
@@ -1,3 +1,5 @@
type: u32
-help: Set BGP community list
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy community-list $VAR(@)\""; "community list $VAR(@) does not exist"
+help: set BGP communities with a community-list
+comp_help: \1 <1-99>\t\tBGP community list (standard)
+ <100-500>\t\tBGP community list (expanded)
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy community-list $VAR(@)\""; "policy route-map $VAR(../../../@) rule $VAR(../../@) set comm-list: community list $VAR(@) does not exist"
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/delete/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/delete/node.def
index 000d8d23..3fe495f2 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/delete/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/delete/node.def
@@ -1 +1 @@
-help: Delete matching communities
+help: delete BGP communities matching the community-list
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/node.def
index 0dea5ab1..53f33fa2 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/comm-list/node.def
@@ -1,20 +1,24 @@
-help: Set BGP community list
-delete:expression: "touch /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-comm-list.$PPID"
-## this will always return delete pending bug 2525 being fixed
-end:expression: "if [ -z \"$VAR(./comm-list/)\" ]; then \
- echo You must configure a comm-list ; \
- exit 1 ; \
- fi ; \
- ${vyatta_sbindir}/vyatta-vtysh.pl -noerr -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set comm-list \" ; \
- if [ -f \"/tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-comm-list.$PPID\" ]; then \
- rm -rf /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-comm-list.$PPID; \
- else \
- if [ -n \"$VAR(./delete/)\" ]; then \
- cond=\"delete\" ; \
- fi ; \
- ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set comm-list $VAR(./comm-list/@) $cond\" ; \
- fi; "
+help: set or delete BGP communities matching a community-list
+delete: touch /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-comm-list.$PPID
+end: if [ -z "$VAR(./comm-list/)" ]; then
+ echo policy route-map $VAR(../../../@) rule $VAR(../../@) set comm-list: You must configure a comm-list ;
+ exit 1 ;
+ fi ;
+ ${vyatta_sbindir}/vyatta-vtysh.pl -noerr -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set comm-list " ;
+ if [ -f "/tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-comm-list.$PPID" ]; then
+ rm -rf /tmp/policy-route-map-$VAR(../../../@)-$VAR(../../action/@)-$VAR(../../@)-set-comm-list.$PPID;
+ else
+ # uncomment this when 2525 is fixed and comment out the subsequent call
+ #if [ -n "$VAR(./delete/)" ]; then
+ # cond="delete" ;
+ #fi ; \
+ ${vyatta_sbindir}/vyatta-check-typeless-node.pl "policy route-map $VAR(../../../@) rule $VAR(../../@) set comm-list delete";
+ if [ $? -eq 0 ]; then
+ cond="delete ";
+ fi ;
+ ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set comm-list $VAR(./comm-list/@) $cond" ;
+ fi;
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/community/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/community/node.def
index 83c93e8c..cf05d819 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/community/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/community/node.def
@@ -1,9 +1,15 @@
type: txt
-help: Community number in aa:nn format or local-AS|no-advertise|no-export|internet|additive or none
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set community $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set community \" "
+help: set the BGP community attribute
+comp_help: \1 <AA:NN>\t\tcommunity in 4 octet AS:value format
+ additive\t\tcommunities are appended to existing community string
+ internet\t\tsymbolic Internet community 0
+ local-AS\t\tadvertise communities in local AS only (NO_EXPORT_SUBCONFED)
+ no-advertise\tdon't advertise this route to any peer (NO_ADVERTISE)
+ no-export\t\tdon't advertise outside of this AS of confederation boundry (NO_EXPORT)
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): You must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set community $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set community "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/ip-next-hop/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/ip-next-hop/node.def
index 05438de7..7ee9cc5d 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/ip-next-hop/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/ip-next-hop/node.def
@@ -1,10 +1,11 @@
type: ipv4
-help: Next hop IP address
+help: set nexthop IP address
+comp_help: \1 <x.x.x.x>\tIP address
# TODO: can also set to peer for BGP
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set ip next-hop $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set ip next-hop \" "
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set ip next-hop $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set ip next-hop "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/local-preference/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/local-preference/node.def
index 678f081b..37bb016f 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/local-preference/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/local-preference/node.def
@@ -1,9 +1,10 @@
type: u32
-help: BGP local preference path attribute
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set local-preference $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set local-preference \" "
+help: set BGP local preference attribute
+comp_help: \1 <0-4294967295>\tlocal preference value
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set local-preference $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set local-preference "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/metric-type/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/metric-type/node.def
index 318def7e..84f6c4f0 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/metric-type/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/metric-type/node.def
@@ -1,13 +1,12 @@
type: txt
-help: Set OSPF external metric-type
+help: set OSPF external metric-type
+comp_help: \1 type-1\tOSPF external type 1 metric
+ type-2\tOSPF external type 2 metric
syntax:expression: $VAR(@) in "type-1", "type-2"; "Must be (type-1, type-2)"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set metric-type $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set metric-type \" "
-comp_help: possible completions:
- type-1 OSPF external type 1 metric
- type-2 OSPF external type 2 metric
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set metric-type $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set metric-type "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/metric/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/metric/node.def
index c16e4faf..67ee3415 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/metric/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/metric/node.def
@@ -1,10 +1,12 @@
type: txt
-help: Metric value for destination routing protocol
+help: set destination routing protocol metric
+comp_help: \1 <+/-metric>\tadd or subtract metric
+ <0-4294967295>\tmetric value
syntax:expression: exec "if [ -n \"$(echo $VAR(@) | sed 's/^[+-]*[0123456789]*//')\" ]; then exit 1; fi; "; "metric must be an integer with an optional +/- prepend"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set metric $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set metric \" "
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set metric $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set metric "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/node.def
index 80487db0..cb0a7dcd 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/node.def
@@ -1 +1 @@
-help: Set values in destination routing protocol
+help: set route parameters
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/origin/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/origin/node.def
index 7fa269eb..4feb9c3d 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/origin/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/origin/node.def
@@ -1,10 +1,13 @@
type: txt
-help: BGP origin code
+help: set BGP origin code
+comp_help: \1 igp\t\tinterior gateway protocol origin
+ egp\t\texterior gateway protocol origin
+ incomplete\tincomplete origin
syntax:expression: $VAR(@) in "igp", "egp", "incomplete"; "origin must be one of igp, egp, or incomplete"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set origin $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set origin \" "
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set origin $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set origin "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/originator-id/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/originator-id/node.def
index f82602c4..471d6c3e 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/originator-id/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/originator-id/node.def
@@ -1,9 +1,10 @@
type: ipv4
-help: BGP originator ID attribute
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set originator-id $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set originator-id \" "
+help: set BGP originator ID attribute
+comp_help: \1 <x.x.x.x>\toriginator IP address
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set originator-id $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set originator-id "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/tag/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/tag/node.def
index 9a74d304..5779477f 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/tag/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/tag/node.def
@@ -1,10 +1,11 @@
type: u32
-help: Tag value for routing protocol
+help: set tag value for routing protocol
+comp_help: \1 <1-65535>\t\ttag value
syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "tag must be between 1 and 65535"
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set tag $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set tag \" "
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set tag $VAR(@)"
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set tag "
diff --git a/templates/policy/route-map/node.tag/rule/node.tag/set/weight/node.def b/templates/policy/route-map/node.tag/rule/node.tag/set/weight/node.def
index 035d8e38..1edfd480 100644
--- a/templates/policy/route-map/node.tag/rule/node.tag/set/weight/node.def
+++ b/templates/policy/route-map/node.tag/rule/node.tag/set/weight/node.def
@@ -1,9 +1,10 @@
type: u32
-help: BGP weight for routing table
-commit:expression: $VAR(../../action/) != ""; "You must specify an action for route-map $VAR(../../../@) rule $VAR(../../@)"
-update:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"set weight $VAR(@)\" "
-delete:expression: "${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" \
- -c \"route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)\" \
- -c \"no set weight \" "
+help: set BGP weight attribute
+comp_help: \1 <0-4294967295>\tBGP weight
+commit:expression: $VAR(../../action/) != ""; "policy route-map $VAR(../../../@) rule $VAR(../../@): you must specify an action"
+update: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "set weight $VAR(@) "
+delete: ${vyatta_sbindir}/vyatta-vtysh.pl -c "configure terminal" \
+ -c "route-map $VAR(../../../@) $VAR(../../action/@) $VAR(../../@)" \
+ -c "no set weight "