diff options
-rw-r--r-- | debian/changelog | 70 | ||||
-rw-r--r-- | lib/Vyatta/Quagga/Config.pm | 28 | ||||
-rwxr-xr-x | scripts/bgp/vyatta-bgp.pl | 3 | ||||
-rw-r--r-- | templates/protocols/bgp/node.tag/parameters/confederation/peers/node.def | 2 |
4 files changed, 97 insertions, 6 deletions
diff --git a/debian/changelog b/debian/changelog index 7fcbd8a1..0e49c8a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -52,6 +52,76 @@ vyatta-cfg-quagga (0.18.101) unstable; urgency=low -- An-Cheng Huang <ancheng@vyatta.com> Thu, 22 Jul 2010 17:23:30 -0700 +vyatta-cfg-quagga (0.18.100+larkspur11) unstable; urgency=low + + * fix for bug 6054 + + -- Robert Bays <robert@vyatta.com> Mon, 16 Aug 2010 11:50:05 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur10) unstable; urgency=low + + * fix for bug 6034 + * fix for bug 6049 + + -- Robert Bays <robert@vyatta.com> Thu, 12 Aug 2010 18:31:11 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur9) unstable; urgency=low + + * fix for bug 6041 + + -- Robert Bays <robert@vyatta.com> Thu, 12 Aug 2010 10:58:10 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur8) unstable; urgency=low + + * Add missing step for peer group ttl-security + + -- Stephen Hemminger <shemminger@lenny.localdomain> Thu, 12 Aug 2010 05:51:29 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur7) unstable; urgency=low + + * fix for bug 6021 + * fix for bug 4393 + + -- Robert Bays <robert@vyatta.com> Tue, 10 Aug 2010 17:47:04 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur6) unstable; urgency=low + + * rename function to be more descriptive of the actual use + * fix for bug 5939 + + -- Robert Bays <robert@vyatta.com> Tue, 10 Aug 2010 15:55:22 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur5) unstable; urgency=low + + * fix for bug 5973 + + -- Robert Bays <robert@vyatta.com> Fri, 06 Aug 2010 16:56:21 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur4) unstable; urgency=low + + * larkspur specific fix for 5971 + + -- Robert Bays <robert@vyatta.com> Fri, 06 Aug 2010 16:43:26 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur3) unstable; urgency=low + + * fix for bug 5925 + * fix for bug 5937 + + -- Robert Bays <robert@vyatta.com> Fri, 06 Aug 2010 15:53:44 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur2) unstable; urgency=low + + * fix for bug 5892 + + -- Robert Bays <robert@vyatta.com> Fri, 23 Jul 2010 13:08:15 -0700 + +vyatta-cfg-quagga (0.18.100+larkspur1) unstable; urgency=low + + * UNRELEASED + + -- An-Cheng Huang <ancheng@vyatta.com> Thu, 22 Jul 2010 17:17:20 -0700 + vyatta-cfg-quagga (0.18.100) unstable; urgency=low * fix for bug 5893 diff --git a/lib/Vyatta/Quagga/Config.pm b/lib/Vyatta/Quagga/Config.pm index 644024e5..8afc1bed 100644 --- a/lib/Vyatta/Quagga/Config.pm +++ b/lib/Vyatta/Quagga/Config.pm @@ -342,9 +342,8 @@ sub _qtree { $qcom = $_qcomref; - # It's ugly that I have to create a new Vyatta config object every time, - # but something gets messed up on the stack if I don't. not sure - # what yet. would love to reference a global config and just reset Level. + # Would love to reference a global config and just reset Levels, + # but Vyatta::Config isn't recursion safe. my $config = new Vyatta::Config; $config->setLevel($level); @@ -356,7 +355,28 @@ sub _qtree { else { $vtysh = \%_vtyshdel; @nodes = $config->listDeleted(); - } + + # handle special case for multi-nodes values being deleted + # listDeleted() doesn't return the node as deleted if it is a multi + # unless all values are deleted. + # TODO: fix listDeleted() in Config.pm + # This is really, really fugly. + my @all_nodes = $config->listNodes(); + foreach my $node (@all_nodes) { + my @array = split /\s+/, $level; + push @array, $node; + my ($multi, $text, $default) = $config->parseTmpl(\@array); + if ($multi) { + my @orig_values = $config->returnOrigValues("$node"); + my @new_values = $config->returnValues("$node"); + my %chash = $config->compareValueLists(\@orig_values, \@new_values); + if (${$chash{'deleted'}}[0]) { + push @nodes, $node; + } + } + } + + } ## end else { if ($_DEBUG) { print "DEBUG: _qtree - action: $action\tlevel: $level\n"; } diff --git a/scripts/bgp/vyatta-bgp.pl b/scripts/bgp/vyatta-bgp.pl index a26501e0..291113eb 100755 --- a/scripts/bgp/vyatta-bgp.pl +++ b/scripts/bgp/vyatta-bgp.pl @@ -1243,7 +1243,8 @@ sub bgp_type_change { # check if changing from iBGP to eBGP if ( (iBGP_peer(1, $neighbor, $as, $ntype)) && (! iBGP_peer(0, $neighbor, $as, $ntype)) ) { - if ($config->exists("$as $ntype $neighbor route-reflector-client")) { + if ( $config->exists("$as $ntype $neighbor route-reflector-client") || + $config->exists("$as $ntype $neighbor address-family ipv6-unicast route-reflector-client") ) { return "can not set route-reflector-client and an eBGP remote-as at the same time\n"; } } diff --git a/templates/protocols/bgp/node.tag/parameters/confederation/peers/node.def b/templates/protocols/bgp/node.tag/parameters/confederation/peers/node.def index e806b5d7..7e165489 100644 --- a/templates/protocols/bgp/node.tag/parameters/confederation/peers/node.def +++ b/templates/protocols/bgp/node.tag/parameters/confederation/peers/node.def @@ -1,6 +1,6 @@ multi: type: u32 help: Peer ASs in the BGP confederation -val_help: u32:1-4294967294; Peer AS number numbers (ex: "435 234") +val_help: u32:1-4294967294; Peer AS number syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4294967294; "confederation AS id must be between 1 and 4294967294" commit:expression: exec "/opt/vyatta/sbin/vyatta-bgp.pl --confed-iBGP-ASN-check $VAR(@) --as $VAR(../../../@)"; "Can't set confederation peers ASN to $VAR(@). Delete any neighbors with remote-as $VAR(@) and/or change the local ASN first." |