From 442fd359980919f018107849240b63ce73bcffc3 Mon Sep 17 00:00:00 2001 From: Stig Thormodsrud Date: Sat, 20 Mar 2010 13:08:04 -0700 Subject: Fix 4161: Bad config handling of "protocols ospf passive-interface" --- .../protocols/ospf/passive-interface/node.def | 46 +++++++++++++++++----- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'templates/protocols/ospf') diff --git a/templates/protocols/ospf/passive-interface/node.def b/templates/protocols/ospf/passive-interface/node.def index 2ee24c93..bd66993e 100644 --- a/templates/protocols/ospf/passive-interface/node.def +++ b/templates/protocols/ospf/passive-interface/node.def @@ -1,19 +1,45 @@ multi: type: txt help: Set to suppress routing updates on an interface + allowed: ${vyatta_sbindir}/vyatta-interfaces.pl --show all && echo default -create: if [ -z $VAR(@) ] - then vtysh -c "configure terminal" -c "router ospf" \ - -c "passive-interface default"; - else vtysh -c "configure terminal" -c "router ospf" \ - -c "passive-interface $VAR(@)" - fi + + + +create: sudo /opt/vyatta/sbin/vyatta_quagga_utils.pl \ + --check-ospf-passive="$VAR(@)" + if [ $? != 0 ] ; then + exit 1; + fi + if [ -z $VAR(@) ] || [ "$VAR(@)" == "default" ] ; then + vtysh -c "configure terminal" \ + -c "router ospf" \ + -c "passive-interface default"; + else + vtysh -c "configure terminal" \ + -c "router ospf" \ + -c "passive-interface $VAR(@)" + fi + delete: if [ -z $VAR(@) ] - then vtysh -c "configure terminal" -c "router ospf" \ - -c "no passive-interface default" - else vtysh -c "configure terminal" -c "router ospf" \ - -c "no passive-interface $VAR(@)" + then + vtysh -c "configure terminal" \ + -c "router ospf" \ + -c "no passive-interface default" + else + if [ "$VAR(@)" == "default" ] + then + if [ $VAR(../passive-interface-exclude/@) ] + then + echo "Error: delete passive-interface-exclude before deleting passive-interface default"; + exit 1; + fi + fi + vtysh -c "configure terminal" \ + -c "router ospf" \ + -c "no passive-interface $VAR(@)" fi + comp_help: possible completions: Set an interface to be passive (i.e. suppress routing updates) default Set default to suppress routing updates on all interfaces -- cgit v1.2.3