To write a module using the CVM module library, you must provide three items:
If authentication fails, the module must return CVME_PERMFAIL (value 100). If there was a temporary error, return any other non-zero number error code. Otherwise, return zero after setting fact_username, fact_userid, fact_groupid, fact_directory, and fact_shell, which will be automatically sent to the client when authenticate() completes. fact_realname, fact_groupname, fact_sys_username, and fact_sys_directory will also be sent if they are set. If any other facts are to be returned to the client, send them with fact_str(int number, const char* data) or fact_uint(int number, unsigned data).
NOTE: authenticate() must never exit except on fatal errors. If it allocates any memory, it must either be freed, or reallocated on the next invocation.