source: trunk/third/moira/include/moira.h @ 24319

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