dat.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "../dhcp.h"
  2. typedef struct Binding Binding;
  3. struct Binding
  4. {
  5. Binding *next;
  6. uchar ip[IPaddrlen];
  7. char *boundto; /* id last bound to */
  8. char *offeredto; /* id we've offered this to */
  9. long lease; /* absolute time at which binding expires */
  10. long expoffer; /* absolute time at which offer times out */
  11. long offer; /* lease offered */
  12. long lasttouched; /* time this entry last assigned/unassigned */
  13. long lastcomplained; /* last time we complained about a used but not leased */
  14. long tried; /* last time we tried this entry */
  15. Qid q; /* qid at the last syncbinding */
  16. };
  17. typedef struct Info Info;
  18. struct Info
  19. {
  20. int indb; /* true if found in database */
  21. char domain[Ndbvlen]; /* system domain name */
  22. char bootf[Ndbvlen]; /* boot file */
  23. char bootf2[Ndbvlen]; /* alternative boot file */
  24. uchar tftp[NDB_IPlen]; /* ip addr of tftp server */
  25. uchar tftp2[NDB_IPlen]; /* ip addr of alternate server */
  26. uchar ipaddr[NDB_IPlen]; /* ip address of system */
  27. uchar ipmask[NDB_IPlen]; /* ip network mask */
  28. uchar ipnet[NDB_IPlen]; /* ip network address (ipaddr & ipmask) */
  29. uchar etheraddr[6]; /* ethernet address */
  30. uchar gwip[NDB_IPlen]; /* gateway ip address */
  31. uchar fsip[NDB_IPlen]; /* file system ip address */
  32. uchar auip[NDB_IPlen]; /* authentication server ip address */
  33. char rootpath[Ndbvlen]; /* rootfs for diskless nfs clients */
  34. char dhcpgroup[Ndbvlen];
  35. char vendor[Ndbvlen]; /* vendor info */
  36. };
  37. /* from dhcp.c */
  38. extern int validip(uchar*);
  39. extern void warning(int, char*, ...);
  40. extern int minlease;
  41. /* from db.c */
  42. extern char* tohex(char*, uchar*, int);
  43. extern char* toid(uchar*, int);
  44. extern void initbinding(uchar*, int);
  45. extern Binding* iptobinding(uchar*, int);
  46. extern Binding* idtobinding(char*, Info*, int);
  47. extern Binding* idtooffer(char*, Info*);
  48. extern int commitbinding(Binding*);
  49. extern int releasebinding(Binding*, char*);
  50. extern int samenet(uchar *ip, Info *iip);
  51. extern void mkoffer(Binding*, char*, long);
  52. extern int syncbinding(Binding*, int);
  53. /* from ndb.c */
  54. extern int lookup(Bootp*, Info*, Info*);
  55. extern int lookupip(uchar*, Info*, int);
  56. extern void lookupname(char*, Ndbtuple*);
  57. extern Iplifc* findlifc(uchar*);
  58. extern int forme(uchar*);
  59. extern int lookupserver(char*, uchar**, Ndbtuple *t);
  60. extern Ndbtuple* lookupinfo(uchar *ipaddr, char **attr, int n);
  61. /* from icmp.c */
  62. extern int icmpecho(uchar*);
  63. extern char *binddir;
  64. extern int debug;
  65. extern char *blog;
  66. extern Ipifc *ipifcs;
  67. extern long now;
  68. extern char *ndbfile;