]> arthur.barton.de Git - netatalk.git/blob - doc/DEVELOPER
6ee83d774a3b452e181fef9546f5aa8c4fe6e17c
[netatalk.git] / doc / DEVELOPER
1 Information for Netatalk 1.5 Developers
2 =======================================
3
4 For basic installation instructions, see the INSTALL file.
5
6
7 netatalk is an implementation of the AppleTalk Protocol Suite.  The
8 current release contains support for EtherTalk Phase I and II, DDP,
9 RTMP, NBP, ZIP, AEP, ATP, PAP, ASP, and AFP.  The complete stack looks
10 like this on a BSD-derived system:
11
12     AFP
13      |
14     ASP    PAP
15       \   /
16        ATP RTMP NBP ZIP AEP
17         |    |   |   |   |
18    -+---------------------------------------------------+- (kernel boundary)
19     |                    Socket                         |
20     +-----------------------+------------+--------------+
21     |                       |     TCP    |    UDP       |
22     |          DDP          +------------+--------------+
23     |                       |           IP              |
24     +-----------------------+---------------------------+
25     |                Network-Interface                  |
26     +---------------------------------------------------+
27
28 DDP is in the kernel.  "atalkd" implements RTMP, NBP, ZIP, and AEP.  It
29 is the AppleTalk equivalent of Unix "routed".  There is also a
30 client-stub library for NBP.  ATP and ASP are implemented as
31 libraries.  "papd" allows Macs to spool to "lpd", and "pap" allows Unix
32 machines to print to AppleTalk connected printers.  "psf" is a
33 PostScript printer filter for "lpd", designed to use "pap".  "psorder"
34 is a PostScript reverser, called by "psf" to reverse pages printed to
35 face-up stacking printers.  "afpd" provides Macs with an interface to
36 the Unix file system.  Refer to the appropriate man pages for
37 operational information.
38
39
40 Compilation
41 ===========
42    The `configure' shell script attempts to guess correct values for
43 various system-dependent variables used during compilation.  It uses
44 those values to create a `Makefile' in each directory of the package.
45 It may also create one or more `.h' files containing system-dependent
46 definitions.  Finally, it creates a shell script `config.status' that
47 you can run in the future to recreate the current configuration, a file
48 `config.cache' that saves the results of its tests to speed up
49 reconfiguring, and a file `config.log' containing compiler output
50 (useful mainly for debugging `configure').
51
52    If you need to do unusual things to compile the package, please try
53 to figure out how `configure' could check whether to do them, and mail
54 diffs or instructions to the address given in the `README' so they can
55 be considered for the next release.  If at some point `config.cache'
56 contains results you don't want to keep, you may remove or edit it.
57
58    The file `configure.in' is used to create `configure' by a program
59 called `autoconf'.  You only need `configure.in' if you want to change
60 it or regenerate `configure' using a newer version of `autoconf'.
61
62
63 Tools for Developers
64 ====================
65 1. Libtool
66 Libtool encapsulates the platform specific dependencies for the
67 creation of libraries. It determines if the local platform can support
68 shared libraries or if it only supports static libraries.
69
70 Netatalk currently requires libtool 1.4 or higher (1.4b for OpenBSD).
71 If you are using Tru64 you must apply the following patch to the file
72 acinclude.m4 (normally found in /usr/share/libtool/libltdl).
73
74 --- acinclude.m4.old    Tue Nov 20 15:30:23 2001
75 +++ acinclude.m4        Tue Nov 20 15:31:54 2001
76 @@ -2226,6 +2226,7 @@
77  
78  osf3* | osf4* | osf5*)
79    version_type=osf
80 +  need_lib_prefix=no
81    need_version=no
82    soname_spec='${libname}${release}.so'
83    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
84
85 Documentation: http://www.gnu.org/software/libtool/
86 Program: (see the GNU mirrors) /gnu/libtool/libtool-1.4.tar.gz
87
88 2. GNU m4
89 GNU m4 is an implementation of the Unix macro processor. It reads
90 stdin and copies to stdout expanding defined macros as it processes
91 the text.
92
93 Documentation: http://www.gnu.org/software/m4/
94 Program: (see the GNU mirrors) /gnu/m4/m4-1.4.tar.gz
95
96 3. Autoconf
97 Autoconf is a package of m4 macros that produce shell scripts to
98 configure source code packages.
99
100 Documentation: http://www.gnu.org/software/autoconf/
101 Program: (see the GNU mirrors) /gnu/autoconf/autoconf-2.52.tar.gz
102
103 4. Automake
104 Automake is a tool that generates  'Makefile.in' files.
105
106 Documentation: http://www.gnu.org/software/automake/
107 Program: (see the GNU mirrors) /gnu/automake/automake-1.5.tar.gz
108
109 Optional
110 ========
111 5. OpenSSL and/or Libgcrypt
112 The OpenSSL Project is a collaborative effort to develop a robust,
113 commercial-grade, full-featured, and Open Source toolkit implementing
114 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
115 v1) protocols as well as a full-strength general purpose cryptography
116 library.
117 This is required to enable DHX login support.
118
119 Get everything at http://www.openssl.org/ 
120
121 The Libgcrypt is a general purpose cryptographic library based on
122 the code from GnuPG.
123 This is required to enable DHX2 login support.
124
125 Get everything at http://directory.fsf.org/project/libgcrypt/
126
127 6. TCP Wrappers 
128 Wietse Venema's network logger, also known as TCPD or LOG_TCP. These
129 programs log the client host name of incoming telnet, ftp, rsh,
130 rlogin, finger etc. requests. Security options are: access control per
131 host, domain and/or service; detection of host name spoofing or host
132 address spoofing; booby traps to implement an early-warning system.
133 TCP Wrappers can be gotten at ftp://ftp.porcupine.org/pub/security/
134 Netatalk uses TCP Wrappers to authorize host access when using
135 afpovertcp. It should be noted that if DDP is in use, the connection
136 will still be allowed as TCP Wrappers do not impact DDP connections.
137
138 7. PAM (Pluggable Authentication Modules) 
139 PAM provides a flexible mechanism for authenticating
140 users. PAM was invented by SUN Microsystems.
141
142 Author: Andrew Morgan <morgan@linux.kernel.org>
143
144 Linux-PAM is a suite of shared libraries that enable the local system
145 administrator to choose how applications authenticate users.
146
147 You can get the Linux PAM documentation and sources from
148 http://www.kernel.org/pub/linux/libs/pam/
149
150 Netatalk also supports other standard PAM implementations such as OpenPAM.
151
152 8. Berkeley DB
153 Berkeley DB is a programmatic toolkit that provides fast, reliable,
154 scalable, and mission-critical database support to software
155 developers. BDB documentation is available at:
156 http://www.oracle.com/technology/documentation/berkeley-db/db/index.html
157
158 Netatalk's CNID database uses the library and header files from BDB.
159 Netatalk 2.0 requieres BDB >= 4.1.