| #ifndef IPTRAF_NG_TCPTABLE_H |
| #define IPTRAF_NG_TCPTABLE_H |
| |
| |
| |
| |
| |
| |
| |
| #include "rate.h" |
| |
| |
| |
| |
| |
| |
| #define max(x, y) ({ \ |
| typeof(x) _max1 = (x); \ |
| typeof(y) _max2 = (y); \ |
| (void) (&_max1 == &_max2); \ |
| _max1 > _max2 ? _max1 : _max2; }) |
| |
| #define FLAG_SYN 1 |
| #define FLAG_RST 2 |
| #define FLAG_PSH 4 |
| #define FLAG_ACK 8 |
| #define FLAG_URG 16 |
| |
| #define CLOSED 64 |
| |
| #define ENTRIES_IN_HASH_TABLE 1543 |
| |
| struct tcptableent { |
| struct sockaddr_storage saddr; |
| struct sockaddr_storage daddr; |
| char s_fqdn[45]; |
| char d_fqdn[45]; |
| int s_fstat; |
| int d_fstat; |
| char smacaddr[18]; |
| char s_sname[11]; |
| char d_sname[11]; |
| unsigned int protocol; |
| unsigned long pcount; |
| unsigned long bcount; |
| unsigned int stat; |
| unsigned int win; |
| unsigned int psize; |
| unsigned long finack; |
| int partial; |
| int finsent; |
| char ifname[IFNAMSIZ]; |
| unsigned int index; |
| int reused; |
| int timedout; |
| int inclosed; |
| int half_bracket; |
| unsigned long spanbr; |
| struct rate rate; |
| time_t lastupdate; |
| time_t starttime; |
| time_t conn_starttime; |
| struct tcp_hashentry *hash_node; |
| struct tcptableent *oth_connection; |
| struct tcptableent *prev_entry; |
| struct tcptableent *next_entry; |
| }; |
| |
| struct closedlist { |
| struct tcptableent *closedentry; |
| struct tcptableent *pair; |
| struct closedlist *next_entry; |
| }; |
| |
| struct tcp_hashentry { |
| unsigned int index; |
| unsigned int hp; |
| struct tcptableent *tcpnode; |
| struct tcp_hashentry *prev_entry; |
| struct tcp_hashentry *next_entry; |
| }; |
| |
| struct tcptable { |
| struct tcp_hashentry *hash_table[ENTRIES_IN_HASH_TABLE]; |
| struct tcp_hashentry *hash_tails[ENTRIES_IN_HASH_TABLE]; |
| struct tcptableent *head; |
| struct tcptableent *tail; |
| struct closedlist *closedentries; |
| struct closedlist *closedtail; |
| struct tcptableent *firstvisible; |
| struct tcptableent *lastvisible; |
| struct tcptableent *barptr; |
| unsigned int baridx; |
| unsigned int lastpos; |
| unsigned int count; |
| unsigned int bmaxy; |
| unsigned int imaxy; |
| int ifnamew; |
| WINDOW *tcpscreen; |
| PANEL *tcppanel; |
| WINDOW *borderwin; |
| PANEL *borderpanel; |
| }; |
| |
| void init_tcp_table(struct tcptable *table); |
| |
| struct tcptableent *addentry(struct tcptable *table, |
| struct sockaddr_storage *saddr, |
| struct sockaddr_storage *daddr, |
| int protocol, char *ifname, |
| int *rev_lookup, int rvnamedon); |
| |
| struct tcptableent *in_table(struct tcptable *table, |
| struct sockaddr_storage *saddr, |
| struct sockaddr_storage *daddr, |
| char *ifname, int logging, |
| FILE *logfile, time_t timeout); |
| |
| void updateentry(struct tcptable *table, struct tcptableent *tableentry, |
| struct tcphdr *transpacket, char *packet, int linkproto, |
| unsigned long packetlength, unsigned int bcount, |
| unsigned int fragofs, int logging, int *revlook, int rvnfd, |
| FILE *logfile); |
| |
| void addtoclosedlist(struct tcptable *table, struct tcptableent *tableentry); |
| |
| void clearaddr(struct tcptable *table, struct tcptableent *tableentry, |
| unsigned int screen_idx); |
| |
| void printentry(struct tcptable *table, struct tcptableent *tableentry, |
| unsigned int screen_idx, int mode); |
| |
| void refreshtcpwin(struct tcptable *table, unsigned int idx, int mode); |
| |
| void destroytcptable(struct tcptable *table); |
| |
| void flushclosedentries(struct tcptable *table, unsigned long *screen_idx, |
| int logging, FILE *logfile); |
| |
| void write_timeout_log(int logging, FILE *logfile, struct tcptableent *tcpnode); |
| |
| void writetcplog(int logging, FILE *fd, struct tcptableent *entry, |
| unsigned int pktlen, char *message); |
| |
| void write_tcp_unclosed(int logging, FILE *fd, struct tcptable *table); |
| |
| #endif |