diff options
author | pmelange <pmelange@users.noreply.github.com> | 2018-04-23 22:24:39 +0200 |
---|---|---|
committer | pmelange <isprotejesvalkata@gmail.com> | 2018-07-25 22:50:31 +0200 |
commit | 5d0b720f8b002ac0dd0097beb63d3a88ce1c7faf (patch) | |
tree | e5a05bfccf9939f7ecda97ad5c2a445d92e124da | |
parent | 82abf9add923e5edd1d6abb07314f16f9167978f (diff) |
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 <isprotejesvalkata@gmail.com>
-rwxr-xr-x | contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog | 9 |
1 files changed, 9 insertions, 0 deletions
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 |