From 453bbafd1ef8569ead7f342ed604c834772fd6e2 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 27 Mar 2009 15:33:21 -0700 Subject: Fix some possible issues with policy script Change to closure would not allow exit to work correctly. Go back to old way using variables. Use grep -c to count instances Also rerun through tidy. --- scripts/policy/vyatta-policy.pl | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/scripts/policy/vyatta-policy.pl b/scripts/policy/vyatta-policy.pl index 91a73d0f..2ce6a2aa 100755 --- a/scripts/policy/vyatta-policy.pl +++ b/scripts/policy/vyatta-policy.pl @@ -7,15 +7,24 @@ use Getopt::Long; my $VTYSH = '/usr/bin/vyatta-vtysh'; +my ( $accesslist, $aspathlist, $communitylist, $peer ); +my ( $routemap, $deleteroutemap ); + GetOptions( - "update-access-list=s" => sub { update_access_list( $_[1] ); }, - "update-aspath-list=s" => sub { update_as_path( $_[1] ); }, - "update-community-list=s" => sub { update_community_list( $_[1] ); }, - "check-peer-syntax=s" => sub { check_peer_syntax( $_[1] ); }, - "check-routemap-action=s" => sub { check_routemap_action( $_[1] ); }, - "check-delete-routemap-action=s" => - sub { check_delete_routemap_action( $_[1] ); }, -); + "update-access-list=s" => \$accesslist, + "update-aspath-list=s" => \$aspathlist, + "update-community-list=s" => \$communitylist, + "check-peer-syntax=s" => \$peer, + "check-routemap-action=s" => \$routemap, + "check-delete-routemap-action=s" => \$deleteroutemap, +) or exit 1; + +update_access_list($accesslist) if ($accesslist); +update_as_path($aspathlist) if ($aspathlist); +update_community_list($communitylist) if ($communitylist); +check_peer_syntax($peer) if ($peer); +check_routemap_action($routemap) if ($routemap); +check_delete_routemap_action($deleteroutemap) if ($deleteroutemap); exit 0; @@ -33,8 +42,7 @@ sub check_peer_syntax { sub is_community_list { my $list = shift; - my $count = - `$VTYSH -c \"show ip community-list $list\" | grep $list | wc -l`; + my $count = `$VTYSH -c \"show ip community-list $list\" | grep -c $list`; if ( $count > 0 ) { return 1; } @@ -83,7 +91,7 @@ sub is_as_path_list { my $list = shift; my $count = - `$VTYSH -c \"show ip as-path-access-list $list\" | grep $list | wc -l`; + `$VTYSH -c \"show ip as-path-access-list $list\" | grep -c $list`; if ( $count > 0 ) { return 1; } @@ -129,7 +137,7 @@ sub update_as_path { sub is_access_list { my $list = shift; - my $count = `$VTYSH -c \"show ip access-list $list\" | grep $list | wc -l`; + my $count = `$VTYSH -c \"show ip access-list $list\" | grep -c $list`; return ( $count > 0 ); } -- cgit v1.2.3