]> andersk Git - moira.git/blame - include/moira.h
Add expiration date column to users table and client support.
[moira.git] / include / moira.h
CommitLineData
7ac48069 1/* $Id$
6d409214 2 *
7ac48069 3 * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology
6d409214 4 *
6d409214 5 */
6
b3c011db 7#ifndef _moira_h_
8#define _moira_h_
ebf77ded 9
533bacb3 10#ifdef _WIN32
11#include <windows.h>
12#ifndef strcasecmp
13#define strcasecmp stricmp
14#endif
1a6e5286 15#ifndef snprintf
16#define snprintf _snprintf
17#endif
533bacb3 18#endif /*_WIN32 */
ac3530a2 19
533bacb3 20/* return values from queries (and error codes) */
0e87a287 21#include <sys/types.h>
7ac48069 22#include <com_err.h>
8defc06b 23#include "mr_et.h"
7ac48069 24#include "krb_et.h"
7ac48069 25#include "ureg_err.h"
533bacb3 26
b3c011db 27#define MR_SUCCESS 0 /* Query was successful */
0fa91a0a 28
b3c011db 29#define MR_VERSION_1 1 /* Version in use from 7/87 to 4/88 */
30#define MR_VERSION_2 2 /* After 4/88, new query lib */
0fa91a0a 31
8defc06b 32/* return values for Moira server calls, used by clients */
ebf77ded 33
b3c011db 34#define MR_CONT 0 /* Everything okay, continue sending values. */
35#define MR_ABORT -1 /* Something went wrong don't send anymore
ebf77ded 36 values. */
37
311f6975 38#define MOIRA_SNAME "moira" /* Kerberos service key to use */
39
ac3530a2 40/* Protocol operations */
b3c011db 41#define MR_NOOP 0
42#define MR_AUTH 1
43#define MR_SHUTDOWN 2
44#define MR_QUERY 3
45#define MR_ACCESS 4
46#define MR_DO_UPDATE 5
47#define MR_MOTD 6
e586854a 48#define MR_PROXY 7
7332134b 49#define MR_SETVERSION 8
991417e4 50#define MR_KRB5_AUTH 9
51#define MR_MAX_PROC 9
1a1fe0bc 52
ac3530a2 53/* values used in NFS physical flags */
b3c011db 54#define MR_FS_STUDENT 0x0001
55#define MR_FS_FACULTY 0x0002
56#define MR_FS_STAFF 0x0004
57#define MR_FS_MISC 0x0008
936af1a7 58#define MR_FS_GROUPQUOTA 0x0010
f4a12540 59
ac3530a2 60/* magic values to pass for list and user queries */
61#define UNIQUE_GID "create unique GID"
62#define UNIQUE_UID "create unique UID"
63#define UNIQUE_LOGIN "create unique login ID"
64
ea7f8538 65/* Structure used by Save Queue routines (for temporary storage of data) */
66struct save_queue
67{
7ac48069 68 struct save_queue *q_next;
69 struct save_queue *q_prev;
70 struct save_queue *q_lastget;
71 void *q_data;
ea7f8538 72};
73
74/* Hash table declarations */
75struct bucket {
7ac48069 76 struct bucket *next;
77 int key;
78 void *data;
ea7f8538 79};
80struct hash {
7ac48069 81 int size;
82 struct bucket **data;
ea7f8538 83};
ac3530a2 84
7ac48069 85/* prototypes from critical.c */
86void critical_alert(char *instance, char *msg, ...);
87void send_zgram(char *inst, char *msg);
88
89/* prototypes from fixhost.c */
90char *canonicalize_hostname(char *s);
91
92/* prototypes from fixname.c */
93void FixName(char *ilnm, char *ifnm, char *last, char *first, char *middle);
428a496c 94void FixCase(unsigned char *p);
7ac48069 95void LookForJrAndIII(char *nm, int *pends_jr, int *pends_sr,
96 int *pends_ii, int *pends_iii,
97 int *pends_iv, int *pends_v);
98void LookForSt(char *nm);
99void LookForO(char *nm);
100void TrimTrailingSpace(char *ip);
101void GetMidInit(char *nm, char *mi);
cbd64bea 102void RemoveHyphens(char *str);
7ac48069 103
7ac48069 104/* prototypes from hash.c */
105struct hash *create_hash(int size);
106void *hash_lookup(struct hash *h, int key);
107int hash_update(struct hash *h, int key, void *value);
108int hash_store(struct hash *h, int key, void *value);
109void hash_search(struct hash *h, void *value, void (*callback)(int));
110void hash_step(struct hash *h, void (*callback)(int, void *, void *),
111 void *hint);
112void hash_destroy(struct hash *h);
113
7ac48069 114/* prototypes from kname_unparse.c */
866127a1 115char *mr_kname_unparse(char *p, char *i, char *r);
7ac48069 116
117/* prototypes from nfsparttype.c */
118char *parse_filesys_type(char *fs_type_name);
119char *format_filesys_type(char *fs_status);
120
121/* prototypes from sq.c */
122struct save_queue *sq_create(void);
123int sq_save_data(struct save_queue *sq, void *data);
124int sq_save_args(int argc, char *argv[], struct save_queue *sq);
125int sq_save_unique_data(struct save_queue *sq, void *data);
126int sq_save_unique_string(struct save_queue *sq, char *data);
127/* in sq_get_data and sq_remove_data, the `data' arg should be a
128 pointer to a pointer */
129int sq_get_data(struct save_queue *sq, void *data);
130int sq_remove_data(struct save_queue *sq, void *data);
444b050f 131void sq_remove_last_data(struct save_queue *sq);
7ac48069 132int sq_empty(struct save_queue *sq);
133void sq_destroy(struct save_queue *sq);
134
135/* prototypes from strs.c */
136char *strtrim(char *s);
137char *uppercase(char *s);
138char *lowercase(char *s);
533bacb3 139
0e87a287 140#ifndef HAVE_STRLCPY
141size_t strlcpy(char *dst, const char *src, size_t size);
142#endif
143#ifndef HAVE_STRLCAT
144size_t strlcat(char *dst, const char *src, size_t size);
145#endif
7ac48069 146
147/* mr_ functions */
148int mr_access(char *handle, int argc, char **argv);
149int mr_auth(char *prog);
b3c011db 150int mr_connect(char *server);
7ac48069 151int mr_disconnect(void);
152int mr_do_update(void);
b3c011db 153int mr_host(char *host, int size);
843d19d8 154int mr_motd(char **motd);
7ac48069 155int mr_noop(void);
7332134b 156int mr_proxy(char *principal, char *orig_authtype);
b3c011db 157int mr_query(char *handle, int argc, char **argv,
7ac48069 158 int (*callback)(int, char **, void *), void *callarg);
7332134b 159int mr_version(int version);
ebf77ded 160
2043da3e 161/* error-name backward compatibility */
162#define MR_INGRES_ERR MR_DBMS_ERR
163#define MR_INGRES_SOFTFAIL MR_DBMS_SOFTFAIL
164
7ac48069 165
ea0caf4a 166#ifdef __GNUC__
2de0d180 167#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
ea0caf4a 168#define __attribute__(x)
169#endif
170#else /* ! __GNUC __ */
7ac48069 171#define __attribute__(x)
172#endif
173
174#define RCSID(id) static char *rcsid __attribute__ ((__unused__)) = id
175
3fcd2703 176#endif /* _moira_h_ */ /* Do Not Add Anything after this line. */
This page took 0.124755 seconds and 5 git commands to generate.