From 5d0b720f8b002ac0dd0097beb63d3a88ce1c7faf Mon Sep 17 00:00:00 2001 From: pmelange Date: Mon, 23 Apr 2018 22:24:39 +0200 Subject: [PATCH] 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 --- .../freifunk-common/files/usr/sbin/ff_olsr_watchdog | 9 +++++++++ 1 file changed, 9 insertions(+) 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 069f4c321..8ac803d30 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 -- 2.25.1