diff -wbBur nemesis-1.4/src/nemesis-functions.c nemesis-1.4.my/src/nemesis-functions.c --- nemesis-1.4/src/nemesis-functions.c 2004-10-07 02:16:50.000000000 +0000 +++ nemesis-1.4.my/src/nemesis-functions.c 2009-06-19 13:51:30.000000000 +0000 @@ -8,6 +8,8 @@ * */ +#include + #if defined(HAVE_CONFIG_H) #include "config.h" #endif diff -wbBur nemesis-1.4/src/nemesis-proto_tcp.c nemesis-1.4.my/src/nemesis-proto_tcp.c --- nemesis-1.4/src/nemesis-proto_tcp.c 2003-10-31 21:29:37.000000000 +0000 +++ nemesis-1.4.my/src/nemesis-proto_tcp.c 2009-06-19 13:51:15.000000000 +0000 @@ -16,7 +16,7 @@ FileData *ipod, FileData *tcpod, char *device) { int n; - u_int32_t tcp_packetlen = 0, tcp_meta_packetlen = 0; + u_int32_t tcp_packetlen = 0, tcp_meta_packetlen = 0, tcp_headerlen = 0, ip_headerlen = 0; static u_int8_t *pkt; static int sockfd = -1; struct libnet_link_int *l2 = NULL; @@ -58,13 +58,20 @@ #endif } + ip_headerlen = LIBNET_IP_H + ipod->file_s; + tcp_headerlen = LIBNET_TCP_H + tcpod->file_s; + tcp_packetlen = link_offset + LIBNET_IP_H + LIBNET_TCP_H + pd->file_s + ipod->file_s + tcpod->file_s; - tcp_meta_packetlen = tcp_packetlen - (link_offset + LIBNET_IP_H); + tcp_meta_packetlen = LIBNET_TCP_H + pd->file_s; #ifdef DEBUG + printf("DEBUG: link offsetlength %u.\n", link_offset); + printf("DEBUG: IP header length %u.\n", ip_headerlen); + printf("DEBUG: TCP header length %u.\n", tcp_headerlen); printf("DEBUG: TCP packet length %u.\n", tcp_packetlen); + printf("DEBUG: TCP meta length %u.\n", tcp_meta_packetlen); printf("DEBUG: IP options size %u.\n", ipod->file_s); printf("DEBUG: TCP options size %u.\n", tcpod->file_s); printf("DEBUG: TCP payload size %u.\n", pd->file_s);