EXEC SQL DECLARE csr201 CURSOR FOR
SELECT cluster.name FROM cluster, mcmap
WHERE cluster.clu_id=mcmap.clu_id AND mcmap.mach_id = :iid;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr201;
while(1) {
EXEC SQL FETCH csr201 INTO :name;
EXEC SQL DECLARE csr202 CURSOR FOR
SELECT machine.name FROM machine, mcmap
WHERE machine.mach_id=mcmap.mach_id AND mcmap.clu_id=:iid;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr202;
while(1) {
EXEC SQL FETCH csr202 INTO :name;
modified("users");
}
+
+mach_check(id, m, hint)
+int id;
+struct machine *m;
+int hint;
+{
+ if (!hash_lookup(subnets, m->snet_id)) {
+ printf("Machine %s is on a non-existant subnet %d\n",
+ m->name, m->snet_id);
+ if (single_fix("Move to null-subnet", 1)) {
+ EXEC SQL BEGIN DECLARE SECTION;
+ int rowcount, iid = id;
+ EXEC SQL END DECLARE SECTION;
+
+ EXEC SQL UPDATE machine SET snet_id=0 WHERE mach_id = :iid;
+ EXEC SQL INQUIRE_SQL(:rowcount = rowcount);
+ if (rowcount > 0)
+ printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies");
+ else
+ printf("Not fixed\n");
+ modified("machine");
+ }
+ }
+
+ switch (m->owner_type) {
+ case 'U':
+ if (!hash_lookup(users, m->owner_id)) {
+ printf("Machine %s has non-existant USER owner %d\n",
+ m->name, m->owner_id);
+ if (single_fix("Set to no owner", 1)) {
+ clear_mach_owner(m);
+ }
+ }
+ break;
+ case 'L':
+ if (!hash_lookup(lists, m->owner_id)) {
+ printf("Machine %s has non-existant LIST owner %d\n",
+ m->name, m->owner_id);
+ if (single_fix("Set to no owner", 1)) {
+ clear_mach_owner(m);
+ }
+ }
+ break;
+ }
+}
+
+
+clear_mach_owner(m)
+struct machine *m;
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ int rowcount, id = m->mach_id;
+ EXEC SQL END DECLARE SECTION;
+
+ EXEC SQL UPDATE machine SET owner_type='NONE', owner_id=0
+ WHERE mach_id = :id;
+ EXEC SQL INQUIRE_SQL(:rowcount = rowcount);
+ if (rowcount > 0)
+ printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies");
+ else
+ printf("Not fixed\n");
+ modified("machine");
+}
+
+
show_svc(id)
int id;
{
EXEC SQL DECLARE csr203 CURSOR FOR
SELECT serv_label, serv_cluster FROM svc
WHERE clu_id = :iid;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr203;
while(1) {
EXEC SQL FETCH csr203 INTO :label, :data;
EXEC SQL DECLARE csr204 CURSOR FOR
SELECT member_type, member_id FROM imembers
WHERE list_id = :iid AND direct=1;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr204;
while(1) {
EXEC SQL FETCH csr204 INTO :mtype, :mid;
EXEC SQL DECLARE csr205 CURSOR FOR
SELECT list_id FROM imembers
WHERE member_id = :iid AND member_type='USER' AND direct=1;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr205;
while(1) {
EXEC SQL FETCH csr205 INTO :lid;
EXEC SQL DECLARE csr206 CURSOR FOR
SELECT list_id FROM imembers
WHERE member_id = :iid AND member_type='LIST' AND direct=1;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr206;
while(1) {
EXEC SQL FETCH csr206 INTO :lid;
EXEC SQL DECLARE csr207 CURSOR FOR
SELECT list_id FROM imembers
WHERE member_id = :iid AND member_type='STRING' AND direct=1;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr207;
while(1) {
EXEC SQL FETCH csr207 INTO :lid;
EXEC SQL DECLARE csr208 CURSOR FOR
SELECT list_id FROM imembers
WHERE member_id = :iid AND member_type='KERBEROS' AND direct=1;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr208;
while(1) {
EXEC SQL FETCH csr208 INTO :lid;
EXEC SQL DECLARE csr209 CURSOR FOR
SELECT service FROM serverhosts
WHERE mach_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr209;
while(1) {
EXEC SQL FETCH csr209 INTO :name;
EXEC SQL DECLARE csr210 CURSOR FOR
SELECT filsys_id FROM fsgroup
WHERE group_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr210;
while(1) {
EXEC SQL FETCH csr210 INTO :id1;
EXEC SQL DECLARE csr211 CURSOR FOR
SELECT group_id FROM fsgroup
WHERE filsys_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr211;
while(1) {
EXEC SQL FETCH csr211 INTO :id1;
EXEC SQL DECLARE csr212 CURSOR FOR
SELECT filsys_id FROM quota
WHERE entity_id = :id AND type='USER';
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr212;
while(1) {
EXEC SQL FETCH csr212 INTO :id1;
EXEC SQL DECLARE csr213 CURSOR FOR
SELECT filsys_id FROM quota
WHERE entity_id = :id AND type='GROUP';
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr213;
while(1) {
EXEC SQL FETCH csr213 INTO :id1;
EXEC SQL DECLARE csr214 CURSOR FOR
SELECT entity_id, type FROM quota
WHERE filsys_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr214;
while(1) {
EXEC SQL FETCH csr214 INTO :id1, :type;
EXEC SQL DECLARE csr215 CURSOR FOR
SELECT entity_id, type FROM quota
WHERE filsys_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr215;
while(1) {
EXEC SQL FETCH csr215 INTO :id1, :type;
EXEC SQL DECLARE csr216 CURSOR FOR
SELECT name FROM servers
WHERE acl_type='USER' and acl_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr216;
while(1) {
EXEC SQL FETCH csr216 INTO :name;
EXEC SQL DECLARE csr217 CURSOR FOR
SELECT name FROM servers
WHERE acl_type='LIST' AND acl_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr217;
while(1) {
EXEC SQL FETCH csr217 INTO :name;
EXEC SQL DECLARE csr218 CURSOR FOR
SELECT string_id FROM krbmap
WHERE users_id = :id ;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr218;
while(1) {
EXEC SQL FETCH csr218 INTO :id1;
EXEC SQL DECLARE csr219 CURSOR FOR
SELECT users_id FROM krbmap
WHERE string_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr219;
while(1) {
EXEC SQL FETCH csr219 INTO :id1;
EXEC SQL DECLARE csr220 CURSOR FOR
SELECT name FROM palladium
WHERE mach_id = :id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr220;
while(1) {
EXEC SQL FETCH csr220 INTO :name;
dprintf("Checking users...\n");
hash_step(users, pobox_check, NULL);
+ dprintf("Checking machines...\n");
+ hash_step(machines, mach_check, NULL);
+
dprintf("Checking mcmap...\n");
sq1 = sq_create();
sq2 = sq_create();
EXEC SQL DECLARE csr221 CURSOR FOR
SELECT mach_id, clu_id FROM mcmap;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr221;
while(1) {
EXEC SQL FETCH csr221 INTO :id1, :id2;
sq1 = sq_create();
EXEC SQL DECLARE csr222 CURSOR FOR
SELECT clu_id FROM svc;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr222;
while(1) {
EXEC SQL FETCH csr222 INTO :id1;
EXEC SQL DECLARE csr223 CURSOR FOR
SELECT list_id, member_type, member_id, ref_count, direct
FROM imembers ORDER BY list_id;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr223;
while(1) {
EXEC SQL FETCH csr223 INTO :id1, :type, :id2, :id3, :id4;
sq2 = sq_create();
EXEC SQL DECLARE csr224 CURSOR FOR
SELECT name, acl_type, acl_id FROM servers;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr224;
while(1) {
EXEC SQL FETCH csr224 INTO :name, :type, :id1;
sq = sq_create();
EXEC SQL DECLARE csr225 CURSOR FOR
SELECT mach_id FROM serverhosts;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr225;
while(1) {
EXEC SQL FETCH csr225 INTO :id1;
sq3 = sq_create();
EXEC SQL DECLARE csr226 CURSOR FOR
SELECT group_id, filsys_id FROM fsgroup;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr226;
while(1) {
EXEC SQL FETCH csr226 INTO :id1, :id2;
sq4 = sq_create();
EXEC SQL DECLARE csr227 CURSOR FOR
SELECT entity_id, type, filsys_id, phys_id, quota FROM quota;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr227;
while(1) {
EXEC SQL FETCH csr227 INTO :id1, :type, :id2, :id3, :id4;
dprintf("Checking hostaccess...\n");
EXEC SQL DECLARE csr228 CURSOR FOR
SELECT mach_id, acl_type, acl_id FROM hostaccess;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr228;
while(1) {
EXEC SQL FETCH csr228 INTO :id1, :type, :id2;
sq1 = sq_create();
EXEC SQL DECLARE csr229 CURSOR FOR
SELECT mach_id FROM palladium;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr229;
while(1) {
EXEC SQL FETCH csr229 INTO :id1;
sq2 = sq_create();
EXEC SQL DECLARE csr230 CURSOR FOR
SELECT users_id, string_id FROM krbmap;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr230;
while(1) {
EXEC SQL FETCH csr230 INTO :id1, :id2;
dprintf("Checking capacls...\n");
EXEC SQL DECLARE csr231 CURSOR FOR
SELECT list_id, tag FROM capacls;
+ if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode);
EXEC SQL OPEN csr231;
while(1) {
EXEC SQL FETCH csr231 INTO :id1, :name;