Closed mcr closed 1 year ago
Yeah, my stupid. Interface 10, ip6tnl arrives with a [0] length L2 address, which causes a panic in a thread... which I couldn't see in this stripped/optimized build, because of another panic in another thread at almost the same time.
It now all works on openwrt with Rust. Wow.
I have finished some network protocol code (an RFC8995 Join Proxy handler if you care). It seems to work great on Ubuntu/Debian/Devuan platforms with rust 1.68, and 1.71.0-nightly. I cross-compile it for OpenWRT (which took some gyrations, but got it done). That is a arm_cortex-a9+vfpv3-d16_musl_eabi / armv7-unknown-linux-musleabihf flavour.
I run code like this when I start to get a list of all existing interfaces (then process new one that appear via netlink socket):
Bizarrely, this loop finishes when cnt gets to 10, even though I have many more interfaces. (See below)
I don't really know what finger to point at next. I'm just posting this for google fodder, and I'll update it as I learn more.
I will be strace'ing the executable next to see if the NETLINK might actually be only sending 10 results. Maybe there is a read buffer which is truncating things? I will also be doing a review of what versions of dependencies get pulled in. For instance, I need the IPsec patches I upstreamed earlier this year, and I did have troubles getting OpenWRT's cargo/rustc to pick a consistent set of libraries. (Tweaks to Cargo.toml resulted)