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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }