From 970cd8bac5ca29f31363805f0870acdb80e7379f Mon Sep 17 00:00:00 2001 From: "U-DESKTOP-T772REH\\wangyu" Date: Sun, 17 Jun 2018 00:35:31 +0800 Subject: [PATCH] windows works --- common.h | 6 +++++ main.cpp | 20 +++++++++++++++++ makefile | 64 +++++++++++------------------------------------------ network.cpp | 11 ++++++++- 4 files changed, 49 insertions(+), 52 deletions(-) diff --git a/common.h b/common.h index 2a824b8..20bbeb8 100644 --- a/common.h +++ b/common.h @@ -47,7 +47,13 @@ //#include //#include #include + +#ifndef __CYGWIN__ #include +#else +#include +#define NO_LIBNET +#endif #ifndef NO_LIBNET #include diff --git a/main.cpp b/main.cpp index a83337e..04c8cc6 100755 --- a/main.cpp +++ b/main.cpp @@ -972,6 +972,26 @@ void sigint_cb(struct ev_loop *l, ev_signal *w, int revents) int main(int argc, char *argv[]) { + init_pcap(); + int i=0; + char errbuf[PCAP_ERRBUF_SIZE]; + + pcap_if_t *interfaces,*d; + if(pcap_findalldevs(&interfaces,errbuf)==-1) + { + printf("\nerror in pcap findall devs"); + return -1; + } + + for(pcap_if_t *d=interfaces; d!=NULL; d=d->next) { + printf("%s:", d->name); + for(pcap_addr_t *a=d->addresses; a!=NULL; a=a->next) { + if(a->addr->sa_family == AF_INET) + printf(" %s", inet_ntoa(((struct sockaddr_in*)a->addr)->sin_addr)); + } + printf("\n"); + } + //libnet_t *l; /* the libnet context */ //char errbuf[LIBNET_ERRBUF_SIZE]; diff --git a/makefile b/makefile index bcb35dc..6a797e0 100755 --- a/makefile +++ b/makefile @@ -10,7 +10,12 @@ cc_arm= /toolchains/arm-2014.05/bin/arm-none-linux-gnueabi-g++ #cc_bcm2708=/home/wangyu/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ FLAGS= -std=c++11 -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers ${OPT} -COMMON=main.cpp lib/md5.cpp encrypt.cpp log.cpp network.cpp common.cpp connection.cpp misc.cpp fd_manager.cpp -lpthread my_ev.cpp -isystem libev -lpcap -D_DEFAULT_SOURCE `libnet-config --defines` `libnet-config --libs` +COMMON=main.cpp lib/md5.cpp encrypt.cpp log.cpp network.cpp common.cpp connection.cpp misc.cpp fd_manager.cpp -lpthread my_ev.cpp -isystem libev + +PCAP="-lpcap" + +LIBNET=-D_DEFAULT_SOURCE `libnet-config --defines` `libnet-config --libs` + SOURCES= $(COMMON) lib/aes_faster_c/aes.cpp lib/aes_faster_c/wrapper.cpp SOURCES_TINY_AES= $(COMMON) lib/aes.cpp @@ -21,8 +26,12 @@ TARGETS=amd64 arm amd64_hw_aes arm_asm_aes mips24kc_be mips24kc_be_asm_aes x86 x TAR=${NAME}_binaries.tar.gz `echo ${TARGETS}|sed -r 's/([^ ]+)/udp2raw_\1/g'` version.txt all:git_version + echo "do not use 'make all', instead, use 'make linux' 'make mac' 'make freebsd' 'make cygwin' " + +cygwin:git_version rm -f ${NAME} - ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -ggdb -static -O2 + ${cc_local} -o ${NAME} -I. ${SOURCES} pcap_wrapper.cpp ${FLAGS} -lrt -ggdb -static -O2 -D_GNU_SOURCE + mac:git_version rm -f ${NAME} ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -ggdb -O2 @@ -36,57 +45,10 @@ debug2: git_version rm -f ${NAME} ${cc_local} -o ${NAME} -I. ${SOURCES} ${FLAGS} -lrt -Wformat-nonliteral -ggdb -dynamic: git_version - ${cc_local} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -O3 - -mips24kc_be: git_version - ${cc_mips24kc_be} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -lgcc_eh -static -O3 -mips24kc_be_asm_aes: git_version - ${cc_mips24kc_be} -o ${NAME}_$@ -I. ${SOURCES_AES_ACC} ${FLAGS} -lrt -lgcc_eh -static -O3 lib/aes_acc/asm/mips_be.S - -mips24kc_le: git_version - ${cc_mips24kc_le} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -lgcc_eh -static -O3 -mips24kc_le_asm_aes: git_version - ${cc_mips24kc_le} -o ${NAME}_$@ -I. ${SOURCES_AES_ACC} ${FLAGS} -lrt -lgcc_eh -static -O3 lib/aes_acc/asm/mips.S - -#bcm2708: -# ${cc_bcm2708} -o ${NAME}_bcm2708 -I. ${SOURCES} ${FLAGS} -lrt -static -O3 -amd64:git_version - ${cc_local} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O3 - -amd64_perf:git_version - ${cc_local} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O0 -fno-omit-frame-pointer -g - -amd64_hw_aes:git_version - ${cc_local} -o ${NAME}_$@ -I. ${SOURCES_AES_ACC} ${FLAGS} -lrt -static -O3 lib/aes_acc/asm/x64.S -x86:git_version - ${cc_local} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O3 -m32 -x86_asm_aes:git_version - ${cc_local} -o ${NAME}_$@ -I. ${SOURCES_AES_ACC} ${FLAGS} -lrt -static -O3 -m32 lib/aes_acc/asm/x86.S -arm:git_version - ${cc_arm} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -O3 - -arm_perf:git_version - ${cc_arm} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -static -mapcs-frame -fno-omit-frame-pointer -g -O0 -lgcc_eh - -arm_asm_aes:git_version - ${cc_arm} -o ${NAME}_$@ -I. ${SOURCES_AES_ACC} ${FLAGS} -lrt -static -O3 lib/aes_acc/asm/arm.S - -cross:git_version - ${cc_cross} -o ${NAME}_cross -I. ${SOURCES} ${FLAGS} -lrt -O3 - -cross2:git_version - ${cc_cross} -o ${NAME}_cross -I. ${SOURCES} ${FLAGS} -lrt -static -lgcc_eh -O3 - -cross3:git_version - ${cc_cross} -o ${NAME}_cross -I. ${SOURCES} ${FLAGS} -lrt -static -O3 - -release: ${TARGETS} - cp git_version.h version.txt - tar -zcvf ${TAR} +#dynamic: git_version +# ${cc_local} -o ${NAME}_$@ -I. ${SOURCES} ${FLAGS} -lrt -O3 clean: - rm -f ${TAR} rm -f udp2raw udp2raw_cross udp2raw_cmake udp2raw_dynamic rm -f git_version.h diff --git a/network.cpp b/network.cpp index 8a0406d..bbb2a9d 100644 --- a/network.cpp +++ b/network.cpp @@ -214,8 +214,16 @@ void my_packet_handler( const u_char *pkt_data ) { + /*printf("<%d %d>\n",(int)packet_header->caplen,(int)packet_header->len ); + for(int i=0;i",int( p[i] )); + } + printf("\n");*/ assert(packet_header->caplen <= packet_header->len); assert(packet_header->caplen <= max_data_len); + //if(packet_header->caplen > max_data_len) return ; if(packet_header->caplenlen) return; if((int)packet_header->caplenid = htons (g_ip_id_counter++); //Id of this packet } else*/ - iph->id = htons (g_ip_id_counter++); //Id of this packet + iph->id = htons (g_ip_id_counter); //Id of this packet + g_ip_id_counter++; //iph->id = 0; //Id of this packet ,kernel will auto fill this if id is zero ,or really?????// todo //seems like there is a problem iph->frag_off = htons(0x4000); //DF set,others are zero