rax25 0.2.4

AX.25 connected mode implementation
Documentation

rax25

Rust library for AX.25 connected mode.

https://github.com/ThomasHabets/rax25 https://blog.habets.se/2024/09/An-AX.25-implementation-in-Rust.html

Status

  • Seem to be working well.
  • Both 8 and 128 modulus supported.
  • REJ untested / probably broken.
  • SREJ untested / probably broken.
  • Segmentation: not implemented.
  • The sync API is not great. Async API may also need some work

Interoperability with linux kernel stack is lightly tested on every push to github.

Technical details

  • The reserved bit used by the Linux kernel (and other Linux tools, like axlisten) to indicate extended sequence numbers is set. This crate sets it too, but since we know the connection state, it's ignored on reception.

Testing

The easiest test setup is to simply use a "bent pipe" TCP socket that both ends connect to. That way it's fast, doesn't lose any packets, and doesn't require any hardware.

This will do it:

while true; do socat TCP-LISTEN:10000,reuseaddr TCP-LISTEN:10001,reuseaddr;sleep 1;done

After that you can run a server and client like:

cargo run --example async_server -- -v debug -p tcp://127.0.0.1:10000 -s M0QQQ-1 --capture server.pcap
cargo run --example async_client -- -v info -p tcp://127.0.0.1:10001 -s M0QQQ-2 --capture client.pcap -e M0QQQ-1

Reference documentation

Misc