2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 /* check_sysid.c - Verify and display the sysid file. */
13 /* ********************************************************************* */
15 #include <afsconfig.h>
16 #include <afs/param.h>
23 #include <afs/vldbint.h>
25 #define SYSIDMAGIC 0x88aabbcc
26 #define SYSIDVERSION 1
28 struct versionStamp { /* Stolen from <afs/volume.h> */
34 main(int argc, char **argv)
38 struct versionStamp vs;
43 if ((argc != 2) || (strcmp(argv[1], "-h") == 0)) {
44 printf("Usage: check_sysid <sysid_file>\n");
45 exit((argc != 2) ? 1 : 0);
48 fd = open(argv[1], O_RDONLY, 0);
50 printf("Unable to open file '%s'. Errno = %d\n", argv[1], errno);
54 /* Read the Version Stamp */
55 size = read(fd, (char *)&vs, sizeof(vs));
56 if (size != sizeof(vs)) {
57 printf("Unable to read versionStamp. Size = %d. Errno = %d\n", size,
60 printf("versionStamp.magic = 0x%x %s\n", vs.magic,
61 (vs.magic == SYSIDMAGIC) ? "" : "(should be 0x88aabbc)");
62 printf("versionStamp.version = 0x%x %s\n", vs.version,
63 (vs.version == SYSIDVERSION) ? "" : "(should be 0x1)");
66 * Look at util/uuid.c afs_uuid_create() to see how it is created.
68 size = read(fd, (char *)&uuid, sizeof(uuid));
69 if (size != sizeof(uuid)) {
70 printf("Unable to read afsUUID. Size = %d. Errno = %d\n", size,
74 printf("UUID.time(hi.mid.low)= 0x%03x.%04x.%08x\n",
75 uuid.time_hi_and_version & 0x0fff, uuid.time_mid & 0xffff,
77 printf("UUID.version = %d (0x%01x)\n",
78 (uuid.time_hi_and_version >> 12) & 0xf,
79 (uuid.time_hi_and_version >> 12) & 0xf);
80 printf("UUID.clock(hi.low) = 0x%02x.%02x\n",
81 uuid.clock_seq_hi_and_reserved & 0x3f, uuid.clock_seq_low & 0xff);
82 printf("UUID.reserved = %d (0x%02x)\n",
83 (uuid.clock_seq_hi_and_reserved >> 6) & 0x3,
84 (uuid.clock_seq_hi_and_reserved >> 6) & 0x3);
85 printf("UUID.node = %02x.%02x.%02x.%02x.%02x.%02x\n",
86 uuid.node[0] & 0xff, uuid.node[1] & 0xff, uuid.node[2] & 0xff,
87 uuid.node[3] & 0xff, uuid.node[4] & 0xff, uuid.node[5] & 0xff);
89 /* Read the number of addresses recorded in the sysid */
90 size = read(fd, (char *)&nentries, sizeof(int));
91 if (size != sizeof(int)) {
92 printf("Unable to read nentries. Size = %d. Errno = %d\n", size,
96 printf("Number of addreses = %d (0x%x)\n", nentries, nentries);
98 /* Now read in each of the addresses */
99 for (i = 0; i < nentries; i++) {
100 size = read(fd, (char *)&addr, sizeof(int));
101 if (size != sizeof(int)) {
102 printf("Unable to read IP Address %d. Size = %d. Errno = %d\n",
106 printf("Address = %d.%d.%d.%d (0x%x)\n",
107 (addr >> 24) & 0xff, (addr >> 16) & 0xff, (addr >> 8) & 0xff,
108 (addr) & 0xff, addr);