X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/379bd35f1dbfc5164a9112f37166894b98ab6b5a..8a6bced2a9068815fad97f9127a7d81be8b0629a:/include/moira.h diff --git a/include/moira.h b/include/moira.h index 0e66d72c..cfddccde 100644 --- a/include/moira.h +++ b/include/moira.h @@ -1,44 +1,62 @@ -/* - * $Source$ - * $Author$ - * $Header$ +/* $Id$ * - * Copyright (C) 1987 by the Massachusetts Institute of Technology + * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology * */ -#ifndef _sms_h_ -#define _sms_h_ +#ifndef _moira_h_ +#define _moira_h_ + +#ifdef _WIN32 +#include +#ifndef strcasecmp +#define strcasecmp stricmp +#endif +#ifndef snprintf +#define snprintf _snprintf +#endif +#endif /*_WIN32 */ /* return values from queries (and error codes) */ +#include +#include +#include +#include "mr_et.h" +#include "krb_et.h" +#include "ureg_err.h" -#include "sms_et.h" -#define SMS_SUCCESS 0 /* Query was successful */ +#define MR_SUCCESS 0 /* Query was successful */ -#define SMS_VERSION_1 1 /* Version in use from 7/87 to 4/88 */ -#define SMS_VERSION_2 2 /* After 4/88, new query lib */ +#define MR_VERSION_1 1 /* Version in use from 7/87 to 4/88 */ +#define MR_VERSION_2 2 /* After 4/88, new query lib */ -/* return values for sms server calls, used by clients */ +/* return values for Moira server calls, used by clients */ -#define SMS_CONT 0 /* Everything okay, continue sending values. */ -#define SMS_ABORT -1 /* Something went wrong don't send anymore +#define MR_CONT 0 /* Everything okay, continue sending values. */ +#define MR_ABORT -1 /* Something went wrong don't send anymore values. */ +#define MOIRA_SNAME "moira" /* Kerberos service key to use */ + /* Protocol operations */ -#define SMS_NOOP 0 -#define SMS_AUTH 1 -#define SMS_SHUTDOWN 2 -#define SMS_QUERY 3 -#define SMS_ACCESS 4 -#define SMS_DO_UPDATE 5 -#define SMS_MOTD 6 -#define SMS_MAX_PROC 6 +#define MR_NOOP 0 +#define MR_AUTH 1 +#define MR_SHUTDOWN 2 +#define MR_QUERY 3 +#define MR_ACCESS 4 +#define MR_DO_UPDATE 5 +#define MR_MOTD 6 +#define MR_PROXY 7 +#define MR_SETVERSION 8 +#define MR_KRB5_AUTH 9 +#define MR_MAX_PROC 9 /* values used in NFS physical flags */ -#define SMS_FS_STUDENT 0x0001 -#define SMS_FS_FACULTY 0x0002 -#define SMS_FS_STAFF 0x0004 -#define SMS_FS_MISC 0x0008 +#define MR_FS_STUDENT 0x0001 +#define MR_FS_FACULTY 0x0002 +#define MR_FS_STAFF 0x0004 +#define MR_FS_MISC 0x0008 +#define MR_FS_GROUPQUOTA 0x0010 /* magic values to pass for list and user queries */ #define UNIQUE_GID "create unique GID" @@ -48,55 +66,115 @@ /* Structure used by Save Queue routines (for temporary storage of data) */ struct save_queue { - struct save_queue *q_next; - struct save_queue *q_prev; - struct save_queue *q_lastget; - char *q_data; + struct save_queue *q_next; + struct save_queue *q_prev; + struct save_queue *q_lastget; + void *q_data; }; /* Hash table declarations */ struct bucket { - struct bucket *next; - int key; - char *data; + struct bucket *next; + int key; + void *data; }; struct hash { - int size; - struct bucket **data; + int size; + struct bucket **data; }; -#ifdef __STDC__ -int sms_connect(); -int sms_disconnect(); -int sms_auth(); -int sms_access(char *handle, int argc, char **argv); -int sms_access_internal(int argc, char **argv); -int sms_query(char *handle, int argc, char **argv, - int (*callback)(), char *callarg); -int sms_query_internal(int argc, char **argv, - int (*callback)(), char *callarg); -int sms_noop(); -int sms_shutdown(char *reason); -struct save_queue *sq_create(); +/* prototypes from critical.c */ +void critical_alert(char *whoami, char *instance, char *msg, ...); +void send_zgram(char *inst, char *msg); + +/* prototypes from fixhost.c */ +char *canonicalize_hostname(char *s); + +/* prototypes from fixname.c */ +void FixName(char *ilnm, char *ifnm, char *last, char *first, char *middle); +void FixCase(unsigned char *p); +void LookForJrAndIII(char *nm, int *pends_jr, int *pends_sr, + int *pends_ii, int *pends_iii, + int *pends_iv, int *pends_v); +void LookForSt(char *nm); +void LookForO(char *nm); +void TrimTrailingSpace(char *ip); +void GetMidInit(char *nm, char *mi); +void RemoveHyphens(char *str); + +/* prototypes from hash.c */ struct hash *create_hash(int size); -char *hash_lookup(struct hash *h, int key); -char *strsave(char *s); +void *hash_lookup(struct hash *h, int key); +int hash_update(struct hash *h, int key, void *value); +int hash_store(struct hash *h, int key, void *value); +void hash_search(struct hash *h, void *value, void (*callback)(int)); +void hash_step(struct hash *h, void (*callback)(int, void *, void *), + void *hint); +void hash_destroy(struct hash *h); + +/* prototypes from kname_unparse.c */ +char *mr_kname_unparse(char *p, char *i, char *r); + +/* prototypes from kname_parse.c */ +int mr_kname_parse(char *np, char *ip, char *rp, char *fullname); + +/* prototypes from nfsparttype.c */ +char *parse_filesys_type(char *fs_type_name); +char *format_filesys_type(char *fs_status); + +/* prototypes from sq.c */ +struct save_queue *sq_create(void); +int sq_save_data(struct save_queue *sq, void *data); +int sq_save_args(int argc, char *argv[], struct save_queue *sq); +int sq_save_unique_data(struct save_queue *sq, void *data); +int sq_save_unique_string(struct save_queue *sq, char *data); +/* in sq_get_data and sq_remove_data, the `data' arg should be a + pointer to a pointer */ +int sq_get_data(struct save_queue *sq, void *data); +int sq_remove_data(struct save_queue *sq, void *data); +void sq_remove_last_data(struct save_queue *sq); +int sq_empty(struct save_queue *sq); +void sq_destroy(struct save_queue *sq); + +/* prototypes from strs.c */ char *strtrim(char *s); -char *canonicalize_hostname(char *s); -#else !__STDC__ -int sms_connect(); -int sms_disconnect(); -int sms_auth(); -int sms_access(); -int sms_query(); -int sms_noop(); -int sms_shutdown(); -struct save_queue *sq_create(); -struct hash *create_hash(); -char *hash_lookup(); -char *strsave(); -char *strtrim(); -char *canonicalize_hostname(); -#endif __STDC__ - -#endif _sms_h_ /* Do Not Add Anything after this line. */ +char *uppercase(char *s); +char *lowercase(char *s); + +#ifndef HAVE_STRLCPY +size_t strlcpy(char *dst, const char *src, size_t size); +#endif +#ifndef HAVE_STRLCAT +size_t strlcat(char *dst, const char *src, size_t size); +#endif + +/* mr_ functions */ +int mr_access(char *handle, int argc, char **argv); +int mr_auth(char *prog); +int mr_connect(char *server); +int mr_disconnect(void); +int mr_do_update(void); +int mr_host(char *host, int size); +int mr_motd(char **motd); +int mr_noop(void); +int mr_proxy(char *principal, char *orig_authtype); +int mr_query(char *handle, int argc, char **argv, + int (*callback)(int, char **, void *), void *callarg); +int mr_version(int version); + +/* error-name backward compatibility */ +#define MR_INGRES_ERR MR_DBMS_ERR +#define MR_INGRES_SOFTFAIL MR_DBMS_SOFTFAIL + + +#ifdef __GNUC__ +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +#define __attribute__(x) +#endif +#else /* ! __GNUC __ */ +#define __attribute__(x) +#endif + +#define RCSID(id) static char *rcsid __attribute__ ((__unused__)) = id + +#endif /* _moira_h_ */ /* Do Not Add Anything after this line. */