e1418c056dcd817466db95b754c97383581d94f1
[openafs.git] / src / ptserver / ubik.c
1 /* $Id$ */
2
3 #include <afsconfig.h>
4 #include <afs/param.h>
5
6 RCSID
7     ("$Header$");
8
9 #include <sys/types.h>
10 #include <netinet/in.h>
11 #include <string.h>
12 #include <stdarg.h>
13
14 #include <lock.h>
15 #define UBIK_INTERNALS
16 #include <afs/stds.h>
17 #include <afs/cellconfig.h>
18 #include <ubik.h>
19 #include <rx/xdr.h>
20 #include "ptint.h"
21 #include "ptserver.h"
22
23 extern int dbase_fd;
24 struct ubik_dbase *dbase;
25
26 int
27 ubik_ServerInit(afs_int32 myHost, short myPort, afs_int32 serverList[],
28                 char *pathName, struct ubik_dbase **dbase)
29 {
30     return (0);
31 }
32
33 int
34 ubik_BeginTrans(register struct ubik_dbase *dbase, afs_int32 transMode, 
35                 struct ubik_trans **transPtr)
36 {
37     static int init = 0;
38     struct ubik_hdr thdr;
39
40     if (!init) {
41         thdr.version.epoch = htonl(2);
42         thdr.version.counter = htonl(0);
43         thdr.magic = htonl(UBIK_MAGIC);
44         thdr.size = htons(HDRSIZE);
45         lseek(dbase_fd, 0, 0);
46         write(dbase_fd, &thdr, sizeof(thdr));
47         fsync(dbase_fd);
48         init = 1;
49     }
50     return (0);
51 }
52
53 int
54 ubik_BeginTransReadAny(register struct ubik_dbase *dbase, afs_int32 transMode,
55                        struct ubik_trans **transPtr)
56 {
57     return (0);
58 }
59
60 int
61 ubik_AbortTrans(register struct ubik_trans *transPtr)
62 {
63     return (0);
64 }
65
66 int
67 ubik_EndTrans(register struct ubik_trans *transPtr)
68 {
69     return (0);
70 }
71
72 int
73 ubik_Tell(register struct ubik_trans *transPtr, afs_int32 * fileid,
74           afs_int32 * position)
75 {
76     return (0);
77 }
78
79 int
80 ubik_Truncate(register struct ubik_trans *transPtr, afs_int32 length)
81 {
82     return (0);
83 }
84
85 int
86 ubik_SetLock(struct ubik_trans *atrans, afs_int32 apos, afs_int32 alen,
87              int atype)
88 {
89     return (0);
90 }
91
92 int
93 ubik_WaitVersion(register struct ubik_dbase *adatabase,
94                  register struct ubik_version *aversion)
95 {
96     return (0);
97 }
98
99 int
100 ubik_CacheUpdate(register struct ubik_trans *atrans)
101 {
102     return (0);
103 }
104
105 void
106 panic(char *format, ...)
107 {
108     va_list ap;
109
110     va_start(ap, format);
111     vprintf(format, ap);
112     va_end(ap);
113     
114     abort();
115     printf("BACK FROM ABORT\n");        /* shouldn't come back from floating pt exception */
116     exit(1);                    /* never know, though */
117 }
118
119 int
120 ubik_GetVersion(struct ubik_trans *dummy, struct ubik_version *ver)
121 {
122     memset(ver, 0, sizeof(struct ubik_version));
123     return (0);
124 }
125
126
127 int
128 ubik_Seek(struct ubik_trans *tt, afs_int32 afd, afs_int32 pos)
129 {
130     if (lseek(dbase_fd, pos + HDRSIZE, 0) < 0) {
131         perror("ubik_Seek");
132         return (-1);
133     }
134     return (0);
135 }
136
137 int
138 ubik_Write(struct ubik_trans *tt, void *buf, afs_int32 len)
139 {
140     int status;
141
142     status = write(dbase_fd, buf, len);
143     if (status < len) {
144         perror("ubik_Write");
145         return (1);
146     }
147     return (0);
148 }
149
150 int
151 ubik_Read(struct ubik_trans *tt, void *buf, afs_int32 len)
152 {
153     int status;
154
155     status = read(dbase_fd, buf, len);
156     if (status < 0) {
157         perror("ubik_Read");
158         return (1);
159     }
160     if (status < len)
161         memset((char *)buf + status, 0, len - status);
162     return (0);
163 }
164
165
166 /* Global declarations from ubik.c */
167 afs_int32 ubik_quorum = 0;
168 struct ubik_dbase *ubik_dbase = 0;
169 struct ubik_stats ubik_stats;
170 afs_uint32 ubik_host[UBIK_MAX_INTERFACE_ADDR];
171 afs_int32 ubik_epochTime = 0;
172 afs_int32 urecovery_state = 0;
173
174 struct rx_securityClass *ubik_sc[3];
175
176
177 /* Other declarations */
178
179 int 
180 afsconf_GetNoAuthFlag(struct afsconf_dir *adir)
181 {
182     return (1);
183 }
184
185
186 char *prdir = "/dev/null";
187 struct prheader cheader;
188 int pr_realmNameLen;
189 char *pr_realmName;