]> arthur.barton.de Git - netatalk.git/blob - include/atalk/uam.h
Tab -> spaces (consistency).
[netatalk.git] / include / atalk / uam.h
1 /* Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
2  * All Rights Reserved.  See COPYRIGHT.
3  */
4
5 #ifndef UAM_H
6 #define UAM_H 1
7
8 #include <sys/cdefs.h>
9 #include <pwd.h>
10 #include <stdarg.h>
11
12 #ifdef TRU64
13 #include <sia.h>
14 #include <siad.h>
15 #endif /* TRU64 */
16
17 /* just a label for exported bits */
18 #define UAM_MODULE_EXPORT
19
20 /* type of uam */
21 #define UAM_MODULE_SERVER        1
22 #define UAM_MODULE_CLIENT        2
23
24 /* in case something drastic has to change */
25 #define UAM_MODULE_VERSION       1
26
27 /* things for which we can have uams */
28 #define UAM_SERVER_LOGIN         (1 << 0)
29 #define UAM_SERVER_CHANGEPW      (1 << 1)
30 #define UAM_SERVER_PRINTAUTH     (1 << 2) 
31 #define UAM_SERVER_LOGIN_EXT     (1 << 3)
32
33 /* options */
34 #define UAM_OPTION_USERNAME     (1 << 0) /* get space for username */
35 #define UAM_OPTION_GUEST        (1 << 1) /* get guest user */
36 #define UAM_OPTION_PASSWDOPT    (1 << 2) /* get the password file */
37 #define UAM_OPTION_SIGNATURE    (1 << 3) /* get server signature */
38 #define UAM_OPTION_RANDNUM      (1 << 4) /* request a random number */
39 #define UAM_OPTION_HOSTNAME     (1 << 5) /* get host name */
40 #define UAM_OPTION_COOKIE       (1 << 6) /* cookie handle */
41 #define UAM_OPTION_PROTOCOL     (1 << 7) /* DSI or ASP */
42 #define UAM_OPTION_CLIENTNAME   (1 << 8) /* get client IP address */
43 #define UAM_OPTION_KRB5SERVICE  (1 << 9) /* service name for krb5 principal */
44
45 /* some password options. you pass these in the length parameter and
46  * get back the corresponding option. not all of these are implemented. */
47 #define UAM_PASSWD_FILENAME     (1 << 0)
48 #define UAM_PASSWD_MINLENGTH    (1 << 1)
49 #define UAM_PASSWD_MAXFAIL      (1 << 2) /* not implemented yet. */
50 #define UAM_PASSWD_EXPIRETIME   (1 << 3) /* not implemented yet. */
51
52 /* max lenght of username  */
53 #define UAM_USERNAMELEN         255
54
55 /* i'm doing things this way because os x server's dynamic linker
56  * support is braindead. it also allows me to do a little versioning. */
57 struct uam_export {
58   int uam_type, uam_version;
59   int (*uam_setup)(const char *);
60   void (*uam_cleanup)(void);
61 };
62
63 /* register and unregister uams with these functions */
64 extern int uam_register __P((const int, const char *, const char *, ...));
65 extern void uam_unregister __P((const int, const char *));
66
67 /* helper functions */
68 extern struct passwd *uam_getname __P((char *, const int));
69 extern int uam_checkuser __P((const struct passwd *));
70
71 /* afp helper functions */
72 extern int uam_afp_read __P((void *, char *, int *,
73                              int (*)(void *, void *, const int)));
74 extern int uam_afpserver_option __P((void *, const int, void *, int *));
75 #ifdef TRU64
76 extern void uam_afp_getcmdline __P((int *, char ***));
77 extern int uam_sia_validate_user __P((sia_collect_func_t *, int, char **,
78                                      char *, char *, char *, int, char *,
79                                      char *));
80 #endif /* TRU64 */
81
82 /* switch.c */
83 #define UAM_AFPSERVER_PREAUTH  (0)
84 #define UAM_AFPSERVER_POSTAUTH (1 << 0)
85
86 extern int uam_afpserver_action __P((const int /*id*/, const int /*switch*/, 
87                                      int (*)(), int (**)()));
88
89 #endif