API Reference tahr v#0.1.0

Copy Markdown View Source

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.

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.

Pure-Elixir encoder / decoder for the XDR (External Data Representation) standard — RFC 4506.

Mix Tasks

Starts a Tahr.RPC.Server serving Tahr.InMemory and blocks until the process is terminated.