Modules
A standalone Elixir library for building NFSv3 file servers natively on the BEAM — no kernel NFS server, no NIFs.
An in-memory read-write filesystem backing the reference
Tahr.InMemory.NFSBackend and
Tahr.InMemory.MountBackend implementations.
Export resolution for Tahr.InMemory: publishes /export
backed by the agent's root directory and refuses everything else
with MOUNT3ERR_NOENT.
Reference Tahr.NFSv3.Backend implementation over
Tahr.InMemory.
Behaviour for the export resolution layer the MOUNT v3 handler delegates to. Keeps Tahr decoupled from any particular backing store (a static config file, an in-memory test fixture, a database of exports, …).
ONC RPC handler for MOUNT v3 (program 100005, version 3) — see RFC 1813 appendix I.
XDR types for the MOUNT v3 protocol — RFC 1813 appendix I.
One entry in MOUNTPROC3_EXPORT's reply: a directory and the groups allowed to mount it.
One entry in MOUNTPROC3_DUMP's reply.
Behaviour for the filesystem layer the NFSv3 handler delegates to.
Default opaque file-handle scheme for NFSv3 backends.
ONC RPC handler for NFS v3 (program 100003, version 3) — see RFC 1813 §3.
XDR types for NFS v3 — RFC 1813 §2.5.
Full file attributes. RFC 1813 §2.5.
Wall-clock time (seconds + nanoseconds). RFC 1813 §2.5.
Settable attributes for SETATTR / CREATE / MKDIR. RFC 1813 §2.5.
Major / minor device numbers. RFC 1813 §2.5.
Subset of attributes used by the weak cache consistency check. RFC 1813 §2.6.
Pre+post op attributes for a directory/file modified by the operation. RFC 1813 §2.6.
ONC RPC authentication flavors — RFC 5531 §8.
Marker for AUTH_NONE — no credential body.
Decoded AUTH_SYS credentials. Field names mirror the kernel's
authsys_parms struct so handlers reading the auth context map
1:1 to POSIX semantics.
Map an incoming Tahr.RPC.Message.Call to the registered
handler for its {program, version} pair, then wrap the result in
the appropriate Tahr.RPC.Message.AcceptedReply /
DeniedReply.
Behaviour for ONC RPC program handlers.
ONC RPC v2 call and reply envelopes — RFC 5531 §9.
Successful or per-procedure-error reply. body is the
procedure's encoded result for :success, or the relevant
payload (e.g. {:prog_mismatch, low, high}) for the error
cases.
Decoded RPC call. args is the unparsed payload — pass it to
the program handler verbatim.
Reply rejected at the RPC layer (RPC version mismatch or auth
failure). body carries the relevant tuple.
Minimal portmap v2 (program 100000) handler — enough to satisfy
mount -t nfs clients that go through rpcbind before they
contact the NFS server directly.
ONC RPC record-marking framing — RFC 5531 §11.
ONC RPC v2 TCP listener.
Mix Tasks
Starts a Tahr.RPC.Server serving Tahr.InMemory and
blocks until the process is terminated.