summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsever-sever <v.gletenko@vyos.io>2021-01-24 12:13:54 +0000
committersever-sever <v.gletenko@vyos.io>2021-01-24 12:34:50 +0000
commitda7eb74f8c96e0b25942fdbd86c3b4b777e3836c (patch)
tree419fcab1c8ab863841256bfefdf4767fa3ba0499
parent58712cb809143d6d5eb62bef47bd5831fef1e847 (diff)
downloadvyatta-cfg-quagga-da7eb74f8c96e0b25942fdbd86c3b4b777e3836c.tar.gz
vyatta-cfg-quagga-da7eb74f8c96e0b25942fdbd86c3b4b777e3836c.zip
bgp: T2174: Delete script vyatta-bgp.pl
-rw-r--r--Makefile.am3
-rwxr-xr-xscripts/bgp/vyatta-bgp.pl1809
2 files changed, 1 insertions, 1811 deletions
diff --git a/Makefile.am b/Makefile.am
index 46a48522..dce3ca34 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,8 +4,7 @@ bin_sudo_usersdir = $(bindir)/sudo-users
curverdir = $(sysconfdir)/config-migrate/current
gentmpdir = generated-templates
-sbin_SCRIPTS = scripts/bgp/vyatta-bgp.pl
-sbin_SCRIPTS += scripts/policy/vyatta-policy.pl
+sbin_SCRIPTS = scripts/policy/vyatta-policy.pl
sbin_SCRIPTS += scripts/vyatta_quagga_utils.pl
sbin_SCRIPTS += scripts/policy/vyatta-check-as-prepend.pl
sbin_SCRIPTS += scripts/vyatta-policy-action-verify.pl
diff --git a/scripts/bgp/vyatta-bgp.pl b/scripts/bgp/vyatta-bgp.pl
deleted file mode 100755
index 4219d36e..00000000
--- a/scripts/bgp/vyatta-bgp.pl
+++ /dev/null
@@ -1,1809 +0,0 @@
-#!/usr/bin/perl
-# **** License ****
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# A copy of the GNU General Public License is available as
-# `/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution
-# or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'.
-# You can also obtain it by writing to the Free Software Foundation,
-# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-# MA 02110-1301, USA.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2009,2010 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Various
-# Date: 2009-2010
-# Description: Script to setup Quagga BGP configuration
-#
-# **** End License ****
-#
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-use NetAddr::IP::Lite;
-
-use lib "/opt/vyatta/share/perl5/";
-use Vyatta::Config;
-use Vyatta::Quagga::Config;
-use Vyatta::Misc;
-
-my %qcom = (
- 'protocols' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var' => {
- set => 'router bgp #3',
- del => 'no router bgp #3',
- },
- 'protocols bgp var address-family' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv6-unicast' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv6-unicast aggregate-address' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv6-unicast aggregate-address var' => {
- set => 'router bgp #3 ; address-family ipv6 ; aggregate-address #7 ?summary-only',
- del => 'router bgp #3 ; address-family ipv6 ; no aggregate-address #7',
- },
- 'protocols bgp var address-family ipv6-unicast network' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv6-unicast network var' => {
- set => 'router bgp #3 ; address-family ipv6 ; network #7',
- del => 'router bgp #3 ; address-family ipv6 ; no network #7',
- },
- 'protocols bgp var address-family ipv6-unicast network var route-map' => {
- set => 'router bgp #3 ; address-family ipv6 ; network #7 route-map #9',
- del => 'router bgp #3 ; address-family ipv6 ; no network #7 route-map #9',
- },
- 'protocols bgp var address-family ipv6-unicast network var path-limit' => {
- set => 'router bgp #3 ; address-family ipv6 ; network #7 pathlimit #9',
- del => 'router bgp #3 ; address-family ipv6 ; no network #7 pathlimit #9',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv6-unicast redistribute connected' => {
- set => 'router bgp #3 ; address-family ipv6 ; redistribute connected',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute connected',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute connected metric' => {
- set => 'router bgp #3 ; address-family ipv6 ; redistribute connected metric #9',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute connected metric #9',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute connected route-map' => {
- set => 'router bgp #3 ; address-family ipv6 ; redistribute connected route-map #9',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute connected route-map #9',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute kernel' => {
- set => 'router bgp #3 ; address-family ipv6 ; no redistribute kernel ; redistribute kernel ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute kernel',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute ospfv3' => {
- set => 'router bgp #3 ; address-family ipv6 ; no redistribute ospf6 ; redistribute ospf6 ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute ospf6',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute ripng' => {
- set => 'router bgp #3 ; address-family ipv6 ; no redistribute ripng ; redistribute ripng ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute ripng',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv6-unicast redistribute static' => {
- set => 'router bgp #3 ; address-family ipv6 ; no redistribute static ; redistribute static ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv6 ; no redistribute static',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv4-unicast aggregate-address' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv4-unicast aggregate-address var' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; aggregate-address #7 ?as-set ?summary-only',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no aggregate-address #7 ?as-set ?summary-only',
- },
- 'protocols bgp var address-family ipv4-unicast network' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv4-unicast network var' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; network #7 ?backdoor',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no network #7',
- },
- 'protocols bgp var address-family ipv4-unicast network var route-map' => {
- set => 'router bgp #3 ; network #7 route-map #9',
- del => 'router bgp #3 ; no network #7 route-map #9 ; network #7',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var address-family ipv4-unicast redistribute connected' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; redistribute connected ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute connected',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute connected metric' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; redistribute connected metric #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute connected metric #9',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute connected route-map' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; redistribute connected route-map #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute connected route-map #9',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute kernel' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute kernel ; redistribute kernel ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute kernel',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute ospf' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute ospf ; redistribute ospf ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute ospf',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute rip' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute rip ; redistribute rip ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute rip',
- noerr => 'set',
- },
- 'protocols bgp var address-family ipv4-unicast redistribute static' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute static ; redistribute static ?route-map ?metric',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no redistribute static',
- noerr => 'set',
- },
- 'protocols bgp var maximum-paths' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var maximum-paths ebgp' => {
- set => 'router bgp #3 ; maximum-paths #6',
- del => 'router bgp #3 ; no maximum-paths #6',
- },
- 'protocols bgp var maximum-paths ibgp' => {
- set => 'router bgp #3 ; maximum-paths ibgp #6',
- del => 'router bgp #3 ; no maximum-paths ibgp #6',
- },
- 'protocols bgp var neighbor' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var' => {
- set => undef,
- del => 'router bgp #3 ; no neighbor #5',
- noerr => 'del',
- },
- 'protocols bgp var neighbor var description' => {
- set => 'router bgp #3 ; neighbor #5 description #7',
- del => 'router bgp #3 ; no neighbor #5 description',
- },
- 'protocols bgp var neighbor var address-family' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast weight' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 weight #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 weight #9',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 activate',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 activate',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast allowas-in' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 allowas-in',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 allowas-in',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast allowas-in number' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 allowas-in #10',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 allowas-in ; neighbor #5 allowas-in',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast attribute-unchanged' => {
- set => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast capability' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast capability orf' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast capability orf prefix-list receive' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list receive',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list send',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 default-originate',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast default-originate route-map' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate route-map #10',
- del => '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' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast disable-send-community extended' => {
- set => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community extended',
- del => 'router bgp #3 ; address-family ipv6 ; neighbor #5 send-community extended',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast disable-send-community standard' => {
- set => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community standard',
- del => 'router bgp #3 ; address-family ipv6 ; neighbor #5 send-community standard',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast distribute-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast distribute-list export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 in',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 distribute-list #10 in',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast filter-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast filter-list export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 in',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 filter-list #10 in',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast maximum-prefix' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 maximum-prefix #9',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 maximum-prefix #9',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast nexthop-local' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 nexthop-local unchanged',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 nexthop-local unchanged',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast nexthop-self' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 next-hop-self',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 next-hop-self',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast nexthop-self force' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 next-hop-self force',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 next-hop-self force',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast peer-group' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 peer-group #9',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 peer-group #9 ; neighbor #5 activate',
- noerr => 'del',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast prefix-list export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 in',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 remove-private-AS',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 remove-private-AS',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast route-map' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast route-map export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 in',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-reflector-client',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 route-reflector-client',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast route-server-client' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-server-client',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 route-server-client',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast soft-reconfiguration' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast soft-reconfiguration inbound' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 soft-reconfiguration inbound',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 soft-reconfiguration inbound',
- },
- 'protocols bgp var neighbor var address-family ipv6-unicast unsuppress-map' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 unsuppress-map #9',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 unsuppress-map #9',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 activate',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 activate',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast allowas-in' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 allowas-in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 allowas-in',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast allowas-in number' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 allowas-in #10',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 allowas-in ; neighbor #5 allowas-in',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast as-override' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 as-override',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 as-override',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast attribute-unchanged' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 attribute-unchanged ?as-path ?med ?next-hop',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast capability' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast capability orf' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast capability orf prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast capability orf prefix-list receive' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 capability orf prefix-list receive',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 capability orf prefix-list receive',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast capability orf prefix-list send' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 capability orf prefix-list send',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 capability orf prefix-list send',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast default-originate' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 default-originate',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 default-originate',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast default-originate route-map' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 default-originate route-map #10',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 default-originate route-map #10',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast disable-send-community' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast disable-send-community extended' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 send-community extended',
- del => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 send-community extended',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast disable-send-community standard' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 send-community standard',
- del => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 send-community standard',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast distribute-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast distribute-list export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 distribute-list #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 distribute-list #10 out',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast distribute-list import' => {
- set => 'router bgp #3 ; neighbor #5 distribute-list #10 in',
- del => 'router bgp #3 ; no neighbor #5 distribute-list #10 in',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast filter-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast filter-list export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 filter-list #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 filter-list #10 out',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast filter-list import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 filter-list #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 filter-list #10 in',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast maximum-prefix' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 maximum-prefix #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 maximum-prefix',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast nexthop-self' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 next-hop-self',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 next-hop-self',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast nexthop-self force' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 next-hop-self force',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 next-hop-self force',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast prefix-list export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 prefix-list #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 prefix-list #10 out',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast prefix-list import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 prefix-list #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 prefix-list #10 in',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast remove-private-as' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 remove-private-AS',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 remove-private-AS',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast route-map' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast route-map export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-map #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-map #10 out',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast route-map import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-map #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-map #10 in',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast route-reflector-client' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-reflector-client',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-reflector-client',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast route-server-client' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-server-client',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-server-client',
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast soft-reconfiguration' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var address-family ipv4-unicast soft-reconfiguration inbound' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 soft-reconfiguration inbound',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 soft-reconfiguration inbound',
- },
- 'protocols bgp var neighbor var remote-as' => {
- set => 'router bgp #3 ; neighbor #5 remote-as #7 ; neighbor #5 activate',
- del => 'router bgp #3 ; no neighbor #5 remote-as #7',
- },
- 'protocols bgp var neighbor var interface' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var interface peer-group' => {
- set => 'router bgp #3 ; neighbor #5 interface peer-group #8',
- del => 'router bgp #3 ; no neighbor #5 interface peer-group #8',
- },
- 'protocols bgp var neighbor var interface remote-as' => {
- set => 'router bgp #3 ; neighbor #5 interface remote-as #8',
- del => 'router bgp #3 ; no neighbor #5 interface remote-as #8',
- },
- 'protocols bgp var neighbor var interface v6only' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var interface v6only peer-group' => {
- set => 'router bgp #3 ; neighbor #5 interface v6only peer-group #9',
- del => 'router bgp #3 ; no neighbor #5 interface v6only peer-group #9',
- },
- 'protocols bgp var neighbor var interface v6only remote-as' => {
- set => 'router bgp #3 ; neighbor #5 interface v6only remote-as #9',
- del => 'router bgp #3 ; no neighbor #5 interface v6only remote-as #9',
- },
- 'protocols bgp var neighbor var disable-capability-negotiation' => {
- set => 'router bgp #3 ; neighbor #5 dont-capability-negotiate',
- del => 'router bgp #3 ; no neighbor #5 dont-capability-negotiate',
- },
- 'protocols bgp var neighbor var disable-connected-check' => {
- set => 'router bgp #3 ; neighbor #5 disable-connected-check',
- del => 'router bgp #3 ; no neighbor #5 disable-connected-check',
- },
- 'protocols bgp var neighbor var ebgp-multihop' => {
- set => 'router bgp #3 ; neighbor #5 ebgp-multihop #7',
- del => 'router bgp #3 ; no neighbor #5 ebgp-multihop',
- },
- 'protocols bgp var neighbor var advertisement-interval' => {
- set => 'router bgp #3 ; neighbor #5 advertisement-interval #7',
- del => 'router bgp #3 ; no neighbor #5 advertisement-interval',
- },
- 'protocols bgp var neighbor var capability' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var capability dynamic' => {
- set => 'router bgp #3 ; neighbor #5 capability dynamic',
- del => 'router bgp #3 ; no neighbor #5 capability dynamic',
- },
- 'protocols bgp var neighbor var capability extended-nexthop' => {
- set => 'router bgp #3 ; neighbor #5 capability extended-nexthop',
- del => 'router bgp #3 ; no neighbor #5 capability extended-nexthop',
- },
- 'protocols bgp var neighbor var local-as' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var local-as var' => {
- set => 'router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as #7',
- del => 'router bgp #3 ; no neighbor #5 local-as',
- },
- 'protocols bgp var neighbor var local-as var no-prepend' => {
- set => 'router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as #7 no-prepend',
- del => 'router bgp #3 ; no neighbor #5 local-as #7 no-prepend ; neighbor #5 local-as #7',
- },
- 'protocols bgp var neighbor var local-as var no-prepend replace-as' => {
- set => 'router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as #7 no-prepend replace-as',
- del => 'router bgp #3 ; neighbor #5 local-as #7 no-prepend',
- },
- 'protocols bgp var neighbor var override-capability' => {
- set => 'router bgp #3 ; neighbor #5 override-capability',
- del => 'router bgp #3 ; no neighbor #5 override-capability',
- },
- 'protocols bgp var neighbor var passive' => {
- set => 'router bgp #3 ; neighbor #5 passive',
- del => 'router bgp #3 ; no neighbor #5 passive',
- },
- 'protocols bgp var neighbor var bfd' => {
- set => 'router bgp #3 ; neighbor #5 bfd',
- del => 'router bgp #3 ; no neighbor #5 bfd',
- },
- 'protocols bgp var neighbor var bfd check-control-plane-failure' => {
- set => 'router bgp #3 ; neighbor #5 bfd check-control-plane-failure',
- del => 'router bgp #3 ; no neighbor #5 bfd check-control-plane-failure',
- },
- 'protocols bgp var neighbor var password' => {
- set => 'router bgp #3 ; neighbor #5 password #7',
- del => 'router bgp #3 ; no neighbor #5 password',
- },
- 'protocols bgp var neighbor var peer-group' => {
- set => 'router bgp #3 ; neighbor #5 peer-group #7',
- del => 'router bgp #3 ; no neighbor #5 peer-group #7',
- noerr => 'del',
- },
- 'protocols bgp var neighbor var port' => {
- set => 'router bgp #3 ; neighbor #5 port #7',
- del => 'router bgp #3 ; no neighbor #5 port',
- },
- 'protocols bgp var neighbor var shutdown' => {
- set => 'router bgp #3 ; neighbor #5 shutdown',
- del => 'router bgp #3 ; no neighbor #5 shutdown',
- },
- 'protocols bgp var neighbor var strict-capability-match' => {
- set => 'router bgp #3 ; neighbor #5 strict-capability-match',
- del => 'router bgp #3 ; no neighbor #5 strict-capability-match',
- },
- 'protocols bgp var neighbor var timers' => {
- set => 'router bgp #3 ; neighbor #5 timers @keepalive @holdtime',
- del => 'router bgp #3 ; no neighbor #5 timers',
- },
- 'protocols bgp var neighbor var timers connect' => {
- set => 'router bgp #3 ; neighbor #5 timers connect #8',
- del => 'router bgp #3 ; no neighbor #5 timers connect',
- },
- 'protocols bgp var neighbor var ttl-security' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var neighbor var ttl-security hops' => {
- set => 'router bgp #3 ; neighbor #5 ttl-security hops #8',
- del => 'router bgp #3 ; no neighbor #5 ttl-security hops #8',
- },
- 'protocols bgp var neighbor var unsuppress-map' => {
- set => 'router bgp #3 ; neighbor #5 unsuppress-map #7',
- del => 'router bgp #3 ; no neighbor #5 unsuppress-map #7',
- },
- 'protocols bgp var neighbor var update-source' => {
- set => 'router bgp #3 ; neighbor #5 update-source #7',
- del => 'router bgp #3 ; no neighbor #5 update-source',
- },
- 'protocols bgp var neighbor var weight' => {
- set => 'router bgp #3 ; neighbor #5 weight #7',
- del => 'router bgp #3 ; no neighbor #5 weight',
- },
- 'protocols bgp var parameters' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters always-compare-med' => {
- set => 'router bgp #3 ; bgp always-compare-med',
- del => 'router bgp #3 ; no bgp always-compare-med',
- },
- 'protocols bgp var parameters bestpath' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters bestpath as-path' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters bestpath as-path confed' => {
- set => 'router bgp #3 ; bgp bestpath as-path confed',
- del => 'router bgp #3 ; no bgp bestpath as-path confed',
- },
- 'protocols bgp var parameters bestpath as-path ignore' => {
- set => 'router bgp #3 ; bgp bestpath as-path ignore',
- del => 'router bgp #3 ; no bgp bestpath as-path ignore',
- },
- 'protocols bgp var parameters bestpath as-path multipath-relax' => {
- set => 'router bgp #3 ; bgp bestpath as-path multipath-relax',
- del => 'router bgp #3 ; no bgp bestpath as-path multipath-relax',
- },
- 'protocols bgp var parameters bestpath compare-routerid' => {
- set => 'router bgp #3 ; bgp bestpath compare-routerid',
- del => 'router bgp #3 ; no bgp bestpath compare-routerid',
- },
- 'protocols bgp var parameters bestpath med' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters bestpath med confed' => {
- set => 'router bgp #3 ; bgp bestpath med confed',
- del => 'router bgp #3 ; no bgp bestpath med confed',
- },
- 'protocols bgp var parameters bestpath med missing-as-worst' => {
- set => 'router bgp #3 ; bgp bestpath med missing-as-worst',
- del => 'router bgp #3 ; no bgp bestpath med missing-as-worst',
- },
- 'protocols bgp var parameters cluster-id' => {
- set => 'router bgp #3 ; bgp cluster-id #6',
- del => 'router bgp #3 ; no bgp cluster-id #6',
- },
- 'protocols bgp var parameters confederation' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters confederation identifier' => {
- set => 'router bgp #3 ; bgp confederation identifier #7',
- del => 'router bgp #3 ; no bgp confederation identifier #7',
- },
- 'protocols bgp var parameters confederation peers' => {
- set => 'router bgp #3 ; bgp confederation peers #7',
- del => 'router bgp #3 ; no bgp confederation peers #7',
- },
- 'protocols bgp var parameters dampening' => {
- set => 'router bgp #3 ; no bgp dampening ; bgp dampening @half-life @re-use @start-suppress-time @max-suppress-time',
- del => 'router bgp #3 ; no bgp dampening',
- },
- 'protocols bgp var parameters default' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters default local-pref' => {
- set => 'router bgp #3 ; bgp default local-preference #7',
- del => 'router bgp #3 ; no bgp default local-preference #7',
- },
- 'protocols bgp var parameters default no-ipv4-unicast' => {
- set => 'router bgp #3 ; no bgp default ipv4-unicast',
- del => 'router bgp #3 ; bgp default ipv4-unicast',
- },
- 'protocols bgp var parameters deterministic-med' => {
- set => 'router bgp #3 ; bgp deterministic-med',
- del => 'router bgp #3 ; no bgp deterministic-med',
- },
- 'protocols bgp var parameters network-import-check' => {
- set => 'router bgp #3 ; bgp network import-check',
- del => 'router bgp #3 ; no bgp network import-check',
- },
- 'protocols bgp var parameters distance' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters distance global' => {
- set => 'router bgp #3 ; distance bgp @external @internal @local',
- del => 'router bgp #3 ; no distance bgp',
- },
- 'protocols bgp var parameters distance prefix' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters distance prefix var' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters distance prefix var distance' => {
- set => 'router bgp #3 ; distance #9 #7 ',
- del => 'router bgp #3 ; no distance #9 #7',
- },
- 'protocols bgp var parameters graceful-restart' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var parameters graceful-restart stalepath-time' => {
- set => 'router bgp #3 ; bgp graceful-restart stalepath-time #7',
- del => 'router bgp #3 ; no bgp graceful-restart stalepath-time #7',
- },
- 'protocols bgp var parameters log-neighbor-changes' => {
- set => 'router bgp #3 ; bgp log-neighbor-changes',
- del => 'router bgp #3 ; no bgp log-neighbor-changes',
- },
- 'protocols bgp var parameters no-client-to-client-reflection' => {
- set => 'router bgp #3 ; no bgp client-to-client reflection',
- del => 'router bgp #3 ; bgp client-to-client reflection',
- },
- 'protocols bgp var parameters no-fast-external-failover' => {
- set => 'router bgp #3 ; no bgp fast-external-failover',
- del => 'router bgp #3 ; bgp fast-external-failover',
- },
- 'protocols bgp var parameters router-id' => {
- set => 'router bgp #3 ; bgp router-id #6',
- del => 'router bgp #3 ; no bgp router-id #6',
- },
- 'protocols bgp var peer-group' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var' => {
- set => 'router bgp #3 ; neighbor #5 peer-group',
- del => 'router bgp #3 ; no neighbor #5 peer-group',
- noerr => 'set',
- },
- 'protocols bgp var peer-group var address-family' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 activate',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 activate',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast allowas-in' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 allowas-in',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 allowas-in',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast allowas-in number' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 allowas-in #10',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 allowas-in ; neighbor #5 allowas-in',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast attribute-unchanged' => {
- set => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 attribute-unchanged',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast capability' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast capability dynamic' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 capability dynamic',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 capability dynamic',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast capability orf' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast capability orf prefix-list receive' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list receive',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 capability orf prefix-list send',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 default-originate route-map #10',
- del => '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' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast disable-send-community extended' => {
- set => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community extended',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 send-community standard',
- del => 'router bgp #3 ; address-family ipv6 ; neighbor #5 send-community standard',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast distribute-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast distribute-list export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 distribute-list #10 in',
- del => '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' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast filter-list export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 filter-list #10 in',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 maximum-prefix #9',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 maximum-prefix #9',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast nexthop-local' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 nexthop-local unchanged',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 nexthop-local unchanged',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast nexthop-self' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 next-hop-self',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 next-hop-self',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast nexthop-self force' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 next-hop-self force',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 next-hop-self force',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast prefix-list export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 prefix-list #10 in',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 remove-private-AS',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 remove-private-AS',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast route-map' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast route-map export' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 out',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-map #10 in',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-reflector-client',
- del => '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' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 route-server-client',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 route-server-client',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast soft-reconfiguration' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast soft-reconfiguration inbound' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 soft-reconfiguration inbound',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 soft-reconfiguration inbound',
- },
- 'protocols bgp var peer-group var address-family ipv6-unicast unsuppress-map' => {
- set => 'router bgp #3 ; address-family ipv6 ; neighbor #5 unsuppress-map #9',
- del => 'router bgp #3 ; address-family ipv6 ; no neighbor #5 unsuppress-map #9',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 activate',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 activate',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast allowas-in' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 allowas-in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 allowas-in',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast allowas-in number' => {
- set => 'router bgp #3 ; neighbor #5 allowas-in #10',
- del => 'router bgp #3 ; no neighbor #5 allowas-in ; neighbor #5 allowas-in',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast attribute-unchanged' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 attribute-unchanged ; neighbor #5 attribute-unchanged ?as-path ?med ?next-hop',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 attribute-unchanged ?as-path ?med ?next-hop',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast capability' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast capability orf' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast capability orf prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast capability orf prefix-list receive' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 capability orf prefix-list receive',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 capability orf prefix-list receive',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast capability orf prefix-list send' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 capability orf prefix-list send',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 capability orf prefix-list send',
- },
- ## Note that the activate will need to be moved when we migrate to
- ## supporting a single IP version in a peering session.
- 'protocols bgp var peer-group var address-family ipv4-unicast default-originate' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 activate ; neighbor #5 default-originate',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 default-originate',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast default-originate route-map' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 activate ; neighbor #5 default-originate route-map #10',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 default-originate route-map #10',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast disable-send-community' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast disable-send-community extended' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 send-community extended',
- del => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 send-community extended',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast disable-send-community standard' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 send-community standard',
- del => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 send-community standard',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast distribute-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast distribute-list export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 distribute-list #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 distribute-list #10 out',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast distribute-list import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 distribute-list #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 distribute-list #10 in',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast filter-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast filter-list export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 filter-list #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 filter-list #10 out',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast filter-list import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 filter-list #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 filter-list #10 in',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast maximum-prefix' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 maximum-prefix #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 maximum-prefix #9',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast nexthop-self' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 next-hop-self',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 next-hop-self',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast nexthop-self force' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 next-hop-self force',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 next-hop-self force',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast prefix-list' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast prefix-list export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 prefix-list #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 prefix-list #10 out',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast prefix-list import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 prefix-list #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 prefix-list #10 in',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast remove-private-as' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 remove-private-AS',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 remove-private-AS',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast route-map' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast route-map export' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-map #10 out',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-map #10 out',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast route-map import' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-map #10 in',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-map #10 in',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast route-reflector-client' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-reflector-client',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-reflector-client',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast route-server-client' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 route-server-client',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 route-server-client',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast soft-reconfiguration' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast soft-reconfiguration inbound' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 soft-reconfiguration inbound',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 soft-reconfiguration inbound',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast unsuppress-map' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 unsuppress-map #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 unsuppress-map #9',
- },
- 'protocols bgp var peer-group var address-family ipv4-unicast weight' => {
- set => 'router bgp #3 ; address-family ipv4 unicast ; neighbor #5 weight #9',
- del => 'router bgp #3 ; address-family ipv4 unicast ; no neighbor #5 weight #9',
- },
- 'protocols bgp var peer-group var ebgp-multihop' => {
- set => 'router bgp #3 ; neighbor #5 ebgp-multihop #7',
- del => 'router bgp #3 ; no neighbor #5 ebgp-multihop #7',
- },
- 'protocols bgp var peer-group var remote-as' => {
- set => 'router bgp #3 ; neighbor #5 peer-group ; neighbor #5 remote-as #7',
- del => 'router bgp #3 ; no neighbor #5 remote-as #7',
- noerr => 'set',
- },
- 'protocols bgp var peer-group var capability' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var capability dynamic' => {
- set => 'router bgp #3 ; neighbor #5 capability dynamic',
- del => 'router bgp #3 ; no neighbor #5 capability dynamic',
- },
- 'protocols bgp var peer-group var capability extended-nexthop' => {
- set => 'router bgp #3 ; neighbor #5 capability extended-nexthop',
- del => 'router bgp #3 ; no neighbor #5 capability extended-nexthop',
- },
- 'protocols bgp var peer-group var disable-capability-negotiation' => {
- set => 'router bgp #3 ; neighbor #5 dont-capability-negotiate',
- del => 'router bgp #3 ; no neighbor #5 dont-capability-negotiate',
- },
- 'protocols bgp var peer-group var disable-connected-check' => {
- set => 'router bgp #3 ; neighbor #5 disable-connected-check',
- del => 'router bgp #3 ; no neighbor #5 disable-connected-check',
- },
- 'protocols bgp var peer-group var local-as' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var local-as var' => {
- set => 'router bgp #3 ; no neighbor #5 local-as ; neighbor #5 local-as #7',
- del => 'router bgp #3 ; no neighbor #5 local-as #7',
- },
- 'protocols bgp var peer-group var local-as var no-prepend' => {
- set => 'router bgp #3 ; no neighbor #5 local-as #7 ; neighbor #5 local-as #7i no-prepend',
- del => 'router bgp #3 ; no neighbor #5 local-as #7 no-prepend ; neighbor #5 local-as #7',
- },
- 'protocols bgp var peer-group var override-capability' => {
- set => 'router bgp #3 ; neighbor #5 override-capability',
- del => 'router bgp #3 ; no neighbor #5 override-capability',
- },
- 'protocols bgp var peer-group var passive' => {
- set => 'router bgp #3 ; neighbor #5 passive',
- del => 'router bgp #3 ; no neighbor #5 passive',
- },
- 'protocols bgp var peer-group var bfd' => {
- set => 'router bgp #3 ; neighbor #5 bfd',
- del => 'router bgp #3 ; no neighbor #5 bfd',
- },
- 'protocols bgp var peer-group var password' => {
- set => 'router bgp #3 ; neighbor #5 password #7',
- del => 'router bgp #3 ; no neighbor #5 password',
- },
- 'protocols bgp var peer-group var port' => {
- set => 'router bgp #3 ; neighbor #5 port #7',
- del => 'router bgp #3 ; no neighbor #5 port #7',
- },
- 'protocols bgp var peer-group var shutdown' => {
- set => 'router bgp #3 ; neighbor #5 shutdown',
- del => 'router bgp #3 ; no neighbor #5 shutdown',
- },
- 'protocols bgp var peer-group var timers' => {
- set => 'router bgp #3 ; neighbor #5 timers @keepalive @holdtime',
- del => 'router bgp #3 ; no neighbor #5 timers',
- },
- 'protocols bgp var peer-group var timers connect' => {
- set => 'router bgp #3 ; neighbor #5 timers connect #8',
- del => 'router bgp #3 ; no neighbor #5 timers connect #8',
- },
- 'protocols bgp var peer-group var ttl-security' => {
- set => undef,
- del => undef,
- },
- 'protocols bgp var peer-group var ttl-security hops' => {
- set => 'router bgp #3 ; neighbor #5 ttl-security hops #8',
- del => 'router bgp #3 ; no neighbor #5 ttl-security hops #8',
- },
- 'protocols bgp var peer-group var update-source' => {
- set => 'router bgp #3 ; neighbor #5 update-source #7',
- del => 'router bgp #3 ; no neighbor #5 update-source',
- },
- 'protocols bgp var timers' => {
- set => 'router bgp #3 ; timers bgp @keepalive @holdtime',
- del => 'router bgp #3 ; no timers bgp',
- },
-);
-
-if ( ! -e "/usr/sbin/zebra" ) {
- $qcom{'protocols bgp var neighbor var remote-as'}{'set'} = 'router bgp #3 ; neighbor #5 remote-as #7';
-}
-
-my ( $pg, $as, $neighbor );
-my ( $main, $peername, $isneighbor, $checkpeergroups, $checkpeergroups6, $checksource,
- $isiBGPpeer, $wasiBGPpeer, $confedibgpasn, $listpeergroups, $checkremoteas, $checkbfdpeer, $checkbfdgroup);
-
-GetOptions(
- "peergroup=s" => \$pg,
- "as=s" => \$as,
- "neighbor=s" => \$neighbor,
- "check-peergroup-name=s" => \$peername,
- "check-neighbor-ip" => \$isneighbor,
- "check-peer-groups" => \$checkpeergroups,
- "check-peer-groups-6" => \$checkpeergroups6,
- "check-source=s" => \$checksource,
- "is-iBGP" => \$isiBGPpeer,
- "was-iBGP" => \$wasiBGPpeer,
- "confed-iBGP-ASN-check=s" => \$confedibgpasn,
- "list-peer-groups" => \$listpeergroups,
- "check-remote-as=s" => \$checkremoteas,
- "check-bfd-peer=s" => \$checkbfdpeer,
- "check-peer-group-bfd=s" => \$checkbfdgroup,
- "main" => \$main,
-);
-
-main() if ($main);
-check_peergroup_name($peername) if ($peername);
-check_neighbor_ip($neighbor) if ($isneighbor);
-check_for_peer_groups( $pg, $as ) if ($checkpeergroups);
-check_for_peer_groups6( $pg, $as ) if ($checkpeergroups6);
-check_source($checksource) if ($checksource);
-confed_iBGP_ASN($as, $confedibgpasn) if ($confedibgpasn);
-is_iBGP_peer($neighbor, $as) if ($isiBGPpeer);
-was_iBGP_peer($neighbor, $as) if ($wasiBGPpeer);
-list_peer_groups($as) if ($listpeergroups);
-check_remote_as($checkremoteas) if ($checkremoteas);
-check_bfd_peer($checkbfdpeer) if ($checkbfdpeer);
-check_bfd_group($checkbfdgroup, $as) if ($checkbfdgroup);
-
-exit 0;
-
-sub list_peer_groups {
- my $as = shift;
- my $config = new Vyatta::Config;
-
- $config->setLevel("protocols bgp $as peer-group");
- my @nodes = $config->listNodes();
- foreach my $node (@nodes) { print "$node "; }
- return;
-}
-
-# Make sure the peer IP isn't a local system IP
-sub check_neighbor_ip {
- my $neighbor = shift;
-
- my $found = grep { $_ eq $neighbor } Vyatta::Misc::getInterfaces();
- if ($found != 0) {
- exit 0;
- }
-
- die "Can't set neighbor address to local system IP.\n"
- if (is_local_address($neighbor));
-
- exit 0;
-}
-
-# Make sure the peer-group name is properly formatted
-sub check_peergroup_name {
- my $neighbor = shift;
-
- $_ = $neighbor;
- my $version = is_ip_v4_or_v6($neighbor);
- if ( ( defined($version) ) || (/[\s\W]/g) ) {
- die "malformed peer-group name $neighbor\n";
- }
-
- # Quagga treats the first byte as a potential IPv6 address
- # so we can't use it as a peer group name. So let's check for it.
- if (/^[A-Fa-f]{1,4}$/) {
- die "malformed peer-group name $neighbor\n";
- }
-}
-
-sub check_remote_as {
- my $remote_as = shift;
-
- if ($remote_as =~ /^(\d+)$/) {
- if ( $remote_as >= 1 && $remote_as <= 4294967294) {
- exit 0;
- }
- die "remote-as must be between 1 and 4294967294 or external or internal";
- }
-
- if ( $remote_as eq "external" || $remote_as eq "internal") {
- exit 0;
- }
- die "remote-as must be between 1 and 4294967294 or external or internal";
-}
-
-
-# Make sure we aren't deleteing a peer-group that has
-# neighbors configured to it
-sub check_for_peer_groups6 {
- my $config = new Vyatta::Config;
- my $pg = shift;
- die "Peer group not defined\n" unless $pg;
- my $as = shift;
- die "AS not defined\n" unless $as;
- my @peers;
-
- # get the list of neighbors and see if they have a peer-group set
- $config->setLevel("protocols bgp $as neighbor");
- my @neighbors = $config->listNodes();
-
- foreach my $node (@neighbors) {
- my $peergroup6 = $config->returnValue("$node address-family ipv6-unicast peer-group");
- if (defined($peergroup6) && ($peergroup6 eq $pg))
- {
- push @peers, $node;
- }
- }
-
- # if we found peers in the previous statements
- # notify an return errors
- if (@peers) {
- foreach my $node (@peers) {
- print "neighbor $node uses ipv6 peer-group $pg\n";
- }
-
- die "please delete these peers before removing the peer-group\n";
- }
-}
-
-# Make sure we aren't deleteing a peer-group that has
-# neighbors configured to it
-sub check_for_peer_groups {
- my $config = new Vyatta::Config;
- my $pg = shift;
- die "Peer group not defined\n" unless $pg;
- my $as = shift;
- die "AS not defined\n" unless $as;
- my @peers;
-
- # get the list of neighbors and see if they have a peer-group set
- $config->setLevel("protocols bgp $as neighbor");
- my @neighbors = $config->listNodes();
-
- foreach my $node (@neighbors) {
- my $peergroup = $config->returnValue("$node peer-group");
- if ((defined $peergroup) && ($peergroup eq $pg)) { push @peers, $node; }
- $peergroup = $config->returnValue("$node interface peer-group");
- if ((defined $peergroup) && ($peergroup eq $pg)) { push @peers, $node; }
- $peergroup = $config->returnValue("$node interface v6only peer-group");
- if ((defined $peergroup) && ($peergroup eq $pg)) { push @peers, $node; }
- }
-
- # if we found peers in the previous statements
- # notify an return errors
- if (@peers) {
- foreach my $node (@peers) {
- print "neighbor $node uses peer-group $pg\n";
- }
-
- die "please delete these peers before removing the peer-group\n";
- }
-}
-
-# function to verify changing remote-as from/to i/eBGP
-# there are two types of parameter checks we need to do. The first should happen
-# when the affected parameter is created/changed. Those checks should happen in
-# the syntax and commit statements in the node.defs for those specific params since
-# they can be updated individually. The params should be checked again if the remote-as
-# changes.
-# This funtion handles changes in the remote-as and/or peer-group
-sub bgp_type_change {
- my ($neighbor, $as, $ntype) =@_;
- my $config = new Vyatta::Config;
- $config->setLevel('protocols bgp');
-
- if ( ("$ntype" ne "neighbor") && ("$ntype" ne "peer-group") ) {
- return -1;
- }
-
- # 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") ||
- $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";
- }
- }
-
- # check if changing from eBGP to iBGP
- if ( (! iBGP_peer(1, $neighbor, $as, $ntype)) && (iBGP_peer(0, $neighbor, $as, $ntype)) ) {
- if ($config->exists("$as $ntype $neighbor ebgp-multihop")) {
- return "can not set ebgp-multihop and an iBGP remote-as at the same time\n";
- }
- if ($config->exists("$as $ntype $neighbor ttl-security")) {
- return "can not set ttl-security and an iBGP remote-as at the same time\n";
- }
- if ($config->exists("$as $ntype $neighbor local-as")) {
- return "can not set local-as and an iBGP remote-as at the same time\n";
- }
- }
-}
-
-sub checkBannedPeerGroupParameters
-{
- my ($level, $protocol) = @_;
- unless ($protocol == 4 || $protocol == 6) {
- return -1;
- }
-
- my @bannedlist = ('advertisement-interval', 'attribute-unchanged', 'capability orf',
- 'default-originate', 'distribute-list export', 'filter-list export',
- 'nexthop-self', 'prefix-list export', 'remove-private-as',
- 'route-map export', 'route-reflector-client', 'route-server-client',
- 'disable-send-community', 'timers', 'ttl-security', 'unsuppress-map');
-
- my @globalbannedlist = ('local-as');
-
- my $config = new Vyatta::Config;
- $config->setLevel("protocols bgp $level");
-
- foreach my $node (@globalbannedlist) {
- if ($config->exists($node)) {
- die "[ protocols bgp $level ]\n parameter $node is incompatible with a neighbor in a peer-group\n";
- }
- }
- if ($protocol == 6) {
- $config->setLevel("protocols bgp $level address-family ipv6-unicast");
- }
- foreach my $node (@bannedlist) {
- if ($config->exists($node)) {
- die "[ protocols bgp $level ]\n parameter $node is incompatible with a neighbor in a peer-group\n";
- }
- }
- return 1;
-}
-
-sub checkOverwritePeerGroupParameters
-{
- my ($qconfig_ref, $level, $protocol) = @_;
- my $ret = 0;
-
- unless ($protocol == 4 || $protocol == 6) {
- return -1;
- }
-
- my @overwritelist = ('allowas-in', 'allowas-in number', 'capability dynamic', 'capability extended-nexthop',
- 'distribute-list import', 'filter-list import', 'maximum-prefix',
- 'port', 'prefix-list import', 'route-map import',
- 'soft-reconfiguration inbound', 'strict-capability-match');
-
- my @globaloverwritelist = ('disable-capability-negotiation', 'disable-connected-check',
- 'ebgp-multihop', 'override-capability', 'passive', 'password',
- 'shutdown', 'update-source', 'weight');
-
- my $config = new Vyatta::Config;
- $config->setLevel("protocols bgp $level");
-
- foreach my $node (@globaloverwritelist) {
- if ($config->exists($node)) {
- $$qconfig_ref->reInsertNode("protocols bgp $level $node");
- $ret++;
- }
- }
- if ($protocol == 6) {
- $level .= " address-family ipv6-unicast";
- $config->setLevel("protocols bgp $level");
- }
- foreach my $node (@overwritelist) {
- if ($config->exists($node)) {
- $$qconfig_ref->reInsertNode("protocols bgp $level $node");
- $ret++;
- }
- }
- return $ret;
-}
-
-# check that changed neighbors have a remote-as or peer-group defined
-# and that all permutations of parameters and BGP type are correct
-sub check_neighbor_parameters
-{
- my $qconfig_ref = shift;
- my $config = new Vyatta::Config;
- $config->setLevel('protocols bgp');
-
- my @asns = $config->listNodes();
- foreach my $as (@asns) {
- # check peer-groups if they have changed
- my @peergroups = $config->listNodes("$as peer-group");
- foreach my $peergroup (@peergroups) {
- next unless ($config->isChanged("$as peer-group $peergroup"));
-
- # if we delete the remote-as in the pg, make sure all neighbors have a remote-as defined
- if ($config->isDeleted("$as peer-group $peergroup remote-as")) {
- my @neighbors = $config->listNodes("$as neighbor");
- foreach my $neighbor (@neighbors) {
- my $pgmembership = $config->returnValue("$as neighbor $neighbor peer-group");
- if ( ! defined $pgmembership ) {
- my $pgmembership = $config->returnValue("$as neighbor $neighbor іnterface peer-group");
- }
- if ( ! defined $pgmembership ) {
- my $pgmembership = $config->returnValue("$as neighbor $neighbor іnterface v6only peer-group");
- }
- if ( (defined $pgmembership) && ("$pgmembership" eq "$peergroup") ) {
- my $remoteas = $config->returnValue("$as neighbor $neighbor remote-as");
- if ( ! defined $remoteas) {
- my $remoteas = $config->returnValue("$as neighbor $neighbor іnterface remote-as");
- }
- if ( ! defined $remoteas ) {
- my $remoteas = $config->returnValue("$as neighbor $neighbor іnterface v6only remote-as");
- }
- if (! defined $remoteas) {
- die "[ protocols bgp $as peer-group $neighbor ]\n can't delete the remote-as in peer-group without setting remote-as in member neighbors\n"
- }
- }
- }
- }
-
- # check asn type change
- my $error = bgp_type_change($peergroup, $as, "peer-group");
- if ($error) { die "[ protocols bgp $as peer-group $peergroup ]\n $error\n"; }
-
- # remote-as can't be defined in both pg and neighbor at the same time
- my $pgremoteas = $config->returnValue("$as peer-group $peergroup remote-as");
- if ($pgremoteas) {
- my @neighbors = $config->listNodes("$as neighbor");
- foreach my $neighbor (@neighbors) {
- my $pgmembership = $config->returnValue("$as neighbor $neighbor peer-group");
- if ( ! defined $pgmembership ) {
- my $pgmembership = $config->returnValue("$as neighbor $neighbor іnterface peer-group");
- }
- if ( ! defined $pgmembership ) {
- my $pgmembership = $config->returnValue("$as neighbor $neighbor іnterface v6only peer-group");
- }
- if ((defined $pgmembership) && ("$pgmembership" eq "$peergroup")) {
- my $remoteas = $config->returnValue("$as neighbor $neighbor remote-as");
- if ( ! defined $remoteas) {
- my $remoteas = $config->returnValue("$as neighbor $neighbor іnterface remote-as");
- }
- if ( ! defined $remoteas ) {
- my $remoteas = $config->returnValue("$as neighbor $neighbor іnterface v6only remote-as");
- }
- if (defined $remoteas && defined $pgremoteas) {
- die "[ protocols bgp $as peer-group $neighbor ]\n must not define remote-as in both neighbor and peer-group\n"
- }
- }
- }
- }
-
- # check if a peer-group overwrite parameter was changed and resubmit
- my @neighbors = $config->listNodes("$as neighbor");
- foreach my $neighbor (@neighbors) {
- my $pg = $config->returnValue("$as neighbor $neighbor peer-group");
- if (defined $pg && ($pg eq "$peergroup")) {
- checkOverwritePeerGroupParameters($qconfig_ref, "$as neighbor $neighbor", 4);
- }
- }
- } ## end foreach my $peergroup (@peergroups)
-
- # check neighbor if remote-as or peer-group has been changed
- my @neighbors = $config->listNodes("$as neighbor");
-
- foreach my $neighbor (@neighbors) {
- # check that remote-as exists
- if ($config->isChanged("$as neighbor $neighbor remote-as") ||
- ! $config->exists("$as neighbor $neighbor remote-as")) {
- # remote-as checks: Make sure the neighbor has a remote-as defined locally or in the peer-group
- my ($remoteas, $peergroup, $peergroupas, $peergroup6, $peergroup6as);
- $remoteas = $config->returnValue("$as neighbor $neighbor remote-as");
- if (! defined($remoteas)) {
- $remoteas = $config->returnValue("$as neighbor $neighbor interface remote-as");
- }
- if (! defined($remoteas)) {
- $remoteas = $config->returnValue("$as neighbor $neighbor interface v6only remote-as");
- }
- if ($config->exists("$as neighbor $neighbor peer-group") ||
- $config->exists("$as neighbor $neighbor interface peer-group") ||
- $config->exists("$as neighbor $neighbor interface v6only peer-group")) {
- $peergroup = $config->returnValue("$as neighbor $neighbor peer-group");
- if (! defined($peergroup)) {
- $peergroup = $config->returnValue("$as neighbor $neighbor interface peer-group");
- }
- if (! defined($peergroup)) {
- $peergroup = $config->returnValue("$as neighbor $neighbor interface v6only peer-group");
- }
- if ($config->exists("$as peer-group $peergroup remote-as")) {
- $peergroupas = $config->returnValue("$as peer-group $peergroup remote-as");
- }
- }
- if ($config->exists("$as neighbor $neighbor address-family ipv6-unicast peer-group")) {
- $peergroup6 = $config->returnValue("$as neighbor $neighbor address-family ipv6-unicast peer-group");
- if ($config->exists("$as peer-group $peergroup6 remote-as")
- && $config->exists("$as peer-group $peergroup6 address-family ipv6-unicast")) {
- $peergroup6as = $config->returnValue("$as peer-group $peergroup6 remote-as");
- }
- }
- die "[ protocols bgp $as neighbor $neighbor ]\n must set remote-as or peer-group with remote-as defined\n"
- if ((!defined($remoteas) && !defined($peergroupas)) && !$config->exists("$as parameters default no-ipv4-unicast"));
-
- die "[ protocols bgp $as neighbor $neighbor ]\n must set remote-as or address-family ipv6-unicast peer-group"
- ." with remote-as defined\n"
- if ($config->exists("$as neighbor $neighbor address-family ipv6-unicast") &&
- (!defined($peergroup6as) && !defined($remoteas)));
-
- die "[ protocols bgp $as neighbor $neighbor ]\n remote-as should not be defined in both neighbor and peer-group\n"
- if ($remoteas && $peergroupas);
-
- } ## end remote-as checks
-
- # Check if changing BGP peer type from/to i/eBGP
- my $error = bgp_type_change($neighbor, $as, "neighbor");
- if ($error) { die "[ protocols bgp $as neighbor $neighbor ]\n $error\n"; }
-
- # If the peer-group has changed since the last commit, update overwritable nodes
- # We do this because Quagga removes nodes silently while vyatta-cfg does not.
- # check IPv4 peer-group
- if ($config->exists("$as neighbor $neighbor peer-group")) {
- checkBannedPeerGroupParameters("$as neighbor $neighbor", 4);
- }
- if ($config->isChanged("$as neighbor $neighbor peer-group")) {
- checkOverwritePeerGroupParameters($qconfig_ref, "$as neighbor $neighbor", 4);
- }
-
- # check IPv6 peer-group
- if ($config->exists("$as neighbor $neighbor address-family ipv6-unicast peer-group")) {
- checkBannedPeerGroupParameters("$as neighbor $neighbor", 6);
- }
- if ($config->isChanged("$as neighbor $neighbor address-family ipv6-unicast peer-group")) {
- checkOverwritePeerGroupParameters($qconfig_ref, "$as neighbor $neighbor", 6);
- }
- } ## end foreach my $neighbor (@neighbors)
- } ## end foreach my $as (@asns)
-}
-
-# check to see if adding this ASN to confederations
-# will make a peer an iBGP peer
-sub confed_iBGP_ASN {
- my ($as, $testas) = @_;
- if ("$as" eq "$testas") { exit 1 ; }
-
- my $config = new Vyatta::Config;
- $config->setLevel("protocols bgp $as");
-
- #my @neighbors = $config->listNodes('neighbor');
- my @neighbors = $config->listOrigNodes('neighbor');
- foreach my $neighbor (@neighbors) {
- my $remoteas = $config->returnValue("neighbor $neighbor remote-as");
- if (("$testas" eq "$remoteas") || ("$testas" eq "internal")) {
- exit 1;
- }
- $remoteas = $config->returnValue("neighbor $neighbor interface remote-as");
- if (("$testas" eq "$remoteas") || ("$testas" eq "internal")) {
- exit 1;
- }
- $remoteas = $config->returnValue("neighbor $neighbor interface v6only remote-as");
- if (("$testas" eq "$remoteas") || ("$testas" eq "internal")) {
- exit 1;
- }
- }
-
- return;
-}
-
-sub is_iBGP_peer {
- my ($neighbor, $as) = @_;
-
- my $return = iBGP_peer(0, $neighbor, $as, "neighbor");
- if ($return > 0) { exit 1; }
- elsif ($return < 0) { print "Unable to determine original ASN for neighbhor $neighbor\n"; }
- exit 0;
-}
-
-sub was_iBGP_peer {
- my ($neighbor, $as) = @_;
-
- if (iBGP_peer(1, $neighbor, $as, "neighbor") >= 1) { exit 1; }
- exit 0;
-}
-
-# is this peer an iBGP peer?
-sub iBGP_peer {
- my ($orig, $neighbor, $as, $ntype) = @_;
- my $config = new Vyatta::Config;
- my @ibgp_as;
- my $neighbor_as;
-
- $config->setLevel("protocols bgp $as");
-
- my $exists = sub { $config->exists(@_) };
- my $returnValue = sub { $config->returnValue(@_) };
- my $returnValues = sub { $config->returnValues(@_) };
-
- if ($orig) {
- $exists = sub { $config->existsOrig(@_) };
- $returnValue = sub { $config->returnOrigValue(@_) };
- $returnValues = sub { $config->returnOrigValues(@_) };
- }
-
- # find my local ASN for this neighbor
- # it's either explicitly defined or in the peer-group
- if ($exists->("$ntype $neighbor remote-as")) {
- $neighbor_as = $returnValue->("$ntype $neighbor remote-as");
- }
- elsif ( ("$ntype" eq "neighbor") && ($exists->("neighbor $neighbor peer-group")) ) {
- my $peergroup = $returnValue->("neighbor $neighbor peer-group");
- if ($exists->("peer-group $peergroup remote-as")) {
- my $peergroup = $returnValue->("neighbor $neighbor peer-group");
- $neighbor_as = $returnValue->("peer-group $peergroup remote-as");
- }
- else {
- return -1;
- }
- }
- else {
- return -1;
- }
-
- # now find my possible local ASNs. Confederation ASNs are first.
- if ($exists->('parameters confederation peers')) {
- @ibgp_as = $returnValues->('parameters confederation peers');
- }
-
- # push router local ASN on the stack
- push @ibgp_as, $as;
-
- # and compare neighbor local as to possible local ASNs
- foreach my $localas (@ibgp_as) {
- if ("$localas" eq "$neighbor_as") {
- return 1;
- }
- }
-
- return 0;
-}
-
-# check that value is either an IPV4 address on system or an interface
-sub check_source {
- my $src = shift;
- my $ip = new NetAddr::IP::Lite($src);
-
- if ($ip) {
- my $found = grep { my $a = new NetAddr::IP::Lite($_);
- $a->addr() eq $ip->addr() } Vyatta::Misc::getIP();
- print("Warning: IP address $ip does not exist on this system\n") if ($found == 0);
- } else {
- my $found = grep { $_ eq $src } Vyatta::Misc::getInterfaces();
- print("Warning: Interface $src does not exist on the system\n") if ($found == 0);
- }
-}
-
-# check if BFD peer exists for configured BGP peer
-sub check_bfd_peer {
- my $peer = shift;
- my $config = new Vyatta::Config;
-
- # check for BFD peer configuration
- my $bfd_exists = $config->exists("protocols bfd peer $peer");
- if (!$bfd_exists) { die "BFD peer need to be configured for using BFD protocol\n"; }
-}
-
-# check if BFD peer exists for configured BGP peer-group
-sub check_bfd_group {
- my $group = shift;
- my $as = shift;
- my @group_neighbors = ();
- my $config = new Vyatta::Config;
-
- # check if BFD enabled for peer-group and stop check if not
- if (!$config->exists("protocols bgp $as peer-group $group bfd")) {
- return 0;
- }
-
- # get a list of all BGP neighbors in the defined group
- my @all_neighbors = $config->listNodes("protocols bgp $as neighbor");
- foreach my $neighbor (@all_neighbors) {
- if ($config->exists("protocols bgp $as neighbor $neighbor peer-group")) {
- if ($config->returnValue("protocols bgp $as neighbor $neighbor peer-group") eq $group) {
- push @group_neighbors, $neighbor;
- }
- }
- }
-
- # check if BFD peer exist and raise error if not
- foreach my $neighbor (@group_neighbors) {
- if (!$config->exists("protocols bfd peer $neighbor")) { die "BFD peers need to be configured for all neighbors in peer-group $group before enabling for BGP\n"; }
- }
-}
-
-sub main
-{
- # initialize the Quagga Config object with data from Vyatta config tree
- my $qconfig = new Vyatta::Quagga::Config('protocols', \%qcom);
-
- # debug routines
- #$qconfig->setDebugLevel('3');
- #$qconfig->_reInitialize();
-
- # check that all changed neighbors have a proper remote-as or peer-group defined
- # and that migrations to/from iBGP eBGP are valid
- check_neighbor_parameters(\$qconfig);
-
- ## deletes with priority
- # delete everything in neighbor, ordered nodes last
- my @ordered = ('remote-as', 'peer-group', 'shutdown',
- 'address-family ipv4-unicast route-map',
- 'address-family ipv4-unicast prefix-list',
- 'address-family ipv4-unicast filter-list',
- 'address-family ipv4-unicast distribute-list',
- 'address-family ipv4-unicast unsuppress-map',
- 'address-family ipv6-unicast route-map',
- 'address-family ipv6-unicast prefix-list',
- 'address-family ipv6-unicast filter-list',
- 'address-family ipv6-unicast distribute-list',
- 'address-family ipv6-unicast unsuppress-map');
-
- # notice the extra space in the level string. keeps the parent from being deleted.
- $qconfig->deleteConfigTreeRecursive('protocols bgp var neighbor var', undef, \@ordered) || die "exiting $?\n";
- $qconfig->deleteConfigTreeRecursive('protocols bgp var peer-group var', undef, \@ordered) || die "exiting $?\n";
- $qconfig->deleteConfigTreeRecursive('protocols bgp') || die "exiting $?\n";
-
- ## sets with priority
- $qconfig->setConfigTreeRecursive('protocols bgp var parameters') || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var peer-group', undef, \@ordered) || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var remote-as', undef, \@ordered) || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var interface', undef, \@ordered)
- || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var address-family ipv6-unicast peer-group'
- , undef, \@ordered) || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var address-family ipv6-unicast'
- , undef, \@ordered) || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp var neighbor var ', undef, \@ordered) || die "exiting $?\n";
- $qconfig->setConfigTreeRecursive('protocols bgp') || die "exiting $?\n";
-}