#! /usr/bin/perl # Author: Stephen Hemminger # Date: 2009 # Description: Helper script to display configured protocols # **** 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. # # This code was originally developed by Vyatta, Inc. # Portions created by Vyatta are Copyright (C) 2006, 2007, 2008 Vyatta, Inc. # All Rights Reserved. # **** End License **** use lib "/opt/vyatta/share/perl5"; use Vyatta::Config; use strict; use warnings; # Map from command line to config->XXX() function my %actions = ( 'configured' => 'existsOrig', 'exists' => 'exists', 'added' => 'isAdded', 'changed' => 'isChanged', 'deleted' => 'isDeleted', 'modified' => 'isChangedOrDeleted', ); my %daemons = ( 'bgp' => 'bgpd', 'ospf' => 'ospfd', 'ospfv3' => 'ospf6d', 'rip' => 'ripd', 'ripng' => 'ripngd', 'isis' => 'isisd', ); sub usage { die "Usage: $0 {",join('|',keys %actions),"}\n" } usage if ($#ARGV == -1); my $match = $actions{$ARGV[0]}; usage unless $match; my $config = new Vyatta::Config; $config->setLevel('protocols'); # Should have avoided the urge to do Perl golf here... my @found = grep { $config->$match($_) } keys %daemons; print join(' ', map { $daemons{$_} } @found),"\n";