Skip to content
Andy Lemin edited this page Aug 16, 2025 · 8 revisions

WIP - ALL LINKS IN THIS WIKI STRUCTURE ARE CURRENTLY BROKEN DURING WIKI MIGRATION

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) 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

Dev-Docs # This Page

Dev-Docs-Index # Navigation index and table of contents

Dev-Docs-API-Libatalk # Core library functions and interfaces

Dev-Docs-Arch-Overview # High-level system architecture

Dev-Docs-Arch-DataFlow # Component interactions and data flow

Dev-Docs-Arch-Protocols # Network protocol implementation

Dev-Docs-Components-AFPD # AFP daemon implementation

Dev-Docs-Components-Appletalk # AppleTalk protocol support

Dev-Docs-Components-Auth # User Authentication Modules (UAM)

Dev-Docs-Components-CNID # CNID database system

Dev-Docs-Components-Netatalk # Master daemon and service coordination

Dev-Docs-Config-Setup # Initial setup and configuration

Dev-Docs-Config-Volumes # Volume configuration reference

Dev-Docs-Dev-Guidelines # Coding standards and development practices

Dev-Docs-Performance-Network # High-performance network tuning

Dev-Docs-Troubleshooting # Frequently encountered problems and solutions

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/

Quick Start

  1. Installation: See deployment/platforms.md for platform-specific instructions Build System: meson.build, meson_options.txt, contrib/shell_utils/

  2. Configuration: Review configuration/setup.md for initial setup Config Parsing: libatalk/iniparser/, etc/afpd/afp_config.c, etc/netatalk/netatalk.c

  3. Development: Check development/guidelines.md for contribution guidelines Development Tools: test/, .github/, include/atalk/standards.h

Project Information

  • Version: 4.3.0dev (active development) Version Definition: meson.build, include/atalk/version.h

  • License: GNU General Public License v2 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/manpages/, doc/developer/, README.md

Community

Clone this wiki locally