netatalk  4.5.0
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
uam_auth.h File Reference
#include <pwd.h>
#include <atalk/globals.h>
#include <atalk/uam.h>

Go to the source code of this file.

Data Structures

struct  uam_mod
 
struct  uam_obj
 

Macros

#define uam_attach(a, b)
 
#define uam_detach(a)
 
#define auth_unregister(a)   uam_detach(a)
 

Functions

struct uam_moduam_load (AFPObj *, const char *, const char *)
 
void uam_unload (struct uam_mod *)
 unload the module.
 
int auth_load (AFPObj *, const char *, const char *)
 
int auth_register (const int, struct uam_obj *)
 
struct uam_objauth_uamfind (const int, const char *, const int)
 
void auth_unload (void)
 
int uam_random_string (AFPObj *, char *, int)
 Fill a buffer with cryptographically secure random bytes.
 

Detailed Description

interface between uam.c and auth.c

Macro Definition Documentation

◆ auth_unregister

#define auth_unregister (   a)    uam_detach(a)

◆ uam_attach

#define uam_attach (   a,
 
)
Value:
do { \
(a)->uam_prev->uam_next = (b); \
(b)->uam_prev = (a)->uam_prev; \
(b)->uam_next = (a); \
(a)->uam_prev = (b); \
} while (0)

◆ uam_detach

#define uam_detach (   a)
Value:
do { \
(a)->uam_prev->uam_next = (a)->uam_next; \
(a)->uam_next->uam_prev = (a)->uam_prev; \
} while (0)

Function Documentation

◆ auth_load()

int auth_load ( AFPObj obj,
const char *  path,
const char *  list 
)

load all of the modules

◆ auth_register()

int auth_register ( const int  type,
struct uam_obj uam 
)

◆ auth_uamfind()

struct uam_obj * auth_uamfind ( const int  type,
const char *  name,
const int  len 
)

just do a linked list search. this could be sped up with a hashed list, but i doubt anyone's going to have enough uams to matter.

◆ auth_unload()

void auth_unload ( void  )

get rid of all of the uams

◆ uam_load()

struct uam_mod * uam_load ( AFPObj obj,
const char *  path,
const char *  name 
)
extern

◆ uam_random_string()

int uam_random_string ( AFPObj obj,
char *  buf,
int  len 
)

Fill a buffer with cryptographically secure random bytes.

Reads from /dev/urandom, looping until all bytes are filled so the caller always receives a fully-populated nonce. Retries on EINTR; never falls back to a deterministic source.

Parameters
objAFP session object (unused)
bufdestination buffer
lennumber of bytes to fill; must be a positive multiple of 4
Returns
0 on success, -1 on error

◆ uam_unload()

void uam_unload ( struct uam_mod mod)
extern

unload the module.

we check for a cleanup function, but we don't die if one doesn't exist. however, things are likely to leak without one.