Skip to content

Dev Docs

Daniel Markstedt edited this page Nov 28, 2025 · 12 revisions

Netatalk Project Developer Docs

This wiki branch contains documentation and knowledge about the Netatalk project for developers - a Free and Open Source implementation of the Apple Filing Protocol (AFP).

These developer docs are intended to supplement the main user docs (https://netatalk.io/manual/en/) to simplify and encourage contributions to Netatalk.

These developer docs include many Mermaid diagrams to make understanding easier and ease the learning curve (hopefully).

What is Netatalk?

Netatalk is a robust, lightweight and fast AFP 3.4 server implementation that enables Unix/Linux systems to act as native file servers for Mac clients, providing seamless integration with macOS features like Time Machine, Spotlight, and Bonjour service discovery.

Developer Docs Structure

Source Code Organization

The main Netatalk implementation resides in these key directories:

  • libatalk/ - Core AFP library implementation and utility functions
  • etc/afpd/ - AFP daemon (afpd) source code and protocol handlers
  • etc/netatalk/ - Master daemon and service management
  • etc/cnid_dbd/ - CNID database daemon for file ID management
  • etc/uams/ - User Authentication Modules (UAM) implementations
  • include/atalk/ - Public header files and API definitions
  • meson.build - Build system configuration and dependency management
  • test/ - Test suite and benchmarking utilities
  • contrib/ - Additional scripts and integration tools

Key Features

  • AFP 3.4 Protocol Support - Full implementation with modern macOS compatibility Implementation: etc/afpd/afp_*.c, libatalk/dsi/, include/atalk/afp.h

  • AppleTalk Legacy Support - Maintains compatibility with classic Mac systems Implementation: libatalk/atp/, libatalk/asp/, include/atalk/atp.h, include/atalk/asp.h

  • Spotlight Integration - Search functionality via GNOME Tracker/TinySPARQL Implementation: etc/afpd/spotlight*.c, libatalk/util/server_ipc.c

  • Time Machine Support - Native macOS backup destination Implementation: etc/afpd/volume.c, etc/afpd/enumerate.c, etc/afpd/afp_options.c

  • Advanced Authentication - Multiple UAM modules including DHX, DHX2, PAM, Kerberos Implementation: etc/uams/, etc/afpd/auth.c, include/atalk/uam.h

  • High Performance - Optimized for large file transfers and concurrent connections Implementation: libatalk/dsi/dsi_tcp.c, etc/afpd/fork.c, etc/afpd/file.c

  • Cross-Platform - Supports Linux, BSD variants, macOS, and Solaris Implementation: meson.build, include/atalk/compat.h, libatalk/compat/

Project Information

  • License: GNU General Public License v2 with portions BSD or MIT License Files: COPYING, COPYRIGHT, header comments in source files

  • Language: C11 with GCC extensions Standards Compliance: meson.build (c_std setting)

  • Build System: Meson (migrated from Autotools) Build Configuration: meson.build, meson_options.txt, subprojects/

  • Repository: https://github.com/Netatalk/netatalk

  • Website: https://netatalk.io

  • Documentation: https://netatalk.io/manual/en/ Doc Sources: doc/manual/, doc/manpages/, doc/developer/, README.md

Community

Clone this wiki locally