xref: /plan9/sys/src/cmd/ip/dhcpd/dhcpleases.c (revision ea58ad6fbee60d5a3fca57ac646881779dd8f0ea)
13ff48bf5SDavid du Colombier #include <u.h>
23ff48bf5SDavid du Colombier #include <libc.h>
33ff48bf5SDavid du Colombier #include <bio.h>
43ff48bf5SDavid du Colombier #include <ndb.h>
53ff48bf5SDavid du Colombier #include <ip.h>
63ff48bf5SDavid du Colombier #include <dat.h>
73ff48bf5SDavid du Colombier 
83ff48bf5SDavid du Colombier extern	char *binddir;
9*ea58ad6fSDavid du Colombier 
103ff48bf5SDavid du Colombier long now;
113ff48bf5SDavid du Colombier char *blog = "ipboot";
123ff48bf5SDavid du Colombier int minlease = MinLease;
133ff48bf5SDavid du Colombier 
143ff48bf5SDavid du Colombier void
main(void)153ff48bf5SDavid du Colombier main(void)
163ff48bf5SDavid du Colombier {
173ff48bf5SDavid du Colombier 	Dir *all;
183ff48bf5SDavid du Colombier 	int i, nall, fd;
193ff48bf5SDavid du Colombier 	Binding b;
203ff48bf5SDavid du Colombier 
213ff48bf5SDavid du Colombier 	fmtinstall('E', eipfmt);
223ff48bf5SDavid du Colombier 	fmtinstall('I', eipfmt);
233ff48bf5SDavid du Colombier 	fmtinstall('V', eipfmt);
243ff48bf5SDavid du Colombier 	fmtinstall('M', eipfmt);
253ff48bf5SDavid du Colombier 
263ff48bf5SDavid du Colombier 	fd = open(binddir, OREAD);
273ff48bf5SDavid du Colombier 	if(fd < 0)
283ff48bf5SDavid du Colombier 		sysfatal("opening %s: %r", binddir);
293ff48bf5SDavid du Colombier 	nall = dirreadall(fd, &all);
303ff48bf5SDavid du Colombier 	if(nall < 0)
313ff48bf5SDavid du Colombier 		sysfatal("reading %s: %r", binddir);
323ff48bf5SDavid du Colombier 	close(fd);
333ff48bf5SDavid du Colombier 
343ff48bf5SDavid du Colombier 	b.boundto = 0;
353ff48bf5SDavid du Colombier 	b.lease = b.offer = 0;
363ff48bf5SDavid du Colombier 	now = time(0);
373ff48bf5SDavid du Colombier 	for(i = 0; i < nall; i++){
38*ea58ad6fSDavid du Colombier 		if(parseip(b.ip, all[i].name) == -1 || syncbinding(&b, 0) < 0)
393ff48bf5SDavid du Colombier 			continue;
403ff48bf5SDavid du Colombier 		if(b.lease > now)
41*ea58ad6fSDavid du Colombier 			print("%I leased by %s until %s", b.ip, b.boundto,
42*ea58ad6fSDavid du Colombier 				ctime(b.lease));
433ff48bf5SDavid du Colombier 	}
44*ea58ad6fSDavid du Colombier 	exits(0);
453ff48bf5SDavid du Colombier }
46