Mercurial > hg > toybox
annotate toys/pending/dumpleases.c @ 1639:856b544f8fce draft
strncpy(optptr, hname, strlen(hname)) is really just strcpy().
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 01 Jan 2015 16:49:55 -0600 |
parents | 0ecfaa7022e8 |
children |
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 |
1265
0ecfaa7022e8
usage: is lower case (the help generator looks for that, might as well be consistent).
Rob Landley <rob@landley.net>
parents:
1147
diff
changeset
|
13 usage: dumpleases [-r|-a] [-f LEASEFILE] |
1117
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 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
24 GLOBALS( |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
25 char *file; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
26 ) |
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 //lease structure |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
29 struct lease { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
30 uint32_t expires; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
31 uint32_t lease_nip; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
32 uint8_t lease_mac[6]; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
33 char hostname[20]; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
34 uint8_t pad[2]; //Padding |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
35 }; |
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 void dumpleases_main(void) |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
38 { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
39 struct in_addr addr; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
40 struct lease lease_struct; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
41 int64_t written_time , current_time, exp; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
42 int i, fd; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
43 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
44 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
|
45 fd = xopen(TT.file, O_RDONLY); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
46 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
|
47 xread(fd, &written_time, sizeof(written_time)); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
48 current_time = time(NULL); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
49 written_time = SWAP_BE64(written_time); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
50 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
|
51 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
52 while(sizeof(lease_struct) == |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
53 (readall(fd, &lease_struct, sizeof(lease_struct)))) { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
54 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
|
55 |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
56 addr.s_addr = lease_struct.lease_nip; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
57 lease_struct.hostname[19] = '\0'; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
58 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
|
59 exp = ntohl(lease_struct.expires) + written_time; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
60 if (exp <= current_time) { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
61 xputs("expired"); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
62 continue; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
63 } |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
64 if (!(toys.optflags & FLAG_a)) { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
65 unsigned dt, hr, m; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
66 unsigned expires = exp - current_time; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
67 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
|
68 hr = expires / (60*60); expires %= (60*60); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
69 m = expires / 60; expires %= 60; |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
70 if (dt) xprintf("%u days ", dt); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
71 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
|
72 } else { |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
73 fputs(ctime((const time_t*)&exp), stdout); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
74 } |
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 xclose(fd); |
4c664a479dd5
dumpleases (for dhcpd) submitted by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
77 } |