46 lines
859 B
C
46 lines
859 B
C
#ifndef _TCP_H_
|
|
#define _TCP_H_
|
|
|
|
#include <netutil/ip.h>
|
|
#include <netutil/types.h>
|
|
|
|
|
|
//#define TCP_DEBUG_OPTION 1
|
|
|
|
#if defined(TCP_DEBUG_OPTION)
|
|
#define TCP_DEBUG(x...) debug_printf("[tcp] " x);
|
|
#else
|
|
#define TCP_DEBUG(fmt, ...) ((void)0)
|
|
#endif
|
|
|
|
/**
|
|
* TCP header
|
|
*/
|
|
|
|
#define TCP_FIN 0x0001
|
|
#define TCP_SYN 0x0002
|
|
#define TCP_RST 0x0004
|
|
#define TCP_PSH 0x0008
|
|
#define TCP_ACK 0x0010
|
|
#define TCP_URG 0x0020
|
|
|
|
#define TCP_OPTION_END 0
|
|
#define TCP_OPTION_NOOP 1
|
|
#define TCP_OPTION_MSS 2
|
|
|
|
struct tcp_hdr {
|
|
struct uint16_net src;
|
|
struct uint16_net dest; /* src/dest TCP ports */
|
|
struct uint32_net seq;
|
|
struct uint32_net ack;
|
|
struct uint16_net flags;
|
|
struct uint16_net wnd;
|
|
struct uint16_net chksum;
|
|
struct uint16_net up;
|
|
} __attribute__((__packed__));
|
|
|
|
#define TCP_HLEN_MIN 20
|
|
#define TCP_HLEN(hdr) ((uint16_rd((hdr)->flags) >> 12) * 4)
|
|
|
|
#endif
|