]> arthur.barton.de Git - netatalk.git/blobdiff - include/atalk/uam.h
New option parsing
[netatalk.git] / include / atalk / uam.h
index 49e6a6f1298bf9df3dcbc1ab08b774686c8b2f41..72207f1fcdb1d0aa28dc7ce6ea7958525d1cfe2d 100644 (file)
@@ -5,12 +5,18 @@
 #ifndef UAM_H
 #define UAM_H 1
 
-#include <sys/cdefs.h>
 #include <pwd.h>
 #include <stdarg.h>
 
+#ifdef TRU64
+#include <sia.h>
+#include <siad.h>
+#endif /* TRU64 */
+
 /* just a label for exported bits */
-#define UAM_MODULE_EXPORT
+#ifndef UAM_MODULE_EXPORT
+#define UAM_MODULE_EXPORT 
+#endif
 
 /* type of uam */
 #define UAM_MODULE_SERVER       1
@@ -23,6 +29,7 @@
 #define UAM_SERVER_LOGIN         (1 << 0)
 #define UAM_SERVER_CHANGEPW      (1 << 1)
 #define UAM_SERVER_PRINTAUTH     (1 << 2) 
+#define UAM_SERVER_LOGIN_EXT     (1 << 3)
 
 /* options */
 #define UAM_OPTION_USERNAME     (1 << 0) /* get space for username */
 #define UAM_OPTION_HOSTNAME     (1 << 5) /* get host name */
 #define UAM_OPTION_COOKIE       (1 << 6) /* cookie handle */
 #define UAM_OPTION_PROTOCOL    (1 << 7) /* DSI or ASP */
+#define UAM_OPTION_CLIENTNAME   (1 << 8) /* get client IP address */
+#define UAM_OPTION_KRB5SERVICE  (1 << 9) /* service name for krb5 principal */
+#define UAM_OPTION_MACCHARSET   (1 << 10) /* mac charset handle */
+#define UAM_OPTION_UNIXCHARSET  (1 << 11) /* unix charset handle */
+#define UAM_OPTION_SESSIONINFO  (1 << 12) /* unix charset handle */
+#define UAM_OPTION_KRB5REALM    (1 << 13) /* krb realm */
+#define UAM_OPTION_FQDN         (1 << 14) /* fully qualified name */
 
 /* some password options. you pass these in the length parameter and
  * get back the corresponding option. not all of these are implemented. */
 #define UAM_PASSWD_FILENAME     (1 << 0)
 #define UAM_PASSWD_MINLENGTH    (1 << 1)
-#define UAM_PASSWD_MAXFAIL      (1 << 2) /* not implemented yet. */
 #define UAM_PASSWD_EXPIRETIME   (1 << 3) /* not implemented yet. */
 
+/* max lenght of username  */
+#define UAM_USERNAMELEN        255
+
 /* i'm doing things this way because os x server's dynamic linker
  * support is braindead. it also allows me to do a little versioning. */
 struct uam_export {
@@ -49,24 +65,38 @@ struct uam_export {
   void (*uam_cleanup)(void);
 };
 
+#define SESSIONKEY_LEN  64
+#define SESSIONTOKEN_LEN 8
+
+struct session_info {
+  void    *sessionkey;          /* random session key */
+  size_t  sessionkey_len;
+  void    *cryptedkey;         /* kerberos/gssapi crypted key */
+  size_t  cryptedkey_len;
+  void    *sessiontoken;        /* session token sent to the client on FPGetSessionToken*/
+  size_t  sessiontoken_len;
+  void    *clientid;          /* whole buffer cotaining eg idlen, id and boottime */
+  size_t  clientid_len;
+};
+
 /* register and unregister uams with these functions */
-extern int uam_register __P((const int, const char *, const char *, ...));
-extern void uam_unregister __P((const int, const char *));
+extern UAM_MODULE_EXPORT int uam_register (const int, const char *, const char *, ...);
+extern UAM_MODULE_EXPORT void uam_unregister (const int, const char *);
 
 /* helper functions */
-extern struct passwd *uam_getname __P((char *, const int));
-extern int uam_checkuser __P((const struct passwd *));
+extern UAM_MODULE_EXPORT struct passwd *uam_getname (void*, char *, const int);
+extern UAM_MODULE_EXPORT int uam_checkuser (const struct passwd *);
 
 /* afp helper functions */
-extern int uam_afp_read __P((void *, char *, int *,
-                            int (*)(void *, void *, const int)));
-extern int uam_afpserver_option __P((void *, const int, void *, int *));
-
-/* switch.c */
-#define UAM_AFPSERVER_PREAUTH  (0)
-#define UAM_AFPSERVER_POSTAUTH (1 << 0)
+extern UAM_MODULE_EXPORT int uam_afp_read (void *, char *, size_t *,
+                            int (*)(void *, void *, const int));
+extern UAM_MODULE_EXPORT int uam_afpserver_option (void *, const int, void *, size_t *);
 
-extern int uam_afpserver_action __P((const int /*id*/, const int /*switch*/, 
-                                    int (**)(), int (**)()));
+#ifdef TRU64
+extern void uam_afp_getcmdline (int *, char ***);
+extern int uam_sia_validate_user (sia_collect_func_t *, int, char **,
+                                     char *, char *, char *, int, char *,
+                                     char *);
+#endif /* TRU64 */
 
 #endif