Mercurial > hg > toybox
annotate toys/pending/dumpleases.c @ 1117:4c664a479dd5 draft
dumpleases (for dhcpd) submitted by Ashwini Sharma.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sun, 10 Nov 2013 18:25:18 -0600 |
parents | |
children | 473491dbd8c3 |
rev | line source |
---|---|
1117
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
1 /* dumpleases.c - Dump the leases granted by udhcpd. |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
2 * |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
3 * Copyright 2013 Sandeep Sharma <sandeep.jack2756@gmail.com> |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
4 * Copyright 2013 Kyungwan Han <asura321@gmail.com> |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
5 * |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
6 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
7 USE_DUMPLEASES(NEWTOY(dumpleases, ">0arf:[!ar]", TOYFLAG_USR|TOYFLAG_BIN)) |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
8 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
9 config DUMPLEASES |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
10 bool "dumpleases" |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
11 default n |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
12 help |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
13 Usage: dumpleases [-r|-a] [-f LEASEFILE] |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
14 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
15 Display DHCP leases granted by udhcpd |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
16 -f FILE, Lease file |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
17 -r Show remaining time |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
18 -a Show expiration time |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
19 */ |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
20 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
21 #define FOR_dumpleases |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
22 #include "toys.h" |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
23 #include "toynet.h" |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
24 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
25 GLOBALS( |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
26 char *file; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
27 ) |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
28 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
29 //lease structure |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
30 struct lease { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
31 uint32_t expires; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
32 uint32_t lease_nip; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
33 uint8_t lease_mac[6]; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
34 char hostname[20]; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
35 uint8_t pad[2]; //Padding |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
36 }; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
37 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
38 void dumpleases_main(void) |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
39 { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
40 struct in_addr addr; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
41 struct lease lease_struct; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
42 int64_t written_time , current_time, exp; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
43 int i, fd; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
44 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
45 if(!(toys.optflags & FLAG_f)) TT.file = "/var/lib/misc/udhcpd.leases"; //DEF_LEASE_FILE |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
46 fd = xopen(TT.file, O_RDONLY); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
47 xprintf("Mac Address IP Address Host Name Expires %s\n", (toys.optflags & FLAG_a) ? "at" : "in"); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
48 xread(fd, &written_time, sizeof(written_time)); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
49 current_time = time(NULL); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
50 written_time = SWAP_BE64(written_time); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
51 if(current_time < written_time) written_time = current_time; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
52 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
53 while(sizeof(lease_struct) == |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
54 (readall(fd, &lease_struct, sizeof(lease_struct)))) { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
55 for (i = 0; i < 6; i++) printf(":%02x"+ !i, lease_struct.lease_mac[i]); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
56 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
57 addr.s_addr = lease_struct.lease_nip; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
58 lease_struct.hostname[19] = '\0'; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
59 xprintf(" %-16s%-20s", inet_ntoa(addr), lease_struct.hostname ); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
60 exp = ntohl(lease_struct.expires) + written_time; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
61 if (exp <= current_time) { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
62 xputs("expired"); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
63 continue; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
64 } |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
65 if (!(toys.optflags & FLAG_a)) { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
66 unsigned dt, hr, m; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
67 unsigned expires = exp - current_time; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
68 dt = expires / (24*60*60); expires %= (24*60*60); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
69 hr = expires / (60*60); expires %= (60*60); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
70 m = expires / 60; expires %= 60; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
71 if (dt) xprintf("%u days ", dt); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
72 xprintf("%02u:%02u:%02u\n", hr, m, (unsigned)expires); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
73 } else { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
74 fputs(ctime((const time_t*)&exp), stdout); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
75 } |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
76 } |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
77 xclose(fd); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
78 } |