You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
yggdrasil-jumper: exits ~10 s after start with yggdrasil 0.5.15 (admin socket timeout vs 10 s query delay) #31258
master (yggdrasil 0.5.15-r1, yggdrasil-jumper 0.3.1-r1). Reproduced on 25.12.6 with yggdrasil 0.5.15 built from the master recipe in the 25.12.5 SDK.
OpenWrt Target/Subtarget
mediatek/filogic
Steps to Reproduce
Install yggdrasil 0.5.15 and yggdrasil-jumper 0.3.1, and configure an interface (here ygg0) with proto 'yggdrasil' and jumper_enable '1'.
Bring the interface up: ubus call network.interface.ygg0 up
Wait 15 s, then run pidof yggdrasil-jumper and logread -e ygg0-jumper.
Actual Behaviour
The jumper connects to the admin socket and exits about 10 s later:
01:39:55 ygg0-jumper: INFO Admin API: Connected to unix:///tmp/yggdrasil/ygg0.sock
01:40:05 ygg0-jumper: ERROR Admin API watcher: Failed to query admin api: Broken pipe (os error 32)
After that pidof yggdrasil-jumper prints nothing. The interface and its peers keep working, but there is no jumper until the next setup of the interface.
Cause: Yggdrasil 0.5.15 added "Admin socket reads now have a 1MB limit and a 10 second timeout" to its changelog, so the daemon closes an admin connection that sends no request for 10 s. Jumper 0.3.1 keeps one connection open and sends a request every yggdrasilctl_query_delay, which defaults to 10 s. The daemon closes the connection just before the next request, and 0.3.1 has no reconnect: yggdrasil_admin_reconnect / --reconnect only arrived in jumper 0.4.0, and is off by default there too.
Workaround: shorten the query delay through the package's existing jumper_config option, then set the interface up again. The jumper has then stayed up on two routers.
uci set network.ygg0.jumper_config='yggdrasilctl_query_delay = 5.0'
uci commit network
ubus call network.interface.ygg0 down; ubus call network.interface.ygg0 up
Expected Behaviour
The jumper keeps running with the yggdrasil version shipped in the same feed. The package could do this in several ways:
update to jumper 0.4.x and enable yggdrasil_admin_reconnect;
write a query delay below 10 s into the generated config (proto_yggdrasil_generate_jumper_config in net/yggdrasil/files/yggdrasil.sh);
have netifd restart the jumper.
Additional Information
Related: #31247 covers the jumper start-up in the same proto_yggdrasil_setup(), where a duplicate jumper appears after a quick re-setup and 2&>1 sends stderr to a file.
Activity