xref: /plan9/sys/src/cmd/ip/dhcpd/dat.h (revision da51d93a95fd527106ceeb0537961de9ab01e9ec)
17dd7cddfSDavid du Colombier #include "../dhcp.h"
27dd7cddfSDavid du Colombier 
3*da51d93aSDavid du Colombier enum
4*da51d93aSDavid du Colombier {
5*da51d93aSDavid du Colombier 	Maxstr=	256,
6*da51d93aSDavid du Colombier };
7*da51d93aSDavid du Colombier 
87dd7cddfSDavid du Colombier typedef struct Binding Binding;
97dd7cddfSDavid du Colombier struct Binding
107dd7cddfSDavid du Colombier {
117dd7cddfSDavid du Colombier 	Binding *next;
127dd7cddfSDavid du Colombier 	uchar	ip[IPaddrlen];
137dd7cddfSDavid du Colombier 
147dd7cddfSDavid du Colombier 	char	*boundto;	/* id last bound to */
157dd7cddfSDavid du Colombier 	char	*offeredto;	/* id we've offered this to */
167dd7cddfSDavid du Colombier 
177dd7cddfSDavid du Colombier 	long	lease;		/* absolute time at which binding expires */
187dd7cddfSDavid du Colombier 	long	expoffer;	/* absolute time at which offer times out */
197dd7cddfSDavid du Colombier 	long	offer;		/* lease offered */
207dd7cddfSDavid du Colombier 	long	lasttouched;	/* time this entry last assigned/unassigned */
2159cc4ca5SDavid du Colombier 	long	lastcomplained;	/* last time we complained about a used but not leased */
2259cc4ca5SDavid du Colombier 	long	tried;		/* last time we tried this entry */
237dd7cddfSDavid du Colombier 
247dd7cddfSDavid du Colombier 	Qid	q;		/* qid at the last syncbinding */
257dd7cddfSDavid du Colombier };
267dd7cddfSDavid du Colombier 
277dd7cddfSDavid du Colombier typedef struct Info	Info;
287dd7cddfSDavid du Colombier struct Info
297dd7cddfSDavid du Colombier {
307dd7cddfSDavid du Colombier 	int	indb;			/* true if found in database */
31*da51d93aSDavid du Colombier 	char	domain[Maxstr];	/* system domain name */
32*da51d93aSDavid du Colombier 	char	bootf[Maxstr];		/* boot file */
33*da51d93aSDavid du Colombier 	char	bootf2[Maxstr];	/* alternative boot file */
343ff48bf5SDavid du Colombier 	uchar	tftp[NDB_IPlen];	/* ip addr of tftp server */
353ff48bf5SDavid du Colombier 	uchar	tftp2[NDB_IPlen];	/* ip addr of alternate server */
367dd7cddfSDavid du Colombier 	uchar	ipaddr[NDB_IPlen];	/* ip address of system */
377dd7cddfSDavid du Colombier 	uchar	ipmask[NDB_IPlen];	/* ip network mask */
387dd7cddfSDavid du Colombier 	uchar	ipnet[NDB_IPlen];	/* ip network address (ipaddr & ipmask) */
397dd7cddfSDavid du Colombier 	uchar	etheraddr[6];		/* ethernet address */
407dd7cddfSDavid du Colombier 	uchar	gwip[NDB_IPlen];	/* gateway ip address */
417dd7cddfSDavid du Colombier 	uchar	fsip[NDB_IPlen];	/* file system ip address */
427dd7cddfSDavid du Colombier 	uchar	auip[NDB_IPlen];	/* authentication server ip address */
43*da51d93aSDavid du Colombier 	char	rootpath[Maxstr];	/* rootfs for diskless nfs clients */
44*da51d93aSDavid du Colombier 	char	dhcpgroup[Maxstr];
45*da51d93aSDavid du Colombier 	char	vendor[Maxstr];	/* vendor info */
467dd7cddfSDavid du Colombier };
477dd7cddfSDavid du Colombier 
487dd7cddfSDavid du Colombier 
497dd7cddfSDavid du Colombier /* from dhcp.c */
507dd7cddfSDavid du Colombier extern int	validip(uchar*);
517dd7cddfSDavid du Colombier extern void	warning(int, char*, ...);
527dd7cddfSDavid du Colombier extern int	minlease;
537dd7cddfSDavid du Colombier 
547dd7cddfSDavid du Colombier /* from db.c */
557dd7cddfSDavid du Colombier extern char*	tohex(char*, uchar*, int);
567dd7cddfSDavid du Colombier extern char*	toid(uchar*, int);
577dd7cddfSDavid du Colombier extern void	initbinding(uchar*, int);
587dd7cddfSDavid du Colombier extern Binding*	iptobinding(uchar*, int);
599a747e4fSDavid du Colombier extern Binding*	idtobinding(char*, Info*, int);
609a747e4fSDavid du Colombier extern Binding*	idtooffer(char*, Info*);
617dd7cddfSDavid du Colombier extern int	commitbinding(Binding*);
627dd7cddfSDavid du Colombier extern int	releasebinding(Binding*, char*);
639a747e4fSDavid du Colombier extern int	samenet(uchar *ip, Info *iip);
647dd7cddfSDavid du Colombier extern void	mkoffer(Binding*, char*, long);
653ff48bf5SDavid du Colombier extern int	syncbinding(Binding*, int);
667dd7cddfSDavid du Colombier 
677dd7cddfSDavid du Colombier /* from ndb.c */
689a747e4fSDavid du Colombier extern int	lookup(Bootp*, Info*, Info*);
693ff48bf5SDavid du Colombier extern int	lookupip(uchar*, Info*, int);
703ff48bf5SDavid du Colombier extern void	lookupname(char*, Ndbtuple*);
719a747e4fSDavid du Colombier extern Iplifc*	findlifc(uchar*);
729a747e4fSDavid du Colombier extern int	forme(uchar*);
733ff48bf5SDavid du Colombier extern int	lookupserver(char*, uchar**, Ndbtuple *t);
743ff48bf5SDavid du Colombier extern Ndbtuple* lookupinfo(uchar *ipaddr, char **attr, int n);
757dd7cddfSDavid du Colombier 
767dd7cddfSDavid du Colombier /* from icmp.c */
777dd7cddfSDavid du Colombier extern int	icmpecho(uchar*);
787dd7cddfSDavid du Colombier 
797dd7cddfSDavid du Colombier extern char	*binddir;
807dd7cddfSDavid du Colombier extern int	debug;
817dd7cddfSDavid du Colombier extern char	*blog;
827dd7cddfSDavid du Colombier extern Ipifc	*ipifcs;
837dd7cddfSDavid du Colombier extern long	now;
847dd7cddfSDavid du Colombier extern char	*ndbfile;
857dd7cddfSDavid du Colombier 
86