Dev Docs
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 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 Index
- Dev Docs Libatalk API
- Dev Docs Architecture Overview
- Dev Docs Data Flow
- Dev Docs Network Protocols
- Dev Docs AFP Daemon
- Dev Docs AppleTalk Networking
- Dev Docs User Authentication
- Dev Docs CNID Database System
- Dev Docs Netatalk Controller Daemon
- Dev Docs Netatalk Configuration
- Dev Docs Shared Volumes
- Dev Docs Performance Tuning
- Dev Docs Troubleshooting
Source Code Organization
The main Netatalk implementation resides in these key directories:
libatalk/- Core AFP library implementation and utility functionsetc/afpd/- AFP daemon (afpd) source code and protocol handlersetc/netatalk/- Master daemon and service managementetc/cnid_dbd/- CNID database daemon for file ID managementetc/uams/- User Authentication Modules (UAM) implementationsinclude/atalk/- Public header files and API definitionsmeson.build- Build system configuration and dependency managementtest/- Test suite and benchmarking utilitiescontrib/- 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/ -
Documentation: Markdown with GitHub extensions, code comments in Doxygen format Doc Sources:
doc/manual/,doc/manpages/,doc/developer/,README.md
Footnotes
This is a mirror of the Netatalk GitHub Wiki
Last updated 2025-12-27