summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Vyatta/Quagga/Config.pm4
-rwxr-xr-xscripts/bgp/vyatta-bgp.pl361
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/aggregate-address/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/aggregate-address/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/aggregate-address/node.tag/summary-only/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/aggregate-address/node.tag/summary-only/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/network/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/network/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/metric/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/connected/metric/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/connected/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/route-map/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/route-map/node.def)2
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/metric/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/metric/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/route-map/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/connected/route-map/node.def)2
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/metric/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/metric/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/route-map/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/route-map/node.def)2
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/metric/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/metric/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/route-map/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/static/route-map/node.def)2
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/metric/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/static/metric/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/static/node.def)0
-rw-r--r--templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/route-map/node.def (renamed from templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/route-map/node.def)2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def6
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def13
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/export/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/import/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-self/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def12
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def13
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/remove-private-as/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/export/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/import/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-server-client/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def6
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def13
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/export/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/import/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-self/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def12
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def13
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/remove-private-as/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/export/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/import/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-server-client/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/number/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/as-path/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/med/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/next-hop/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/capability/dynamic/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/capability/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/receive/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/send/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/route-map/node.def7
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/description/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/disable-capability-negotiation/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/disable-connected-check/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/export/node.def14
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/import/node.def10
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/ebgp-multihop/node.def6
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/export/node.def10
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/import/node.def10
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.def8
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.tag/no-prepend/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/maximum-prefix/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/nexthop-self/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/override-capability/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/passive/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/password/node.def7
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/export/node.def13
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/import/node.def14
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/remote-as/node.def6
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/remove-private-as/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/export/node.def10
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/import/node.def10
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/node.def1
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/route-reflector-client/node.def4
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/route-server-client/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/shutdown/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/inbound/node.def3
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/node.def2
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/timers/connect/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/timers/holdtime/node.def5
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/timers/keepalive/node.def4
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/timers/node.def6
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/unsuppress-map/node.def9
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/update-source/node.def7
-rw-r--r--templates/protocols/bgp/node.tag/peer-group/node.tag/weight/node.def5
152 files changed, 868 insertions, 58 deletions
diff --git a/lib/Vyatta/Quagga/Config.pm b/lib/Vyatta/Quagga/Config.pm
index 107731fe..a1e76f80 100644
--- a/lib/Vyatta/Quagga/Config.pm
+++ b/lib/Vyatta/Quagga/Config.pm
@@ -30,6 +30,7 @@ my %_vtysh;
my %_vtyshdel;
my $_qcomref = '';
my $_qcomdelref = '';
+my $_vtyshexe = '/usr/bin/vtysh';
### Public methods -
# Create the class.
@@ -187,7 +188,7 @@ sub cmpb { $b cmp $a }
sub _sendQuaggaCommand {
my ($command) = @_;
my $section;
- my $args = "/usr/sbin/vtysh --noerr -c 'configure terminal' ";
+ my $args = "$_vtyshexe --noerr -c 'configure terminal' ";
my @commands = split / ; /, $command;
foreach $section (@commands) {
@@ -195,6 +196,7 @@ sub _sendQuaggaCommand {
}
if ($_DEBUG >= 2) { print "DEBUG: _sendQuaggaCommand - args prior to system call - $args\n"; }
+ # TODO: need to fix this system call. split into command and args.
system("$args");
if ($? != 0) {
# TODO: note that DEBUG will never happen here with --noerr as an argument.
diff --git a/scripts/bgp/vyatta-bgp.pl b/scripts/bgp/vyatta-bgp.pl
index 69518b28..dc688729 100755
--- a/scripts/bgp/vyatta-bgp.pl
+++ b/scripts/bgp/vyatta-bgp.pl
@@ -44,28 +44,66 @@ my %qcom = (
"protocols bgp var" => "router bgp #3",
"protocols bgp var aggregate-address" => undef,
"protocols bgp var aggregate-address var" => "router bgp #3 ; no aggregate-address #5 ; aggregate-address #5 ?as-set ?summary-only",
- "protocols bgp var ipv6" => undef,
- "protocols bgp var ipv6 aggregate-address" => undef,
- "protocols bgp var ipv6 aggregate-address var" => "router bgp #3 ; no ipv6 bgp aggregate-address #6 ; ipv6 bgp aggregate-address #6 ?summary-only",
- "protocols bgp var ipv6 network" => "router bgp #3 ; no ipv6 bgp network #6 ; ipv6 bgp network #6",
- "protocols bgp var ipv6 redistribute" => undef,
- "protocols bgp var ipv6 redistribute connected" => "router bgp #3 ; address-family ipv6 ; redistribute connected",
- "protocols bgp var ipv6 redistribute connected metric" => "router bgp #3 ; address-family ipv6 ; redistribute connected metric #8",
- "protocols bgp var ipv6 redistribute connected route-map" => "router bgp #3 ; address-family ipv6 ; redistribute connected route-map #8",
- "protocols bgp var ipv6 redistribute kernel" => "router bgp #3 ; address-family ipv6 ; redistribute kernel",
- "protocols bgp var ipv6 redistribute kernel metric" => "router bgp #3 ; address-family ipv6 ; redistribute kernel metric #8",
- "protocols bgp var ipv6 redistribute kernel route-map" => "router bgp #3 ; address-family ipv6 ; redistribute kernel route-map #8",
- "protocols bgp var ipv6 redistribute ospfv3" => "router bgp #3 ; address-family ipv6 ; redistribute ospfv3",
- "protocols bgp var ipv6 redistribute ospfv3 metric" => "router bgp #3 ; address-family ipv6 ; redistribute ospfv3 metric #8",
- "protocols bgp var ipv6 redistribute ospfv3 route-map" => "router bgp #3 ; address-family ipv6 ; redistribute ospfv3 route-map #8",
- "protocols bgp var ipv6 redistribute ripng" => "router bgp #3 ; address-family ipv6 ; redistribute ripng",
- "protocols bgp var ipv6 redistribute ripng metric" => "router bgp #3 ; address-family ipv6 ; redistribute ripng metric #8",
- "protocols bgp var ipv6 redistribute ripng route-map" => "router bgp #3 ; address-family ipv6 ; redistribute ripng route-map #8",
- "protocols bgp var ipv6 redistribute static" => "router bgp #3 ; address-family ipv6 ; redistribute static",
- "protocols bgp var ipv6 redistribute static metric" => "router bgp #3 ; address-family ipv6 ; redistribute static metric #8",
- "protocols bgp var ipv6 redistribute static route-map" => "router bgp #3 ; address-family ipv6 ; redistribute static route-map #8",
+ "protocols bgp var address-family" => undef,
+ "protocols bgp var address-family ipv6-unicast" => undef,
+ "protocols bgp var address-family ipv6-unicast aggregate-address" => undef,
+ "protocols bgp var address-family ipv6-unicast aggregate-address var" => "router bgp #3 ; no ipv6 bgp aggregate-address #7 ; ipv6 bgp aggregate-address #7 ?summary-only",
+ "protocols bgp var address-family ipv6-unicast network" => "router bgp #3 ; no ipv6 bgp network #7 ; ipv6 bgp network #7",
+ "protocols bgp var address-family ipv6-unicast redistribute" => undef,
+ "protocols bgp var address-family ipv6-unicast redistribute connected" => "router bgp #3 ; address-family ipv6 ; redistribute connected",
+ "protocols bgp var address-family ipv6-unicast redistribute connected metric" => "router bgp #3 ; address-family ipv6 ; redistribute connected metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute connected route-map" => "router bgp #3 ; address-family ipv6 ; redistribute connected route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute kernel" => "router bgp #3 ; address-family ipv6 ; redistribute kernel",
+ "protocols bgp var address-family ipv6-unicast redistribute kernel metric" => "router bgp #3 ; address-family ipv6 ; redistribute kernel metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute kernel route-map" => "router bgp #3 ; address-family ipv6 ; redistribute kernel route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ospfv3" => "router bgp #3 ; address-family ipv6 ; redistribute ospfv3",
+ "protocols bgp var address-family ipv6-unicast redistribute ospfv3 metric" => "router bgp #3 ; address-family ipv6 ; redistribute ospfv3 metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ospfv3 route-map" => "router bgp #3 ; address-family ipv6 ; redistribute ospfv3 route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ripng" => "router bgp #3 ; address-family ipv6 ; redistribute ripng",
+ "protocols bgp var address-family ipv6-unicast redistribute ripng metric" => "router bgp #3 ; address-family ipv6 ; redistribute ripng metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ripng route-map" => "router bgp #3 ; address-family ipv6 ; redistribute ripng route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute static" => "router bgp #3 ; address-family ipv6 ; redistribute static",
+ "protocols bgp var address-family ipv6-unicast redistribute static metric" => "router bgp #3 ; address-family ipv6 ; redistribute static metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute static route-map" => "router bgp #3 ; address-family ipv6 ; redistribute static route-map #9",
"protocols bgp var neighbor" => undef,
"protocols bgp var neighbor var" => "router bgp #3 ; neighbor #5",
+ "protocols bgp var neighbor var address-family" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast allowas-in" => "router bgp #3 ; address-family ipv6 ; neighbor #5 allowas-in",
+ "protocols bgp var neighbor var address-family ipv6-unicast attribute-unchanged" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop",
+ "protocols bgp var neighbor var address-family ipv6-unicast capability" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast capability dynamic" => "router bgp #3 ; address-family ipv6 ; neighbor #5 capability dynamic",
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list receive" => "router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list receive",
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list send" => "router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list send",
+ "protocols bgp var neighbor var address-family ipv6-unicast default-originate" => "router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate",
+ "protocols bgp var neighbor var address-family ipv6-unicast default-originate route-map" => "router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate route-map #10",
+ "protocols bgp var neighbor var address-family ipv6-unicast disable-send-community" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast disable-send-community extended" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community extended",
+ "protocols bgp var neighbor var address-family ipv6-unicast disable-send-community standard" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community standard",
+ "protocols bgp var neighbor var address-family ipv6-unicast distribute-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast distribute-list export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast distribute-list import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast filter-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast filter-list export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast filter-list import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast maximum-prefix" => "router bgp #3 ; address-family ipv6 ; neighbor #5 maximum-prefix #9",
+ "protocols bgp var neighbor var address-family ipv6-unicast nexthop-local" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast nexthop-local" => "router bgp #3 ; address-family ipv6 ; neighbor #5 nexthop-local unchanged",
+ "protocols bgp var neighbor var address-family ipv6-unicast nexthop-self" => "router bgp #3 ; address-family ipv6 ; neighbor #5 next-hop-self",
+ "protocols bgp var neighbor var address-family ipv6-unicast prefix-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast prefix-list export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast prefix-list import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast remove-private-as" => "router bgp #3 ; address-family ipv6 ; neighbor #5 remove-private-AS",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-map" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast route-map export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-map import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-reflector-client" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-reflector-client",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-server-client" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-server-client",
+ "protocols bgp var neighbor var address-family ipv6-unicast soft-reconfiguration" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast soft-reconfiguration inbound" => "router bgp #3 ; address-family ipv6 ; neighbor #5 soft-reconfiguration inbound",
+ "protocols bgp var neighbor var address-family ipv6-unicast unsuppress-map" => "router bgp #3 ; address-family ipv6 ; neighbor #5 unsuppress-map #9",
"protocols bgp var neighbor var advertisement-interval" => "router bgp #3 ; neighbor #5 advertisement-interval #7",
# allowas-in as a standalone means any number of times. append number and you will only accept local-as N number of times in as-path
"protocols bgp var neighbor var allowas-in" => "router bgp #3 ; neighbor #5 allowas-in",
@@ -102,6 +140,7 @@ my %qcom = (
"protocols bgp var neighbor var override-capability" => "router bgp #3 ; neighbor #5 override-capability",
"protocols bgp var neighbor var passive" => "router bgp #3 ; neighbor #5 passive",
"protocols bgp var neighbor var password" => "router bgp #3 ; neighbor #5 password #7",
+ "protocols bgp var neighbor var peer-group" => "router bgp #3 ; neighbor #5 peer-group #7",
"protocols bgp var neighbor var port" => "router bgp #3 ; neighbor #5 port #7",
"protocols bgp var neighbor var prefix-list" => undef,
"protocols bgp var neighbor var prefix-list export" => "router bgp #3 ; neighbor #5 prefix-list #8 out",
@@ -153,6 +192,94 @@ my %qcom = (
"protocols bgp var parameters no-fast-external-failover" => "router bgp #3 ; no bgp fast-external-failover",
"protocols bgp var parameters router-id" => "router bgp #3 ; bgp router-id #6",
"protocols bgp var parameters scan-time" => "router bgp #3 ; bgp scan-time #6",
+ "protocols bgp var peer-group var" => "router bgp #3 ; neighbor #5 peer-group",
+ "protocols bgp var peer-group var address-family" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast allowas-in" => "router bgp #3 ; address-family ipv6 ; neighbor #5 allowas-in",
+ "protocols bgp var peer-group var address-family ipv6-unicast attribute-unchanged" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop",
+ "protocols bgp var peer-group var address-family ipv6-unicast capability" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast capability dynamic" => "router bgp #3 ; address-family ipv6 ; neighbor #5 capability dynamic",
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list receive" => "router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list receive",
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list send" => "router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list send",
+ "protocols bgp var peer-group var address-family ipv6-unicast default-originate" => "router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate",
+ "protocols bgp var peer-group var address-family ipv6-unicast default-originate route-map" => "router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate route-map #10",
+ "protocols bgp var peer-group var address-family ipv6-unicast disable-send-community" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast disable-send-community extended" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community extended",
+ "protocols bgp var peer-group var address-family ipv6-unicast disable-send-community standard" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community standard",
+ "protocols bgp var peer-group var address-family ipv6-unicast distribute-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast distribute-list export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast distribute-list import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast filter-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast filter-list export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast filter-list import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast maximum-prefix" => "router bgp #3 ; address-family ipv6 ; neighbor #5 maximum-prefix #9",
+ "protocols bgp var peer-group var address-family ipv6-unicast nexthop-local" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast nexthop-local" => "router bgp #3 ; address-family ipv6 ; neighbor #5 nexthop-local unchanged",
+ "protocols bgp var peer-group var address-family ipv6-unicast nexthop-self" => "router bgp #3 ; address-family ipv6 ; neighbor #5 next-hop-self",
+ "protocols bgp var peer-group var address-family ipv6-unicast prefix-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast prefix-list export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast prefix-list import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast remove-private-as" => "router bgp #3 ; address-family ipv6 ; neighbor #5 remove-private-AS",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-map" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast route-map export" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-map import" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-reflector-client" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-reflector-client",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-server-client" => "router bgp #3 ; address-family ipv6 ; neighbor #5 route-server-client",
+ "protocols bgp var peer-group var address-family ipv6-unicast soft-reconfiguration" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast soft-reconfiguration inbound" => "router bgp #3 ; address-family ipv6 ; neighbor #5 soft-reconfiguration inbound",
+ "protocols bgp var peer-group var address-family ipv6-unicast unsuppress-map" => "router bgp #3 ; address-family ipv6 ; neighbor #5 unsuppress-map #9",
+ "protocols bgp var peer-group var allowas-in" => "router bgp #3 ; neighbor #5 allowas-in",
+ "protocols bgp var peer-group var allowas-in number" => "router bgp #3 ; neighbor #5 allowas-in #8",
+ "protocols bgp var peer-group var attribute-unchanged" => "router bgp #3 ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop",
+ "protocols bgp var peer-group var capability" => undef,
+ "protocols bgp var peer-group var capability dynamic" => "router bgp #3 ; neighbor #5 capability dynamic",
+ "protocols bgp var peer-group var capability orf" => undef,
+ "protocols bgp var peer-group var capability orf prefix-list" => undef,
+ "protocols bgp var peer-group var capability orf prefix-list receive" => "router bgp #3 ; neighbor #5 capability orf prefix-list receive",
+ "protocols bgp var peer-group var capability orf prefix-list send" => "router bgp #3 ; neighbor #5 capability orf prefix-list send",
+ "protocols bgp var peer-group var default-originate" => "router bgp #3 ; neighbor #5 default-originate",
+ "protocols bgp var peer-group var default-originate route-map" => "router bgp #3 ; neighbor #5 default-originate route-map #8",
+ "protocols bgp var peer-group var disable-capability-negotiation" => "router bgp #3 ; neighbor #5 dont-capability-negotiate",
+ "protocols bgp var peer-group var disable-connected-check" => "router bgp #3 ; neighbor #5 disable-connected-check",
+ "protocols bgp var peer-group var disable-send-community" => undef,
+ "protocols bgp var peer-group var disable-send-community extended" => "router bgp #3 ; no neighbor #5 send-community extended",
+ "protocols bgp var peer-group var disable-send-community standard" => "router bgp #3 ; no neighbor #5 send-community standard",
+ "protocols bgp var peer-group var distribute-list" => undef,
+ "protocols bgp var peer-group var distribute-list export" => "router bgp #3 ; neighbor #5 distribute-list #8 out",
+ "protocols bgp var peer-group var distribute-list import" => "router bgp #3 ; neighbor #5 distribute-list #8 in",
+ "protocols bgp var peer-group var ebgp-multihop" => "router bgp #3 ; neighbor #5 ebgp-multihop #7",
+ "protocols bgp var peer-group var filter-list" => undef,
+ "protocols bgp var peer-group var filter-list export" => "router bgp #3 ; neighbor #5 filter-list #8 out",
+ "protocols bgp var peer-group var filter-list import" => "router bgp #3 ; neighbor #5 filter-list #8 in",
+ "protocols bgp var peer-group var local-as" => undef,
+ "protocols bgp var peer-group var local-as var" => "router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as #7",
+ "protocols bgp var peer-group var local-as var no-prepend" => "router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as #7 no-prepend",
+ "protocols bgp var peer-group var maximum-prefix" => "router bgp #3 ; neighbor #5 maximum-prefix #7",
+ "protocols bgp var peer-group var nexthop-self" => "router bgp #3 ; neighbor #5 next-hop-self",
+ "protocols bgp var peer-group var override-capability" => "router bgp #3 ; neighbor #5 override-capability",
+ "protocols bgp var peer-group var passive" => "router bgp #3 ; neighbor #5 passive",
+ "protocols bgp var peer-group var password" => "router bgp #3 ; neighbor #5 password #7",
+ "protocols bgp var peer-group var port" => "router bgp #3 ; neighbor #5 port #7",
+ "protocols bgp var peer-group var prefix-list" => undef,
+ "protocols bgp var peer-group var prefix-list export" => "router bgp #3 ; neighbor #5 prefix-list #8 out",
+ "protocols bgp var peer-group var prefix-list import" => "router bgp #3 ; neighbor #5 prefix-list #8 in",
+ "protocols bgp var peer-group var remote-as" => "router bgp #3 ; neighbor #5 remote-as #7",
+ "protocols bgp var peer-group var remove-private-as" => "router bgp #3 ; neighbor #5 remove-private-AS",
+ "protocols bgp var peer-group var route-map" => undef,
+ "protocols bgp var peer-group var route-map export" => "router bgp #3 ; neighbor #5 route-map #8 out",
+ "protocols bgp var peer-group var route-map import" => "router bgp #3 ; neighbor #5 route-map #8 in",
+ "protocols bgp var peer-group var route-reflector-client" => "router bgp #3 ; neighbor #5 route-reflector-client",
+ "protocols bgp var peer-group var route-server-client" => "router bgp #3 ; neighbor #5 route-server-client",
+ "protocols bgp var peer-group var shutdown" => "router bgp #3 ; neighbor #5 shutdown",
+ "protocols bgp var peer-group var soft-reconfiguration" => undef,
+ "protocols bgp var peer-group var soft-reconfiguration inbound" => "router bgp #3 ; neighbor #5 soft-reconfiguration inbound",
+ "protocols bgp var peer-group var timers" => 'router bgp #3 ; neighbor #5 timers @keepalive @holdtime',
+ "protocols bgp var peer-group var timers connect" => "router bgp #3 ; neighbor #5 timers connect #8",
+ "protocols bgp var peer-group var unsuppress-map" => "router bgp #3 ; neighbor #5 unsuppress-map #7",
+ "protocols bgp var peer-group var update-source" => "router bgp #3 ; neighbor #5 update-source #7",
+ "protocols bgp var peer-group var weight" => "router bgp #3 ; neighbor #5 weight #7",
"protocols bgp var redistribute" => undef,
"protocols bgp var redistribute connected" => "router bgp #3 ; redistribute connected",
"protocols bgp var redistribute connected metric" => "router bgp #3 ; redistribute connected metric #7",
@@ -178,28 +305,66 @@ my %qcomdel = (
"protocols bgp var" => "no router bgp #3",
"protocols bgp var aggregate-address" => undef,
"protocols bgp var aggregate-address var" => "router bgp #3 ; no aggregate-address #5 ?as-set ?summary-only",
- "protocols bgp var ipv6" => undef,
- "protocols bgp var ipv6 aggregate-address" => undef,
- "protocols bgp var ipv6 aggregate-address var" => "router bgp #3 ; no ipv6 bgp aggregate-address #6 ?summary-only",
- "protocols bgp var ipv6 network" => "router bgp #3 ; no ipv6 bgp network #6",
- "protocols bgp var ipv6 redistribute" => undef,
- "protocols bgp var ipv6 redistribute connected" => "router bgp #3 ; address-family ipv6 ; no redistribute connected",
- "protocols bgp var ipv6 redistribute connected metric" => "router bgp #3 ; address-family ipv6 ; no redistribute connected metric #8",
- "protocols bgp var ipv6 redistribute connected route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute connected route-map #8",
- "protocols bgp var ipv6 redistribute kernel" => "router bgp #3 ; address-family ipv6 ; no redistribute kernel",
- "protocols bgp var ipv6 redistribute kernel metric" => "router bgp #3 ; address-family ipv6 ; no redistribute kernel metric #8",
- "protocols bgp var ipv6 redistribute kernel route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute kernel route-map #8",
- "protocols bgp var ipv6 redistribute ospfv3" => "router bgp #3 ; address-family ipv6 ; no redistribute ospfv3",
- "protocols bgp var ipv6 redistribute ospfv3 metric" => "router bgp #3 ; address-family ipv6 ; no redistribute ospfv3 metric #8",
- "protocols bgp var ipv6 redistribute ospfv3 route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute ospfv3 route-map #8",
- "protocols bgp var ipv6 redistribute ripng" => "router bgp #3 ; address-family ipv6 ; no redistribute ripng",
- "protocols bgp var ipv6 redistribute ripng metric" => "router bgp #3 ; address-family ipv6 ; no redistribute ripng metric #8",
- "protocols bgp var ipv6 redistribute ripng route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute ripng route-map #8",
- "protocols bgp var ipv6 redistribute static" => "router bgp #3 ; address-family ipv6 ; no redistribute static",
- "protocols bgp var ipv6 redistribute static metric" => "router bgp #3 ; address-family ipv6 ; no redistribute static metric #8",
- "protocols bgp var ipv6 redistribute static route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute static route-map #8",
+ "protocols bgp var address-family" => undef,
+ "protocols bgp var address-family ipv6-unicast" => undef,
+ "protocols bgp var address-family ipv6-unicast aggregate-address" => undef,
+ "protocols bgp var address-family ipv6-unicast aggregate-address var" => "router bgp #3 ; no ipv6 bgp aggregate-address #7",
+ "protocols bgp var address-family ipv6-unicast network" => "router bgp #3 ; no ipv6 bgp network #7 ; no ipv6 bgp network #7",
+ "protocols bgp var address-family ipv6-unicast redistribute" => undef,
+ "protocols bgp var address-family ipv6-unicast redistribute connected" => "router bgp #3 ; address-family ipv6 ; no redistribute connected",
+ "protocols bgp var address-family ipv6-unicast redistribute connected metric" => "router bgp #3 ; address-family ipv6 ; no redistribute connected metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute connected route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute connected route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute kernel" => "router bgp #3 ; address-family ipv6 ; no redistribute kernel",
+ "protocols bgp var address-family ipv6-unicast redistribute kernel metric" => "router bgp #3 ; address-family ipv6 ; no redistribute kernel metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute kernel route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute kernel route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ospfv3" => "router bgp #3 ; address-family ipv6 ; no redistribute ospfv3",
+ "protocols bgp var address-family ipv6-unicast redistribute ospfv3 metric" => "router bgp #3 ; address-family ipv6 ; no redistribute ospfv3 metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ospfv3 route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute ospfv3 route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ripng" => "router bgp #3 ; address-family ipv6 ; no redistribute ripng",
+ "protocols bgp var address-family ipv6-unicast redistribute ripng metric" => "router bgp #3 ; address-family ipv6 ; no redistribute ripng metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute ripng route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute ripng route-map #9",
+ "protocols bgp var address-family ipv6-unicast redistribute static" => "router bgp #3 ; address-family ipv6 ; no redistribute static",
+ "protocols bgp var address-family ipv6-unicast redistribute static metric" => "router bgp #3 ; address-family ipv6 ; no redistribute static metric #9",
+ "protocols bgp var address-family ipv6-unicast redistribute static route-map" => "router bgp #3 ; address-family ipv6 ; no redistribute static route-map #9",
"protocols bgp var neighbor" => undef,
"protocols bgp var neighbor var" => "router bgp #3 ; no neighbor #5",
+ "protocols bgp var neighbor var address-family" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast allowas-in" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 allowas-in",
+ "protocols bgp var neighbor var address-family ipv6-unicast attribute-unchanged" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged",
+ "protocols bgp var neighbor var address-family ipv6-unicast capability" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast capability dynamic" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 capability dynamic",
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list receive" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 capability orf prefix-list receive",
+ "protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list send" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 capability orf prefix-list send",
+ "protocols bgp var neighbor var address-family ipv6-unicast default-originate" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 default-originate",
+ "protocols bgp var neighbor var address-family ipv6-unicast default-originate route-map" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 default-originate route-map #10",
+ "protocols bgp var neighbor var address-family ipv6-unicast disable-send-community" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast disable-send-community extended" => "router bgp #3 ; address-family ipv6 ; neighbor #5 send-community extended",
+ "protocols bgp var neighbor var address-family ipv6-unicast disable-send-community standard" => "router bgp #3 ; address-family ipv6 ; neighbor #5 send-community standard",
+ "protocols bgp var neighbor var address-family ipv6-unicast distribute-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast distribute-list export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 distribute-list #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast distribute-list import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 distribute-list #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast filter-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast filter-list export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 filter-list #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast filter-list import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 filter-list #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast maximum-prefix" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 maximum-prefix #9",
+ "protocols bgp var neighbor var address-family ipv6-unicast nexthop-local" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast nexthop-local" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 nexthop-local unchanged",
+ "protocols bgp var neighbor var address-family ipv6-unicast nexthop-self" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 next-hop-self",
+ "protocols bgp var neighbor var address-family ipv6-unicast prefix-list" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast prefix-list export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 prefix-list #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast prefix-list import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 prefix-list #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast remove-private-as" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 remove-private-AS",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-map" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast route-map export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-map #10 out",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-map import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-map #10 in",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-reflector-client" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-reflector-client",
+ "protocols bgp var neighbor var address-family ipv6-unicast route-server-client" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-server-client",
+ "protocols bgp var neighbor var address-family ipv6-unicast soft-reconfiguration" => undef,
+ "protocols bgp var neighbor var address-family ipv6-unicast soft-reconfiguration inbound" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 soft-reconfiguration inbound",
+ "protocols bgp var neighbor var address-family ipv6-unicast unsuppress-map" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 unsuppress-map #9",
"protocols bgp var neighbor var advertisement-interval" => "router bgp #3 ; no neighbor #5 advertisement-interval",
"protocols bgp var neighbor var allowas-in" => "router bgp #3 ; no neighbor #5 allowas-in",
"protocols bgp var neighbor var allowas-in number" => "router bgp #3 ; no neighbor #5 allowas-in #8 ; neighbor #5 allowas-in",
@@ -231,6 +396,7 @@ my %qcomdel = (
"protocols bgp var neighbor var override-capability" => "router bgp #3 ; no neighbor #5 override-capability",
"protocols bgp var neighbor var passive" => "router bgp #3 ; no neighbor #5 passive",
"protocols bgp var neighbor var password" => "router bgp #3 ; no neighbor #5 password",
+ "protocols bgp var neighbor var peer-group" => "router bgp #3 ; no neighbor #5 peer-group #7",
"protocols bgp var neighbor var port" => "router bgp #3 ; no neighbor #5 port",
"protocols bgp var neighbor var prefix-list" => undef,
"protocols bgp var neighbor var prefix-list export" => "router bgp #3 ; no neighbor #5 prefix-list #8 out",
@@ -282,6 +448,94 @@ my %qcomdel = (
"protocols bgp var parameters no-fast-external-failover" => "router bgp #3 ; bgp fast-external-failover",
"protocols bgp var parameters router-id" => "router bgp #3 ; no bgp router-id #6",
"protocols bgp var parameters scan-time" => "router bgp #3 ; no bgp scan-time #6",
+ "protocols bgp var peer-group var" => "router bgp #3 ; no neighbor #5 peer-group",
+ "protocols bgp var peer-group var address-family" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast allowas-in" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 allowas-in",
+ "protocols bgp var peer-group var address-family ipv6-unicast attribute-unchanged" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged",
+ "protocols bgp var peer-group var address-family ipv6-unicast capability" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast capability dynamic" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 capability dynamic",
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list receive" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 capability orf prefix-list receive",
+ "protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list send" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 capability orf prefix-list send",
+ "protocols bgp var peer-group var address-family ipv6-unicast default-originate" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 default-originate",
+ "protocols bgp var peer-group var address-family ipv6-unicast default-originate route-map" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 default-originate route-map #10",
+ "protocols bgp var peer-group var address-family ipv6-unicast disable-send-community" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast disable-send-community extended" => "router bgp #3 ; address-family ipv6 ; neighbor #5 send-community extended",
+ "protocols bgp var peer-group var address-family ipv6-unicast disable-send-community standard" => "router bgp #3 ; address-family ipv6 ; neighbor #5 send-community standard",
+ "protocols bgp var peer-group var address-family ipv6-unicast distribute-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast distribute-list export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 distribute-list #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast distribute-list import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 distribute-list #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast filter-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast filter-list export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 filter-list #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast filter-list import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 filter-list #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast maximum-prefix" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 maximum-prefix #9",
+ "protocols bgp var peer-group var address-family ipv6-unicast nexthop-local" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast nexthop-local" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 nexthop-local unchanged",
+ "protocols bgp var peer-group var address-family ipv6-unicast nexthop-self" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 next-hop-self",
+ "protocols bgp var peer-group var address-family ipv6-unicast prefix-list" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast prefix-list export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 prefix-list #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast prefix-list import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 prefix-list #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast remove-private-as" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 remove-private-AS",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-map" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast route-map export" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-map #10 out",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-map import" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-map #10 in",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-reflector-client" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-reflector-client",
+ "protocols bgp var peer-group var address-family ipv6-unicast route-server-client" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 route-server-client",
+ "protocols bgp var peer-group var address-family ipv6-unicast soft-reconfiguration" => undef,
+ "protocols bgp var peer-group var address-family ipv6-unicast soft-reconfiguration inbound" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 soft-reconfiguration inbound",
+ "protocols bgp var peer-group var address-family ipv6-unicast unsuppress-map" => "router bgp #3 ; address-family ipv6 ; no neighbor #5 unsuppress-map #9",
+ "protocols bgp var peer-group var allowas-in" => "router bgp #3 ; no neighbor #5 allowas-in",
+ "protocols bgp var peer-group var allowas-in number" => "router bgp #3 ; no neighbor #5 allowas-in #8 ; neighbor #5 allowas-in",
+ "protocols bgp var peer-group var attribute-unchanged" => "router bgp #3 ; no neighbor #5 attribute-unchanged ?as-path ?med ?next-hop",
+ "protocols bgp var peer-group var capability" => undef,
+ "protocols bgp var peer-group var capability dynamic" => "router bgp #3 ; no neighbor #5 capability dynamic",
+ "protocols bgp var peer-group var capability orf" => undef,
+ "protocols bgp var peer-group var capability orf prefix-list" => undef,
+ "protocols bgp var peer-group var capability orf prefix-list receive" => "router bgp #3 ; no neighbor #5 capability orf prefix-list receive",
+ "protocols bgp var peer-group var capability orf prefix-list send" => "router bgp #3 ; no neighbor #5 capability orf prefix-list send",
+ "protocols bgp var peer-group var default-originate" => "router bgp #3 ; no neighbor #5 default-originate",
+ "protocols bgp var peer-group var default-originate route-map" => "router bgp #3 ; no neighbor #5 default-originate route-map #8",
+ "protocols bgp var peer-group var disable-capability-negotiation" => "router bgp #3 ; no neighbor #5 dont-capability-negotiate",
+ "protocols bgp var peer-group var disable-connected-check" => "router bgp #3 ; no neighbor #5 disable-connected-check",
+ "protocols bgp var peer-group var disable-send-community" => undef,
+ "protocols bgp var peer-group var disable-send-community extended" => "router bgp #3 ; neighbor #5 send-community extended",
+ "protocols bgp var peer-group var disable-send-community standard" => "router bgp #3 ; neighbor #5 send-community standard",
+ "protocols bgp var peer-group var distribute-list" => undef,
+ "protocols bgp var peer-group var distribute-list export" => "router bgp #3 ; no neighbor #5 distribute-list #8 out",
+ "protocols bgp var peer-group var distribute-list import" => "router bgp #3 ; no neighbor #5 distribute-list #8 in",
+ "protocols bgp var peer-group var ebgp-multihop" => "router bgp #3 ; no neighbor #5 ebgp-multihop #7",
+ "protocols bgp var peer-group var filter-list" => undef,
+ "protocols bgp var peer-group var filter-list export" => "router bgp #3 ; no neighbor #5 filter-list #8 out",
+ "protocols bgp var peer-group var filter-list import" => "router bgp #3 ; no neighbor #5 filter-list #8 in",
+ "protocols bgp var peer-group var local-as" => undef,
+ "protocols bgp var peer-group var local-as var" => "router bgp #3 ; no neighbor #5 local-as #7",
+ "protocols bgp var peer-group var local-as var no-prepend" => "router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as",
+ "protocols bgp var peer-group var maximum-prefix" => "router bgp #3 ; no neighbor #5 maximum-prefix #7",
+ "protocols bgp var peer-group var nexthop-self" => "router bgp #3 ; no neighbor #5 next-hop-self",
+ "protocols bgp var peer-group var override-capability" => "router bgp #3 ; no neighbor #5 override-capability",
+ "protocols bgp var peer-group var passive" => "router bgp #3 ; no neighbor #5 passive",
+ "protocols bgp var peer-group var password" => "router bgp #3 ; no neighbor #5 password #7",
+ "protocols bgp var peer-group var port" => "router bgp #3 ; no neighbor #5 port #7",
+ "protocols bgp var peer-group var prefix-list" => undef,
+ "protocols bgp var peer-group var prefix-list export" => "router bgp #3 ; no neighbor #5 prefix-list #8 out",
+ "protocols bgp var peer-group var prefix-list import" => "router bgp #3 ; no neighbor #5 prefix-list #8 in",
+ "protocols bgp var peer-group var remote-as" => "router bgp #3 ; no neighbor #5 remote-as #7",
+ "protocols bgp var peer-group var remove-private-as" => "router bgp #3 ; no neighbor #5 remove-private-AS",
+ "protocols bgp var peer-group var route-map" => undef,
+ "protocols bgp var peer-group var route-map export" => "router bgp #3 ; no neighbor #5 route-map #8 out",
+ "protocols bgp var peer-group var route-map import" => "router bgp #3 ; no neighbor #5 route-map #8 in",
+ "protocols bgp var peer-group var route-reflector-client" => "router bgp #3 ; no neighbor #5 route-reflector-client",
+ "protocols bgp var peer-group var route-server-client" => "router bgp #3 ; no neighbor #5 route-server-client",
+ "protocols bgp var peer-group var shutdown" => "router bgp #3 ; no neighbor #5 shutdown",
+ "protocols bgp var peer-group var soft-reconfiguration" => undef,
+ "protocols bgp var peer-group var soft-reconfiguration inbound" => "router bgp #3 ; no neighbor #5 soft-reconfiguration inbound",
+ "protocols bgp var peer-group var timers" => 'router bgp #3 ; no neighbor #5",
+ "protocols bgp var peer-group var timers connect" => "router bgp #3 ; no neighbor #5 timers connect #8",
+ "protocols bgp var peer-group var unsuppress-map" => "router bgp #3 ; no neighbor #5 unsuppress-map #7",
+ "protocols bgp var peer-group var update-source" => "router bgp #3 ; no neighbor #5 update-source #7",
+ "protocols bgp var peer-group var weight" => "router bgp #3 ; no neighbor #5 weight #7",
"protocols bgp var redistribute" => undef,
"protocols bgp var redistribute connected" => "router bgp #3 ; no redistribute connected",
"protocols bgp var redistribute connected metric" => "router bgp #3 ; no redistribute connected metric #7",
@@ -440,21 +694,24 @@ sub main {
#$qconfig->setDebugLevel('3');
#$qconfig->_reInitialize();
- print "deleteConfigTreeRecursive(protocols bgp)\n";
- print "---\n"; printQuaggaCommands($qconfig); print "---\n";
+ # deletes with priority
$qconfig->deleteConfigTreeRecursive('protocols bgp') || die "exiting $?\n";
-
- print "setConfigTree(protocols bgp var neighbor var remote-as)\n";
- print "---\n"; printQuaggaCommands($qconfig); print "---\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var remote-as') || die "exiting $?\n";
-
- print "setConfigTreeRecursive(protocols bgp)\n";
- print "---\n"; printQuaggaCommands($qconfig); print "---\n";
+ # would be cool if I could add a recursive delete such as everything but (protocols bgp var neigh var remote-as)
+
+ # sets with priority
+ $qconfig->setConfigTreeRecursive('protocols bgp var parameters') || die "exiting $?\n";
+ $qconfig->setConfigTree('protocols bgp var peer-group var remote-as') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var peer-group') || die "exiting $?\n";
+ $qconfig->setConfigTree('protocols bgp var neighbor var remote-as') || die "exiting $?\n";
+ $qconfig->setConfigTree('protocols bgp var neighbor var shutdown') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var route-map') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var filter-list') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var prefix-list') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var distribute-list') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var unsuppress-map') || die "exiting $?\n";
+ $qconfig->setConfigTreeRecursive('protocols bgp var neighbor') || die "exiting $?\n";
$qconfig->setConfigTreeRecursive('protocols bgp') || die "exiting $?\n";
- print "---\n"; printQuaggaCommands($qconfig); print "---\n";
-
- #700 protocols bgp var parameters
#705 protocols bgp var neighbhor shutdown
#715 protocols bgp var neighbhor route-map
#716 protocols bgp var neighbhor filter-list
diff --git a/templates/protocols/bgp/node.tag/ipv6/aggregate-address/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/aggregate-address/node.def
index 594d8782..594d8782 100644
--- a/templates/protocols/bgp/node.tag/ipv6/aggregate-address/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/aggregate-address/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/aggregate-address/node.tag/summary-only/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/aggregate-address/node.tag/summary-only/node.def
index 7aaf0620..7aaf0620 100644
--- a/templates/protocols/bgp/node.tag/ipv6/aggregate-address/node.tag/summary-only/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/aggregate-address/node.tag/summary-only/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/network/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/network/node.def
index 14034a79..14034a79 100644
--- a/templates/protocols/bgp/node.tag/ipv6/network/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/network/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/node.def
index 1a8f732e..1a8f732e 100644
--- a/templates/protocols/bgp/node.tag/ipv6/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/connected/metric/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/metric/node.def
index 8ac30200..8ac30200 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/connected/metric/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/metric/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/connected/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/node.def
index acdef3a3..acdef3a3 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/connected/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/route-map/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/route-map/node.def
index 828652aa..94f0b513 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/route-map/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/connected/route-map/node.def
@@ -1,4 +1,4 @@
type: txt
help: Set a route map to filter redistributed routes
comp_help: \1 <txt>\t\troute-map name
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) ipv6 redistribute ripng: route-map $VAR(@) doesn't exist"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) ipv6 redistribute connected: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/metric/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/metric/node.def
index 8ac30200..8ac30200 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/metric/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/metric/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/node.def
index 5f0bfb51..5f0bfb51 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/connected/route-map/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/route-map/node.def
index b636e5f7..9e8181d8 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/connected/route-map/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/kernel/route-map/node.def
@@ -1,4 +1,4 @@
type: txt
help: Set a route map to filter redistributed routes
comp_help: \1 <txt>\t\troute-map name
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) ipv6 redistribute connected: route-map $VAR(@) doesn't exist"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) ipv6 redistribute kernel: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/node.def
index 105e22db..105e22db 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/metric/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/metric/node.def
index 8ac30200..8ac30200 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/metric/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/metric/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/node.def
index 76cf1808..76cf1808 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/route-map/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/route-map/node.def
index 202a548e..a2cd8040 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/kernel/route-map/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ospfv3/route-map/node.def
@@ -1,4 +1,4 @@
type: txt
help: Set a route map to filter redistributed routes
comp_help: \1 <txt>\t\troute-map name
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) ipv6 redistribute kernel: route-map $VAR(@) doesn't exist"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) ipv6 redistribute ospfv3: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/metric/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/metric/node.def
index 8ac30200..8ac30200 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/metric/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/metric/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/node.def
index 55ac8b58..55ac8b58 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/ripng/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/static/route-map/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/route-map/node.def
index 90e59e5a..97a43975 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/static/route-map/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/ripng/route-map/node.def
@@ -1,4 +1,4 @@
type: txt
help: Set a route map to filter redistributed routes
comp_help: \1 <txt>\t\troute-map name
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) ipv6 redistribute static: route-map $VAR(@) doesn't exist"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) ipv6 redistribute ripng: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/static/metric/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/metric/node.def
index 8ac30200..8ac30200 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/static/metric/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/metric/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/static/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/node.def
index c196a54b..c196a54b 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/static/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/node.def
diff --git a/templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/route-map/node.def b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/route-map/node.def
index abb61fa7..67b64a9b 100644
--- a/templates/protocols/bgp/node.tag/ipv6/redistribute/ospfv3/route-map/node.def
+++ b/templates/protocols/bgp/node.tag/address-family/ipv6-unicast/redistribute/static/route-map/node.def
@@ -1,4 +1,4 @@
type: txt
help: Set a route map to filter redistributed routes
comp_help: \1 <txt>\t\troute-map name
-commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) ipv6 redistribute ospfv3: route-map $VAR(@) doesn't exist"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) ipv6 redistribute static: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/node.def
new file mode 100644
index 00000000..1d8c1946
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/node.def
@@ -0,0 +1,2 @@
+help: Set to accept a route that contains the local-AS in the as-path
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def
new file mode 100644
index 00000000..5775dd0a
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set number of occurrences of AS number
+comp_help: \1 <1-10>\tnumber of times AS is allowed in path
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10; "allowas-in number must be between 1 and 10"
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def
new file mode 100644
index 00000000..02bc0751
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def
@@ -0,0 +1 @@
+help: Set to send AS path unchanged
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def
new file mode 100644
index 00000000..93154a64
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def
@@ -0,0 +1 @@
+help: Set to send multi-exit discriminator unchanged
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def
new file mode 100644
index 00000000..f8b1ca86
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def
@@ -0,0 +1 @@
+help: Set to send nexthop unchanged
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def
new file mode 100644
index 00000000..64e7aa55
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def
@@ -0,0 +1,3 @@
+help: Set whether BGP attributes are sent unchanged
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@): you can't set attribute-unchanged for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def
new file mode 100644
index 00000000..c05adfbe
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def
@@ -0,0 +1,2 @@
+help: Set to advertise dynamic capability to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/node.def
new file mode 100644
index 00000000..f83cac18
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/node.def
@@ -0,0 +1 @@
+help: Set to advertise capabilities to this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/node.def
new file mode 100644
index 00000000..a0058566
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/node.def
@@ -0,0 +1 @@
+help: Set to advertise ORF capability to this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def
new file mode 100644
index 00000000..cb911c75
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def
@@ -0,0 +1 @@
+help: Set to advertise prefix-list ORF capability to this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def
new file mode 100644
index 00000000..05347f41
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def
@@ -0,0 +1,2 @@
+help: Set capability to receive the ORF
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../../../@) --neighbor $VAR(../../../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def
new file mode 100644
index 00000000..69696ee2
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def
@@ -0,0 +1,2 @@
+help: Set capability to send the ORF
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../../../@) --neighbor $VAR(../../../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/node.def
new file mode 100644
index 00000000..29e0708c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/node.def
@@ -0,0 +1,2 @@
+help: Set to send default route to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def
new file mode 100644
index 00000000..114c2142
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def
@@ -0,0 +1,6 @@
+type: txt
+help: Set the route-map to specify criteria of the default
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" " ; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) default-originate: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def
new file mode 100644
index 00000000..6423d08f
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def
@@ -0,0 +1,2 @@
+help: Set to not send extended community attributes to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/node.def
new file mode 100644
index 00000000..c77a13c4
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/node.def
@@ -0,0 +1,2 @@
+help: Set to not send community attributes to this neighbor
+commit:expression: ($VAR(./extended/) != "") || ($VAR(./standard/) != ""); "protocols bgp $(../../../../@) neighbor $(../../../@): you must specify the type of community"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def
new file mode 100644
index 00000000..aa5a1004
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def
@@ -0,0 +1,2 @@
+help: Set to not send standard community attributes to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def
new file mode 100644
index 00000000..c00efb6c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def
@@ -0,0 +1,13 @@
+type: txt
+help: Set an access-list to filter outgoing route updates to this neighbor
+comp_help: possible completions:
+ <1-65535> access-list number
+ <txt> access-list6 name
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/access-list/*
+ /opt/vyatta/config/active/policy/access-list6/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) export: access-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../prefix-list/export/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) distribute-list export: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def
new file mode 100644
index 00000000..e7cac4a7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set an access-list to filter incoming route updates from this neighbor
+comp_help: possible completions:
+ <1-65535> access-list number
+ <txt> access-list6 name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" ";\
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) import: access-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../prefix-list/import/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) distribute-list import: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/node.def
new file mode 100644
index 00000000..4013725c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/distribute-list/node.def
@@ -0,0 +1 @@
+help: Set an access-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/export/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/export/node.def
new file mode 100644
index 00000000..dd460e51
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/export/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set an as-path-list to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/as-path-list/* )
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> as-path-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) filter-list export: as-path-list $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/import/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/import/node.def
new file mode 100644
index 00000000..0d6ff748
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/import/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set an as-path-list to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/as-path-list/* )
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> as-path-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) filter-list import: as-path-list $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/node.def
new file mode 100644
index 00000000..191c561b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/filter-list/node.def
@@ -0,0 +1 @@
+help: Set an as-path-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def
new file mode 100644
index 00000000..baff6c76
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set the maximum number of prefixes to accept from this neighbor
+comp_help: possible completions:
+ <1-4294967295> prefix limit
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/node.def
new file mode 100644
index 00000000..6292882b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/node.def
@@ -0,0 +1 @@
+help: Configure nexthop attributes
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def
new file mode 100644
index 00000000..33ca0243
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def
@@ -0,0 +1,2 @@
+help: Leave link-local nexthop unchanged for this peer
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-self/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-self/node.def
new file mode 100644
index 00000000..cb1eaa6c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/nexthop-self/node.def
@@ -0,0 +1,2 @@
+help: Set nexthop for routes sent to this neighbor to be the local router
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def
new file mode 100644
index 00000000..905910f6
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def
@@ -0,0 +1,12 @@
+type: txt
+help: Set a prefix-list to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/prefix-list/*
+ /opt/vyatta/config/active/policy/prefix-list6/*)
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> prefix-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list import: prefix-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../distribute-list/export/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list export: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def
new file mode 100644
index 00000000..ddb5f5d4
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def
@@ -0,0 +1,13 @@
+type: txt
+help: Set a prefix-list to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/prefix-list/*
+ /opt/vyatta/config/active/policy/prefix-list6/*)
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> prefix-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list import: prefix-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../distribute-list/import/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list import: you can't set both a prefix-list and a distribute list"
+
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/node.def
new file mode 100644
index 00000000..1a6187c9
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/prefix-list/node.def
@@ -0,0 +1 @@
+help: Set a prefix-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/remove-private-as/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/remove-private-as/node.def
new file mode 100644
index 00000000..d44bf2e1
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/remove-private-as/node.def
@@ -0,0 +1,2 @@
+help: Set to remove private AS numbers from AS path in outbound route updates
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/export/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/export/node.def
new file mode 100644
index 00000000..0a366a1b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/export/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) export: route-map $VAR(@) doesn't exist"
+comp_help: possible completions:
+ <txt> route-map name
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/import/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/import/node.def
new file mode 100644
index 00000000..3e5920c7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/import/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) import: route-map $VAR(@) doesn't exist"
+comp_help: possible completions:
+ <txt> route-map name
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/node.def
new file mode 100644
index 00000000..7d581eb7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-map/node.def
@@ -0,0 +1 @@
+help: Set a route-map to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def
new file mode 100644
index 00000000..bea3ac85
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def
@@ -0,0 +1,3 @@
+help: Set neighbor as a route reflector client
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
+commit:expression: $VAR(../../@) == $VAR(../remote-as/@); "protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@) route-reflector-client: remote-as must equal local-as"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-server-client/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-server-client/node.def
new file mode 100644
index 00000000..f3cca5b8
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/route-server-client/node.def
@@ -0,0 +1,2 @@
+help: Set neighbor as route server client
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def
new file mode 100644
index 00000000..b8bd724c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def
@@ -0,0 +1,3 @@
+help: Set inbound soft reconfiguration for this neighbor [REQUIRED]
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as \
+ --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def
new file mode 100644
index 00000000..c17d82f9
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def
@@ -0,0 +1,2 @@
+help: Set soft reconfiguration for neighbor
+commit:expression: $VAR(./inbound/) != ""; "protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@) soft-reconfiguration: you must specify the type of soft-reconfiguration"
diff --git a/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def
new file mode 100644
index 00000000..95af274c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/neighbor/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to selectively unsuppress suppressed routes
+comp_help: possible completions:
+ <txt> route-map name
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@): route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.def b/templates/protocols/bgp/node.tag/peer-group/node.def
new file mode 100644
index 00000000..af7f1b5c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.def
@@ -0,0 +1,9 @@
+tag:
+type: txt
+help: Set a BGP neighbor
+comp_help:
+ <x.x.x.x> BGP neighbor IP address
+ <h:h:h:h:h:h:h:h> BGP neighbor IPv6 address
+
+syntax:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl \
+ --check-peer-name $VAR(@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/node.def
new file mode 100644
index 00000000..1d8c1946
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/node.def
@@ -0,0 +1,2 @@
+help: Set to accept a route that contains the local-AS in the as-path
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def
new file mode 100644
index 00000000..5775dd0a
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/allowas-in/number/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set number of occurrences of AS number
+comp_help: \1 <1-10>\tnumber of times AS is allowed in path
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10; "allowas-in number must be between 1 and 10"
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def
new file mode 100644
index 00000000..02bc0751
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/as-path/node.def
@@ -0,0 +1 @@
+help: Set to send AS path unchanged
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def
new file mode 100644
index 00000000..93154a64
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/med/node.def
@@ -0,0 +1 @@
+help: Set to send multi-exit discriminator unchanged
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def
new file mode 100644
index 00000000..f8b1ca86
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/next-hop/node.def
@@ -0,0 +1 @@
+help: Set to send nexthop unchanged
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def
new file mode 100644
index 00000000..64e7aa55
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/attribute-unchanged/node.def
@@ -0,0 +1,3 @@
+help: Set whether BGP attributes are sent unchanged
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@): you can't set attribute-unchanged for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def
new file mode 100644
index 00000000..c05adfbe
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/dynamic/node.def
@@ -0,0 +1,2 @@
+help: Set to advertise dynamic capability to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/node.def
new file mode 100644
index 00000000..f83cac18
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/node.def
@@ -0,0 +1 @@
+help: Set to advertise capabilities to this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/node.def
new file mode 100644
index 00000000..a0058566
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/node.def
@@ -0,0 +1 @@
+help: Set to advertise ORF capability to this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def
new file mode 100644
index 00000000..cb911c75
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/node.def
@@ -0,0 +1 @@
+help: Set to advertise prefix-list ORF capability to this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def
new file mode 100644
index 00000000..05347f41
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/receive/node.def
@@ -0,0 +1,2 @@
+help: Set capability to receive the ORF
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../../../@) --neighbor $VAR(../../../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def
new file mode 100644
index 00000000..69696ee2
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/capability/orf/prefix-list/send/node.def
@@ -0,0 +1,2 @@
+help: Set capability to send the ORF
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../../../@) --neighbor $VAR(../../../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/node.def
new file mode 100644
index 00000000..29e0708c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/node.def
@@ -0,0 +1,2 @@
+help: Set to send default route to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def
new file mode 100644
index 00000000..114c2142
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/default-originate/route-map/node.def
@@ -0,0 +1,6 @@
+type: txt
+help: Set the route-map to specify criteria of the default
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" " ; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) default-originate: route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def
new file mode 100644
index 00000000..6423d08f
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/extended/node.def
@@ -0,0 +1,2 @@
+help: Set to not send extended community attributes to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/node.def
new file mode 100644
index 00000000..c77a13c4
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/node.def
@@ -0,0 +1,2 @@
+help: Set to not send community attributes to this neighbor
+commit:expression: ($VAR(./extended/) != "") || ($VAR(./standard/) != ""); "protocols bgp $(../../../../@) neighbor $(../../../@): you must specify the type of community"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def
new file mode 100644
index 00000000..aa5a1004
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/disable-send-community/standard/node.def
@@ -0,0 +1,2 @@
+help: Set to not send standard community attributes to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def
new file mode 100644
index 00000000..c00efb6c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/export/node.def
@@ -0,0 +1,13 @@
+type: txt
+help: Set an access-list to filter outgoing route updates to this neighbor
+comp_help: possible completions:
+ <1-65535> access-list number
+ <txt> access-list6 name
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/access-list/*
+ /opt/vyatta/config/active/policy/access-list6/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) export: access-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../prefix-list/export/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) distribute-list export: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def
new file mode 100644
index 00000000..e7cac4a7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/import/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set an access-list to filter incoming route updates from this neighbor
+comp_help: possible completions:
+ <1-65535> access-list number
+ <txt> access-list6 name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" ";\
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) import: access-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../prefix-list/import/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) distribute-list import: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/node.def
new file mode 100644
index 00000000..4013725c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/distribute-list/node.def
@@ -0,0 +1 @@
+help: Set an access-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/export/node.def
new file mode 100644
index 00000000..dd460e51
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/export/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set an as-path-list to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/as-path-list/* )
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> as-path-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) filter-list export: as-path-list $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/import/node.def
new file mode 100644
index 00000000..0d6ff748
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/import/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set an as-path-list to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/as-path-list/* )
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> as-path-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) filter-list import: as-path-list $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/node.def
new file mode 100644
index 00000000..191c561b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/filter-list/node.def
@@ -0,0 +1 @@
+help: Set an as-path-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def
new file mode 100644
index 00000000..baff6c76
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/maximum-prefix/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set the maximum number of prefixes to accept from this neighbor
+comp_help: possible completions:
+ <1-4294967295> prefix limit
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/node.def
new file mode 100644
index 00000000..6292882b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/node.def
@@ -0,0 +1 @@
+help: Configure nexthop attributes
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def
new file mode 100644
index 00000000..33ca0243
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-local/unchanged/node.def
@@ -0,0 +1,2 @@
+help: Leave link-local nexthop unchanged for this peer
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-self/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-self/node.def
new file mode 100644
index 00000000..cb1eaa6c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/nexthop-self/node.def
@@ -0,0 +1,2 @@
+help: Set nexthop for routes sent to this neighbor to be the local router
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def
new file mode 100644
index 00000000..905910f6
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/export/node.def
@@ -0,0 +1,12 @@
+type: txt
+help: Set a prefix-list to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/prefix-list/*
+ /opt/vyatta/config/active/policy/prefix-list6/*)
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> prefix-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list import: prefix-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../distribute-list/export/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list export: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def
new file mode 100644
index 00000000..ddb5f5d4
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/import/node.def
@@ -0,0 +1,13 @@
+type: txt
+help: Set a prefix-list to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/prefix-list/*
+ /opt/vyatta/config/active/policy/prefix-list6/*)
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> prefix-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list import: prefix-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../distribute-list/import/) == ""; "protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) prefix-list import: you can't set both a prefix-list and a distribute list"
+
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/node.def
new file mode 100644
index 00000000..1a6187c9
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/prefix-list/node.def
@@ -0,0 +1 @@
+help: Set a prefix-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/remove-private-as/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/remove-private-as/node.def
new file mode 100644
index 00000000..d44bf2e1
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/remove-private-as/node.def
@@ -0,0 +1,2 @@
+help: Set to remove private AS numbers from AS path in outbound route updates
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/export/node.def
new file mode 100644
index 00000000..0a366a1b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/export/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) export: route-map $VAR(@) doesn't exist"
+comp_help: possible completions:
+ <txt> route-map name
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/import/node.def
new file mode 100644
index 00000000..3e5920c7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/import/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../../@) neighbor $VAR(../../../../@) import: route-map $VAR(@) doesn't exist"
+comp_help: possible completions:
+ <txt> route-map name
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/node.def
new file mode 100644
index 00000000..7d581eb7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-map/node.def
@@ -0,0 +1 @@
+help: Set a route-map to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def
new file mode 100644
index 00000000..bea3ac85
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-reflector-client/node.def
@@ -0,0 +1,3 @@
+help: Set neighbor as a route reflector client
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
+commit:expression: $VAR(../../@) == $VAR(../remote-as/@); "protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@) route-reflector-client: remote-as must equal local-as"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-server-client/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-server-client/node.def
new file mode 100644
index 00000000..f3cca5b8
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/route-server-client/node.def
@@ -0,0 +1,2 @@
+help: Set neighbor as route server client
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def
new file mode 100644
index 00000000..b8bd724c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/inbound/node.def
@@ -0,0 +1,3 @@
+help: Set inbound soft reconfiguration for this neighbor [REQUIRED]
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as \
+ --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def
new file mode 100644
index 00000000..c17d82f9
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/soft-reconfiguration/node.def
@@ -0,0 +1,2 @@
+help: Set soft reconfiguration for neighbor
+commit:expression: $VAR(./inbound/) != ""; "protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@) soft-reconfiguration: you must specify the type of soft-reconfiguration"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def
new file mode 100644
index 00000000..95af274c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/address-family/ipv6-unicast/unsuppress-map/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to selectively unsuppress suppressed routes
+comp_help: possible completions:
+ <txt> route-map name
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../@) --neighbor $VAR(../../../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../../@) neighbor $VAR(../../../@): route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/node.def
new file mode 100644
index 00000000..67b47667
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/node.def
@@ -0,0 +1,2 @@
+help: Set to accept a route that contains the local-AS in the as-path
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/number/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/number/node.def
new file mode 100644
index 00000000..59bbf053
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/allowas-in/number/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set number of occurrences of AS number
+comp_help: \1 <1-10>\tnumber of times AS is allowed in path
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 10; "allowas-in number must be between 1 and 10"
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/as-path/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/as-path/node.def
new file mode 100644
index 00000000..02bc0751
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/as-path/node.def
@@ -0,0 +1 @@
+help: Set to send AS path unchanged
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/med/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/med/node.def
new file mode 100644
index 00000000..93154a64
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/med/node.def
@@ -0,0 +1 @@
+help: Set to send multi-exit discriminator unchanged
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/next-hop/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/next-hop/node.def
new file mode 100644
index 00000000..f8b1ca86
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/next-hop/node.def
@@ -0,0 +1 @@
+help: Set to send nexthop unchanged
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/node.def
new file mode 100644
index 00000000..a23f4502
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/attribute-unchanged/node.def
@@ -0,0 +1,3 @@
+help: Set whether BGP attributes are sent unchanged
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../@) neighbor $VAR(../@): you can't set attribute-unchanged for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/dynamic/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/dynamic/node.def
new file mode 100644
index 00000000..1ad03793
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/dynamic/node.def
@@ -0,0 +1,2 @@
+help: Set to advertise dynamic capability to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/node.def
new file mode 100644
index 00000000..f83cac18
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/node.def
@@ -0,0 +1 @@
+help: Set to advertise capabilities to this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/node.def
new file mode 100644
index 00000000..a0058566
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/node.def
@@ -0,0 +1 @@
+help: Set to advertise ORF capability to this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/node.def
new file mode 100644
index 00000000..cb911c75
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/node.def
@@ -0,0 +1 @@
+help: Set to advertise prefix-list ORF capability to this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/receive/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/receive/node.def
new file mode 100644
index 00000000..f228a5c3
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/receive/node.def
@@ -0,0 +1,3 @@
+help: Set capability to receive the ORF
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: $VAR(../../../../peer-group/) == ""; "You can't set orf capability receive for neighbor $VAR(../../../../@) in peer-group $VAR(../../../../peer-group/@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/send/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/send/node.def
new file mode 100644
index 00000000..aff136ca
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/capability/orf/prefix-list/send/node.def
@@ -0,0 +1,3 @@
+help: Set capability to send the ORF
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../../../@) --neighbor $VAR(../../../../@)"
+commit:expression: $VAR(../../../../peer-group/) == ""; "You can't set capability orf send for neighbor $VAR(../../../../@) in peer-group $VAR(../../../../peer-group/@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/node.def
new file mode 100644
index 00000000..675adffd
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/node.def
@@ -0,0 +1,3 @@
+help: Set to send default route to this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocold bgp $VAR(../../@) neighbor $VAR(../@): you can't set default-originate for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/route-map/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/route-map/node.def
new file mode 100644
index 00000000..f2209d3f
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/default-originate/route-map/node.def
@@ -0,0 +1,7 @@
+type: txt
+help: Set the route-map to specify criteria of the default
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" " ; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@) default-originate: route-map $VAR(@) doesn't exist"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set default-originate for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/description/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/description/node.def
new file mode 100644
index 00000000..9b8fe210
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/description/node.def
@@ -0,0 +1,2 @@
+type: txt
+help: Set a description for this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/disable-capability-negotiation/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/disable-capability-negotiation/node.def
new file mode 100644
index 00000000..f476e35e
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/disable-capability-negotiation/node.def
@@ -0,0 +1,2 @@
+help: Set to not perform capability negotiation with this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/disable-connected-check/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/disable-connected-check/node.def
new file mode 100644
index 00000000..98e3fb46
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/disable-connected-check/node.def
@@ -0,0 +1,2 @@
+help: Disable check to see if EBGP peer's address is a connected route
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/export/node.def
new file mode 100644
index 00000000..9d6f2f12
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/export/node.def
@@ -0,0 +1,14 @@
+type: txt
+help: Set an access-list to filter outgoing route updates to this neighbor
+comp_help: possible completions:
+ <1-65535> access-list number
+ <txt> access-list6 name
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/access-list/*
+ /opt/vyatta/config/active/policy/access-list6/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a distribute-list for a neighbor in a peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) export: access-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../prefix-list/export/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@) distribute-list export: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/import/node.def
new file mode 100644
index 00000000..76d48c47
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/import/node.def
@@ -0,0 +1,10 @@
+type: txt
+help: Set an access-list to filter incoming route updates from this neighbor
+comp_help: possible completions:
+ <1-65535> access-list number
+ <txt> access-list6 name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a distribute-list for a neighbor in a peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy access-list $VAR(@)\" ";\
+"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) import: access-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../prefix-list/import/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@) distribute-list import: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/node.def
new file mode 100644
index 00000000..4013725c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/distribute-list/node.def
@@ -0,0 +1 @@
+help: Set an access-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/ebgp-multihop/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/ebgp-multihop/node.def
new file mode 100644
index 00000000..d35d050e
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/ebgp-multihop/node.def
@@ -0,0 +1,6 @@
+type: u32
+help: Allow this EBGP neighbor to not be on a directly connected network
+comp_help: possible completions:
+ <1-255> number of hops
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+syntax:expression: $VAR(@) >=1 && $VAR(@) <= 255; "ebgp-multihop must be between 1 and 255"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/export/node.def
new file mode 100644
index 00000000..f510d1b7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/export/node.def
@@ -0,0 +1,10 @@
+type: txt
+help: Set an as-path-list to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/as-path-list/* )
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> as-path-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a filter-list for a neighbor in peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" ";"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) filter-list export: as-path-list $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/import/node.def
new file mode 100644
index 00000000..573ae57f
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/import/node.def
@@ -0,0 +1,10 @@
+type: txt
+help: Set an as-path-list to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/as-path-list/* )
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> as-path-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a filter-list for a neighbor in peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy as-path-list $VAR(@)\" ";"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) filter-list import: as-path-list $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/node.def
new file mode 100644
index 00000000..191c561b
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/filter-list/node.def
@@ -0,0 +1 @@
+help: Set an as-path-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.def
new file mode 100644
index 00000000..a7de0ea8
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.def
@@ -0,0 +1,8 @@
+tag:
+type: u32
+help: Set the local AS number [REQUIRED]
+comp_help: possible completions:
+ <1-4294967294> local AS number
+syntax:expression: $VAR(@) >=1 && $VAR(@) <= 4294967294; "local-as must be between 1 and 4294967294"
+commit:expression: $VAR(@) != $VAR(../../@); "protocols bgp $VAR(../../@) neighbor $VAR(../@): you can't set local-as the same as the router AS"
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.tag/no-prepend/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.tag/no-prepend/node.def
new file mode 100644
index 00000000..299e92e9
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/local-as/node.tag/no-prepend/node.def
@@ -0,0 +1 @@
+help: Set to not prepend local-as to updates from EBGP peers
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/maximum-prefix/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/maximum-prefix/node.def
new file mode 100644
index 00000000..98a1129f
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/maximum-prefix/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set the maximum number of prefixes to accept from this neighbor
+comp_help: possible completions:
+ <1-4294967295> prefix limit
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/nexthop-self/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/nexthop-self/node.def
new file mode 100644
index 00000000..ccbc5471
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/nexthop-self/node.def
@@ -0,0 +1,3 @@
+help: Set nexthop for routes sent to this neighbor to be the local router
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../@) neighbor $VAR(../@) next-hop-self: you can't set next-hop-self for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/override-capability/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/override-capability/node.def
new file mode 100644
index 00000000..5eec1b35
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/override-capability/node.def
@@ -0,0 +1,3 @@
+help: Set to ignore capability negotiation with specified neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../strict-capability/) == ""; "protocols bgp $VAR(../../@) neighbor $VAR(../@) override-capability: you can't set both strict-capability and override-capability"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/passive/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/passive/node.def
new file mode 100644
index 00000000..46e8fc40
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/passive/node.def
@@ -0,0 +1,2 @@
+help: Set to not try initiating a session with this neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/password/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/password/node.def
new file mode 100644
index 00000000..3a2f318d
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/password/node.def
@@ -0,0 +1,7 @@
+type: txt
+help: Set BGP MD5 password
+syntax:expression: exec " \
+ if [ `echo -n '$VAR(@)' | wc -c` -gt 80 ]; then \
+ echo Password must be 80 characters or less;\
+ exit 1 ; \
+ fi ; "
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/export/node.def
new file mode 100644
index 00000000..6341cde4
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/export/node.def
@@ -0,0 +1,13 @@
+type: txt
+help: Set a prefix-list to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/prefix-list/*
+ /opt/vyatta/config/active/policy/prefix-list6/*)
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> prefix-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a prefix-list for a neighbor in a peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) prefix-list import: prefix-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../distribute-list/export/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@) prefix-list export: you can't set both a prefix-list and a distribute list"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/import/node.def
new file mode 100644
index 00000000..8c7e99a7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/import/node.def
@@ -0,0 +1,14 @@
+type: txt
+help: Set a prefix-list to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/prefix-list/*
+ /opt/vyatta/config/active/policy/prefix-list6/*)
+ echo -n ${params[@]##*/}
+comp_help: possible completions:
+ <txt> prefix-list name
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a prefix-list for a neighbor in a peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy prefix-list $VAR(@)\" "; \
+"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) prefix-list import: prefix-list $VAR(@) doesn't exist"
+commit:expression: $VAR(../../distribute-list/import/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@) prefix-list import: you can't set both a prefix-list and a distribute list"
+
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/node.def
new file mode 100644
index 00000000..1a6187c9
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/prefix-list/node.def
@@ -0,0 +1 @@
+help: Set a prefix-list to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/remote-as/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/remote-as/node.def
new file mode 100644
index 00000000..a91de5a7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/remote-as/node.def
@@ -0,0 +1,6 @@
+type: u32
+help: Set neighbor BGP AS number [REQUIRED]
+comp_help: possible completions:
+ <1-4294967294> AS number
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4294967294; \
+ "remote-as must be between 1 and 4294967294"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/remove-private-as/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/remove-private-as/node.def
new file mode 100644
index 00000000..c234d2fc
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/remove-private-as/node.def
@@ -0,0 +1,3 @@
+help: Set to remove private AS numbers from AS path in outbound route updates
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../@) neighbor $VAR(../../@): you can't set remove-private-as for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/export/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/export/node.def
new file mode 100644
index 00000000..66e09b24
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/export/node.def
@@ -0,0 +1,10 @@
+type: txt
+help: Set a route-map to filter outgoing route updates to this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a route-map for a neighbor in a peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) export: route-map $VAR(@) doesn't exist"
+comp_help: possible completions:
+ <txt> route-map name
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/import/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/import/node.def
new file mode 100644
index 00000000..3163940a
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/import/node.def
@@ -0,0 +1,10 @@
+type: txt
+help: Set a route-map to filter incoming route updates from this neighbor
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../../@) --neighbor $VAR(../../@)"
+commit:expression: $VAR(../../peer-group/) == ""; "protocols bgp $VAR(../../../@) neighbor $VAR(../../@): you can't set a route-map for a neighbor in a peer-group"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../../@) neighbor $VAR(../../@) import: route-map $VAR(@) doesn't exist"
+comp_help: possible completions:
+ <txt> route-map name
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/node.def
new file mode 100644
index 00000000..7d581eb7
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-map/node.def
@@ -0,0 +1 @@
+help: Set a route-map to filter route updates to/from this neighbor
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/route-reflector-client/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-reflector-client/node.def
new file mode 100644
index 00000000..2fce607f
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-reflector-client/node.def
@@ -0,0 +1,4 @@
+help: Set neighbor as a route reflector client
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../@) neighbor $VAR(../@): you can't set route-reflector-client for a neighbor in a peer-group"
+commit:expression: $VAR(../../@) == $VAR(../remote-as/@); "protocols bgp $VAR(../../@) neighbor $VAR(../@) route-reflector-client: remote-as must equal local-as"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/route-server-client/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-server-client/node.def
new file mode 100644
index 00000000..b1cb9e39
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/route-server-client/node.def
@@ -0,0 +1,3 @@
+help: Set neighbor as route server client
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: $VAR(../peer-group/) == ""; "protocols bgp $VAR(../../@) neighbor $VAR(../@): you can't set route-server-client for a neighbor in a peer-group"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/shutdown/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/shutdown/node.def
new file mode 100644
index 00000000..21863355
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/shutdown/node.def
@@ -0,0 +1,2 @@
+help: Set to administratively shut down neighbor
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/inbound/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/inbound/node.def
new file mode 100644
index 00000000..b52799a6
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/inbound/node.def
@@ -0,0 +1,3 @@
+help: Set inbound soft reconfiguration for this neighbor [REQUIRED]
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as \
+ --as $VAR(../../../@) --neighbor $VAR(../../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/node.def
new file mode 100644
index 00000000..4c7f5706
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/soft-reconfiguration/node.def
@@ -0,0 +1,2 @@
+help: Set soft reconfiguration for neighbor
+commit:expression: $VAR(./inbound/) != ""; "protocols bgp $VAR(../../@) neighbor $VAR(../@) soft-reconfiguration: you must specify the type of soft-reconfiguration"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/connect/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/connect/node.def
new file mode 100644
index 00000000..3e00ec99
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/connect/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set the BGP connect timer for this neighbor
+comp_help: \1 <1-65535>\tconnect timer in seconds
+ 0\t\tdisable connect timer
+syntax:expression: $VAR(@) >=0 && $VAR(@) <= 65535; "BGP connect timer must be between 0 and 65535"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/holdtime/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/holdtime/node.def
new file mode 100644
index 00000000..3fcce7e2
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/holdtime/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set the BGP hold timer for this neighbor
+comp_help: \1 <1-65535>\thold timer in seconds
+ 0\t\tdisable hold timer
+syntax:expression: $VAR(@) == 0 || ($VAR(@) >= 4 && $VAR(@) <= 65535); "Holdtime interval must be 0 or between 4 and 65535"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/keepalive/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/keepalive/node.def
new file mode 100644
index 00000000..cb47e1ce
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/keepalive/node.def
@@ -0,0 +1,4 @@
+type: u32
+help: Set the BGP keepalive interval for this neighbor
+comp_help: \1 <1-65535>\tkeepalive interval in seconds
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "Keepalive interval must be between 1 and 65535"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/node.def
new file mode 100644
index 00000000..6fde9bd3
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/timers/node.def
@@ -0,0 +1,6 @@
+help: Set neighbor timers
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+# TODO: fix this. Can set connect &&|| (keepalive && holdtime)
+commit:expression: $VAR(./keepalive/) != ""; "protocols bgp $VAR(../../@) timers: you must set a keepalive interval"
+commit:expression: $VAR(./holdtime/) != ""; "protocols bgp $VAR(../../@) timers: you must set a holdtime interval"
+
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/unsuppress-map/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/unsuppress-map/node.def
new file mode 100644
index 00000000..ae2478a5
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/unsuppress-map/node.def
@@ -0,0 +1,9 @@
+type: txt
+help: Set a route-map to selectively unsuppress suppressed routes
+comp_help: possible completions:
+ <txt> route-map name
+allowed: local -a params
+ params=( /opt/vyatta/config/active/policy/route-map/* )
+ echo -n ${params[@]##*/}
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --exists \"policy route-map $VAR(@)\" ";"protocols bgp $VAR(../../@) neighbor $VAR(../@): route-map $VAR(@) doesn't exist"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/update-source/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/update-source/node.def
new file mode 100644
index 00000000..63fc633c
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/update-source/node.def
@@ -0,0 +1,7 @@
+type: txt
+help: Set the source IP of routing updates
+comp_help:
+ <x.x.x.x> Set IP address of route source
+ <interface> Set interface as route source
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-source $VAR(@)"
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"
diff --git a/templates/protocols/bgp/node.tag/peer-group/node.tag/weight/node.def b/templates/protocols/bgp/node.tag/peer-group/node.tag/weight/node.def
new file mode 100644
index 00000000..e5da2d21
--- /dev/null
+++ b/templates/protocols/bgp/node.tag/peer-group/node.tag/weight/node.def
@@ -0,0 +1,5 @@
+type: u32
+help: Set default weight for routes from this neighbor
+comp_help: \1 <1-65535>\tweight for routes from this neighbor
+syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 65535; "weight must be between 1 and 65535"
+commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --check-as --as $VAR(../../@) --neighbor $VAR(../@)"