summaryrefslogtreecommitdiff
path: root/scripts/vyatta_quagga_utils.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/vyatta_quagga_utils.pl')
-rwxr-xr-xscripts/vyatta_quagga_utils.pl22
1 files changed, 21 insertions, 1 deletions
diff --git a/scripts/vyatta_quagga_utils.pl b/scripts/vyatta_quagga_utils.pl
index 1d85b431..0b9fb2ae 100755
--- a/scripts/vyatta_quagga_utils.pl
+++ b/scripts/vyatta_quagga_utils.pl
@@ -6,15 +6,27 @@ use Vyatta::Misc;
use NetAddr::IP;
use Getopt::Long;
-my ( $prefix, $exists, $not_exists, $area );
+my ( $prefix, $exists, $not_exists, $area, $community );
+
+# Allowed well-know community values (see set commuinity)
+my %communities = (
+ 'additive' => 1,
+ 'internet' => 1,
+ 'local-AS' => 1,
+ 'no-advertise' => 1,
+ 'no-export' => 1,
+ 'none' => 1,
+);
GetOptions(
"check-prefix-boundry=s" => \$prefix,
"not-exists=s" => \$not_exists,
"exists=s" => \$exists,
"check-ospf-area=s" => \$area,
+ "check-community" => \$community,
);
+check_community(@ARGV) if ($community);
check_prefix_boundry($prefix) if ($prefix);
check_not_exists($not_exists) if ($not_exists);
check_exists($exists) if ($exists);
@@ -74,3 +86,11 @@ sub check_ospf_area {
die "Invalid OSPF area: $area\n";
}
+sub check_community {
+ foreach my $arg (@_) {
+ next if ($arg =~ /\d+:\d+/);
+ next if $communities{$arg};
+
+ die "$arg unknown community value\n"
+ }
+}