Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/networking/udhcp/dumpleases.c
- Timestamp:
- Feb 25, 2011, 9:26:54 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mindi-busybox/networking/udhcp/dumpleases.c
r1765 r2725 1 1 /* vi: set sw=4 ts=4: */ 2 2 /* 3 * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.3 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 4 4 */ 5 #include <getopt.h>6 7 5 #include "common.h" 8 6 #include "dhcpd.h" 7 #include "unicode.h" 9 8 10 int dumpleases_main(int argc, char **argv) ;11 int dumpleases_main(int argc , char **argv)9 int dumpleases_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 10 int dumpleases_main(int argc UNUSED_PARAM, char **argv) 12 11 { 13 12 int fd; 14 13 int i; 15 14 unsigned opt; 16 time_t expires;15 int64_t written_at, curr, expires_abs; 17 16 const char *file = LEASES_FILE; 18 struct d hcpOfferedAddrlease;17 struct dyn_lease lease; 19 18 struct in_addr addr; 20 19 21 20 enum { 22 OPT_a = 0x1,// -a23 OPT_r = 0x2,// -r24 OPT_f = 0x4,// -f21 OPT_a = 0x1, // -a 22 OPT_r = 0x2, // -r 23 OPT_f = 0x4, // -f 25 24 }; 26 #if ENABLE_ GETOPT_LONG25 #if ENABLE_LONG_OPTS 27 26 static const char dumpleases_longopts[] ALIGN1 = 28 27 "absolute\0" No_argument "a" … … 33 32 applet_long_options = dumpleases_longopts; 34 33 #endif 34 init_unicode(); 35 35 36 opt_complementary = "=0:a--r:r--a"; 36 37 opt = getopt32(argv, "arf:", &file); … … 38 39 fd = xopen(file, O_RDONLY); 39 40 40 printf("Mac Address IP-Address Expires %s\n", (opt & OPT_a) ? "at" : "in"); 41 /* "00:00:00:00:00:00 255.255.255.255 Wed Jun 30 21:49:08 1993" */ 41 printf("Mac Address IP Address Host Name Expires %s\n", (opt & OPT_a) ? "at" : "in"); 42 /* "00:00:00:00:00:00 255.255.255.255 ABCDEFGHIJKLMNOPQRS Wed Jun 30 21:49:08 1993" */ 43 /* "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 */ 44 45 xread(fd, &written_at, sizeof(written_at)); 46 written_at = SWAP_BE64(written_at); 47 curr = time(NULL); 48 if (curr < written_at) 49 written_at = curr; /* lease file from future! :) */ 50 42 51 while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) { 43 printf(":%02x"+1, lease.chaddr[0]); 44 for (i = 1; i < 6; i++) { 45 printf(":%02x", lease.chaddr[i]); 52 const char *fmt = ":%02x" + 1; 53 for (i = 0; i < 6; i++) { 54 printf(fmt, lease.lease_mac[i]); 55 fmt = ":%02x"; 46 56 } 47 addr.s_addr = lease.yiaddr; 48 printf(" %-15s ", inet_ntoa(addr)); 49 expires = ntohl(lease.expires); 57 addr.s_addr = lease.lease_nip; 58 #if ENABLE_UNICODE_SUPPORT 59 { 60 char *uni_name = unicode_conv_to_printable_fixedwidth(NULL, lease.hostname, 19); 61 printf(" %-16s%s ", inet_ntoa(addr), uni_name); 62 free(uni_name); 63 } 64 #else 65 /* actually, 15+1 and 19+1, +1 is a space between columns */ 66 /* lease.hostname is char[20] and is always NUL terminated */ 67 printf(" %-16s%-20s", inet_ntoa(addr), lease.hostname); 68 #endif 69 expires_abs = ntohl(lease.expires) + written_at; 70 if (expires_abs <= curr) { 71 puts("expired"); 72 continue; 73 } 50 74 if (!(opt & OPT_a)) { /* no -a */ 51 if (!expires)52 puts("expired");53 else {54 unsigned d, h, m;55 d = expires / (24*60*60); expires %= (24*60*60);56 h = expires / (60*60); expires %= (60*60);57 m = expires / 60; expires %= 60;58 if (d) printf("%u days ", d);59 printf("%02u:%02u:%02u\n", h, m, (unsigned)expires);60 }61 } else /* -a */62 fputs(ctime(&expires), stdout);75 unsigned d, h, m; 76 unsigned expires = expires_abs - curr; 77 d = expires / (24*60*60); expires %= (24*60*60); 78 h = expires / (60*60); expires %= (60*60); 79 m = expires / 60; expires %= 60; 80 if (d) 81 printf("%u days ", d); 82 printf("%02u:%02u:%02u\n", h, m, (unsigned)expires); 83 } else { /* -a */ 84 time_t t = expires_abs; 85 fputs(ctime(&t), stdout); 86 } 63 87 } 64 88 /* close(fd); */
Note:
See TracChangeset
for help on using the changeset viewer.