/*
 * conn.h -- enums and structs that describe a connection:
 * enum PART, struct CONN, struct HOST_DESC and enum STATUS
 * 
 * Part of the tcpick project
 *
 * Author: Francesco Stablum <duskdruid @ despammed.com>
 *
 * Copyright (C) 2003, 2004  Francesco Stablum
 * Licensed under the GPL
 *
 */

enum PART 
/* enum PART describes the side of a connection */
{
	NOTHING = 0,
	CLIENT,
	SERVER,
	BOTH
};

struct HOST_DESC { 
/* HOST_DESC describes the client or server part of a tcp session */
	u_int16_t port;
        struct in_addr ip;

	u_int32_t sip;
    /* why have I called them SIP and not SIN?
       well, SIP means Sequence Initial Pointer
       that is exactly the SIN plus one
    */
	FILE * file;     /* NULL means closed */
	char * filename;
	char * lockfilename;
	enum PART side;
	int wlen;
	
	struct FRAGMENT * unack;
	
	struct HOST_DESC * oth;
};

enum STATUS {
/* STATUS describes the status of a tcp session */
	NIHL = 0,
	SYN_SENT,
	SYN_RECEIVED,
	ESTABLISHED,
	FIN_WAIT_1,
	FIN_WAIT_2__CLOSE_WAIT,
	TIME_WAIT__LAST_ACK,
	LAST_ACK,
	CLOSED,
	RESET,
	EXPIRED
};

struct CONN
/* the struct CONN describes a tcp connection */
{
	enum STATUS status; 

	FILE *both_file; /* FIXME: wtf??? */

	int closer; /* when a connection is int open state this must be set to 0
		       when the client has sent the closing FIN, then closer=1
		       when it is the server closer=2
		    */
	int num; /* the number of this connection (useful for 
		    calculate the color tracked)
		 */

	struct HOST_DESC client;
	struct HOST_DESC server;
	
	struct CONN * next; /* pointer for the next ring of the chain */
	
	time_t lasttime; /* time of last packet in connection */ 
};


struct ip * ip_last_header; /* FIXME: check */
struct tcphdr * tcp_last_header;


syntax highlighted by Code2HTML, v. 0.9.1