Fun with userspace AppleTalk

I've been really wanting to write software to speak AppleTalk to my various LocalTalk (and sometimes EtherTalk) systems. I've found the C API for Netatalk isn't super pleasant, at least coming from the Rust world with async/await everywhere.

This is a little milestone from my own fully userspace Rust AppleTalk stack that provides a no_std (i.e suitable for embedding on micros) parser and encoder for every AppleTalk packet type, and a Linux/Mac/Windows stack that uses raw sockets so has no reliance on the kernel itself to build on top of it. No code reuse from Netatalk either, all built with Rust + Tokio in mind. It exposes high level async APIs with Tokio for all of the protocols as well, so to look up a LaserWriter and print to it via NBP is trivial.

Not meant to be a super serious project, but the eventual goal is to have most all the usual functionality that Netatalk provides working, including AFP so I can transfer files easily from my Linux machine to any of the older Macs. Thought I'd post it here in case there was any other Rust interest :).

Picture is from my userspace stack printing the Rust logo from my Linux tablet, with LLAP, NBP, DDP, ATP and PAP all working in harmony :)
 

Attachments

  • IMG_2307.JPEG
    IMG_2307.JPEG
    556.6 KB · Views: 3
Back
Top