41 lines
898 B
C
41 lines
898 B
C
#ifndef __TCP_H
|
|
#define __TCP_H
|
|
|
|
|
|
struct tcp_header_t {
|
|
unsigned short source_port;
|
|
unsigned short dest_port;
|
|
unsigned int seq_number;
|
|
unsigned int ack_number;
|
|
unsigned short flags;
|
|
unsigned short window;
|
|
unsigned short checksum;
|
|
unsigned short urgent;
|
|
char payload[];
|
|
}__attribute__((packed));
|
|
|
|
struct tcp_socket_t {
|
|
unsigned int seq_number;
|
|
unsigned int ack_number;
|
|
};
|
|
|
|
struct tcp_data_t {
|
|
unsigned char *data;
|
|
unsigned int len;
|
|
unsigned short flags;
|
|
};
|
|
|
|
#define TCP_FLAGS_FIN (1 << 0)
|
|
#define TCP_FLAGS_SYN (1 << 1)
|
|
#define TCP_FLAGS_RES (1 << 2)
|
|
#define TCP_FLAGS_PSH (1 << 3)
|
|
#define TCP_FLAGS_ACK (1 << 4)
|
|
#define TCP_FLAGS_URG (1 << 5)
|
|
#define TCP_FLAGS_ECE (1 << 6)
|
|
#define TCP_FLAGS_CWR (1 << 7)
|
|
#define TCP_FLAGS_NS (1 << 8)
|
|
|
|
extern void tcp_process_packet(struct ether_t *ether, unsigned int dest, unsigned int src, struct tcp_header_t *packet, unsigned int len);
|
|
|
|
#endif
|