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