#if (!defined(CON_HEAP_H_))
#define CON_HEAP_H_

#include <pcap.h>
#include <sys/types.h>
#include <netinet/in.h>

typedef struct _Heap_ {
  int size;
  int (*cmp)(const void *key1, const void *key2);
  void (*unalloc)(void *data);
  void **btree;
} Heap;

struct conq {
	int dead;
	time_t lastwrite;
  char *fname;
  struct in_addr ip_src, ip_dst;
  u_short sport, dport;
  pcap_dumper_t *dumper;
  u_quad_t hits;
  struct conq *rev;
  TAILQ_ENTRY(conq) glue;
};

void heap_init(Heap *heap, int (*cmp)(const void *key1, const void *key2),
	       void (*unalloc)(void *data));
void heap_destory(Heap *heap);
int heap_insert(Heap *heap, const void *data);
int heap_extract(Heap *heap, void **data);
int compare(struct conq *conep, struct conq *ctwop);
char *tcp_genfname(u_char *data, struct pcap_pkthdr *h, u_char *p);
int get_tcpsession(u_char *packet, Heap *heap, struct conq **cq);
void disassemble_fname(char *filename);
char *chomp(char *s);
void handle_sessions(struct pcap_pkthdr *h, u_char *p);

#define HEAP_SIZE(heap) ((heap)->size)
#define HEAP_PEEK(heap) ((heap)->btree == NULL ? NULL : (heap)->btree[0])

#endif /* CON_HEAP_H_ */


syntax highlighted by Code2HTML, v. 0.9.1