dat.h 2.5 KB

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