1/* 2 * $Id: uam_auth.h,v 1.7 2009-10-22 12:35:38 franklahm Exp $ 3 * 4 * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu) 5 * All Rights Reserved. See COPYRIGHT. 6 * 7 * interface between uam.c and auth.c 8 */ 9 10#ifndef AFPD_UAM_AUTH_H 11#define AFPD_UAM_AUTH_H 1 12 13#include <sys/cdefs.h> 14#include <pwd.h> 15 16#include <atalk/uam.h> 17#include <atalk/globals.h> 18 19struct uam_mod { 20 void *uam_module; 21 struct uam_export *uam_fcn; 22 struct uam_mod *uam_prev, *uam_next; 23}; 24 25struct uam_obj { 26 const char *uam_name; /* authentication method */ 27 char *uam_path; /* where it's located */ 28 int uam_count; 29 union { 30 struct { 31 int (*login) (void *, struct passwd **, 32 char *, int, char *, size_t *); 33 int (*logincont) (void *, struct passwd **, char *, 34 int, char *, size_t *); 35 void (*logout) (void); 36 int (*login_ext) (void *, char *, struct passwd **, 37 char *, int, char *, size_t *); 38 } uam_login; 39 int (*uam_changepw) (void *, char *, struct passwd *, char *, 40 int, char *, size_t *); 41 } u; 42 struct uam_obj *uam_prev, *uam_next; 43}; 44 45#define uam_attach(a, b) do { \ 46 (a)->uam_prev->uam_next = (b); \ 47 (b)->uam_prev = (a)->uam_prev; \ 48 (b)->uam_next = (a); \ 49 (a)->uam_prev = (b); \ 50} while (0) 51 52#define uam_detach(a) do { \ 53 (a)->uam_prev->uam_next = (a)->uam_next; \ 54 (a)->uam_next->uam_prev = (a)->uam_prev; \ 55} while (0) 56 57extern struct uam_mod *uam_load (const char *, const char *); 58extern void uam_unload (struct uam_mod *); 59 60/* auth.c */ 61int auth_load (const char *, const char *); 62int auth_register (const int, struct uam_obj *); 63#define auth_unregister(a) uam_detach(a) 64struct uam_obj *auth_uamfind (const int, const char *, const int); 65void auth_unload (void); 66 67/* uam.c */ 68int uam_random_string (AFPObj *,char *, int); 69 70#endif /* uam_auth.h */ 71