From: pmelange Date: Mon, 23 Apr 2018 20:24:39 +0000 (+0200) Subject: ff_olsrd_watchdog: delete existing tunnels X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=refs%2Fpull%2F1761%2Fhead;p=project%2Fluci.git ff_olsrd_watchdog: delete existing tunnels When OLSRd crashes, the old tunnels still exist. This can lead to unexpected behaviour. The tunnels to be removed start with "tnl_" See freifunk-berlin/firmware#522 Signed-off-by: pmelange --- diff --git a/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog b/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog index 069f4c3217..8ac803d309 100755 --- a/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog +++ b/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog @@ -23,6 +23,15 @@ if fs.access("/var/run/olsrd.pid") or fs.access("/var/run/olsrd4.pid") then if not wdgtime or ( systime - wdgtime ) > ( intv * 2 ) then os.execute("logger -t 'OLSR watchdog' 'Process died - restarting!'") + local tnls = io.popen("ip tunnel show | cut -d : -f 1") + while true do + tnl = tnls:read("*line") + if tnl == nil then break end + if string.find(tnl, "tnl_") == 1 then + os.execute(string.format("logger -t 'OLSR watchdog' 'Deleting stale tunnel %s'", tnl)) + os.execute(string.format("ip link del %s", tnl)) + end + end os.execute("/etc/init.d/olsrd restart") end end