From 6c647cde4aa18d39c9a9cfb643b5f81bfc5a7c21 Mon Sep 17 00:00:00 2001 From: Bob Gilligan Date: Thu, 24 Apr 2008 11:57:37 -0700 Subject: Bugfix: 3181, 3019 Allow static interface routes to be configured via PPP interfaces that are down. Quagga will install the route when the interface comes up. --- .../node.tag/next-hop-interface/node.def | 33 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'templates/protocols/static') diff --git a/templates/protocols/static/interface-route/node.tag/next-hop-interface/node.def b/templates/protocols/static/interface-route/node.tag/next-hop-interface/node.def index bf6aa5b9..80526635 100644 --- a/templates/protocols/static/interface-route/node.tag/next-hop-interface/node.def +++ b/templates/protocols/static/interface-route/node.tag/next-hop-interface/node.def @@ -1,12 +1,39 @@ +# +# Config template for +# protocols/static/interface-route//next-hop-interface +# + tag: + type: txt + help: Set the next-hop interface + +# +# Argument must be the name of an interface on the system. PPP interfaces +# only come into existance when they come up. Allow interface routes +# via them to be configured even though the link may not be up right now. +# We need a special case for multilink interfaces because their names +# are not coded into the name of the PPP config file in /etc/ppp/peers. +# syntax:expression: exec " \ - if [ -z \"`ip addr | grep $VAR(@) `\" ]; then \ - echo ethernet interface $VAR(@) doesn\\'t exist on this system ; \ - exit 1 ; \ + IFNAME=$VAR(@) ; \ + if [ -z \"`ip addr | grep $IFNAME `\" ]; then \ + if [ \"${IFNAME::5}\" != \"pppoa\" -a \"${IFNAME::5}\" != \"pppoe\" \ + -a \"${IFNAME::3}\" != \"wan\" \ + -a \"${IFNAME::2}\" != \"ml\" ]; then \ + echo interface $IFNAME doesn\\'t exist on this system ; \ + exit 1 ; \ + fi ; \ + if [ ! -e /etc/ppp/peers/${IFNAME} -a \"$IFNAME\" != \"ml0\" \ + -a \"$IFNAME\" != \"ml1\" ]; then \ + echo PPP interface $IFNAME doesn\\'t exist on this system ; \ + exit 1 ; \ + fi ; \ fi ; " + delete:expression: "touch /tmp/static.$PPID" + end:expression: "if [ -f \"/tmp/static.$PPID\" ]; then \ ${vyatta_sbindir}/vyatta-vtysh.pl -c \"configure terminal\" -c \"no ip route $VAR(../@) $VAR(@)\" ; \ rm /tmp/static.$PPID; \ -- cgit v1.2.3