enum { Etheraddrlen = 6, NBnamelen = 17, /* 16 + '\0' */ Defttl = 20*60 /* default TTL for unknown sources in secs */ }; typedef struct Attr Attr; typedef struct Node Node; typedef struct Pkt Pkt; typedef void (Disect)(Pkt *); struct Attr { Attr *next; Attr *child; char *name; char *value; long mtime; long ttl; long hits; }; struct Node { Node *next; Attr *attrs; long mtime; long ttl; char *value; long hits; }; struct Pkt { uchar *buf; Udphdr *up; uchar *end; uchar *pos; int size; jmp_buf err; }; enum { Thost, Tdomain }; extern Pkt *allocpkt(int); extern void readpkt(int, Pkt *); extern void w8(Pkt *, int); extern int r8(Pkt *); extern int rl16(Pkt *); extern void wl16(Pkt *, int); extern int rb16(Pkt *); extern void wb16(Pkt *, int); extern int rl32(Pkt *); extern void wl32(Pkt *, int); extern int rb32(Pkt *); extern void wb32(Pkt *, int); extern void skip(Pkt *, int); extern void rmem(Pkt *, void *, int); extern void wmem(Pkt *, void *, int); extern void rstr(Pkt *, char *, int); extern void wstr(Pkt *, char *); extern int rnbname(Pkt *, char *, int); extern void pnbname(Pkt *, char *, char, char); extern Disect nbns; extern Disect dhcp; extern Disect browse; extern Disect dump; extern Disect iap; extern char *snapshot(void); extern Node *getnode(int, long, char *, ...); extern Attr *setval(Node *, char *, char *, ...); extern int lookval(Attr *, char *); extern void addval(Attr *, char *, char *, ...); extern void strlwr(char *); extern void trim(char *, char); extern uchar *lookarp(uchar *); extern char *nicvendor(uchar *); extern char *servname(int, int); extern void listener(void); extern int adapter_status(Attr *, int, uchar *); extern int Passive; extern char *Netdir; extern int Debug;