mirror of
				https://github.com/wangyu-/udp2raw.git
				synced 2025-11-04 20:25:34 +08:00 
			
		
		
		
	endianness macro, fix mac warning
This commit is contained in:
		
							
								
								
									
										15
									
								
								common.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								common.cpp
									
									
									
									
									
								
							@@ -93,20 +93,19 @@ inline int is_big_endian()
 | 
			
		||||
}
 | 
			
		||||
u64_t ntoh64(u64_t a)
 | 
			
		||||
{
 | 
			
		||||
	static int big_endian=is_big_endian();
 | 
			
		||||
	if(!big_endian)
 | 
			
		||||
	{
 | 
			
		||||
	#ifdef UDP2RAW_BIG_ENDIAN
 | 
			
		||||
		u32_t h=get_u64_h(a);
 | 
			
		||||
		u32_t l=get_u64_l(a);
 | 
			
		||||
		return pack_u64(ntohl(l),ntohl(h));
 | 
			
		||||
		//return bswap_64( a);
 | 
			
		||||
	}
 | 
			
		||||
	else return a;
 | 
			
		||||
	#else
 | 
			
		||||
	return a;
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
u64_t hton64(u64_t a)
 | 
			
		||||
{
 | 
			
		||||
	return ntoh64(u64_t a);
 | 
			
		||||
	return ntoh64(a);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void setnonblocking(int sock) {
 | 
			
		||||
@@ -131,9 +130,9 @@ void setnonblocking(int sock) {
 | 
			
		||||
    Generic checksum calculation function
 | 
			
		||||
*/
 | 
			
		||||
unsigned short csum(const unsigned short *ptr,int nbytes) {//works both for big and little endian
 | 
			
		||||
    register long sum;
 | 
			
		||||
    long sum;
 | 
			
		||||
    unsigned short oddbyte;
 | 
			
		||||
    register short answer;
 | 
			
		||||
    short answer;
 | 
			
		||||
 | 
			
		||||
    sum=0;
 | 
			
		||||
    while(nbytes>1) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								common.h
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								common.h
									
									
									
									
									
								
							@@ -61,6 +61,25 @@
 | 
			
		||||
#include <set>
 | 
			
		||||
using  namespace std;
 | 
			
		||||
 | 
			
		||||
#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \
 | 
			
		||||
    defined(__BIG_ENDIAN__) || \
 | 
			
		||||
    defined(__ARMEB__) || \
 | 
			
		||||
    defined(__THUMBEB__) || \
 | 
			
		||||
    defined(__AARCH64EB__) || \
 | 
			
		||||
    defined(_MIBSEB) || defined(__MIBSEB) || defined(__MIBSEB__)
 | 
			
		||||
#define UDP2RAW_BIG_ENDIAN 1
 | 
			
		||||
#elif defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \
 | 
			
		||||
    defined(__LITTLE_ENDIAN__) || \
 | 
			
		||||
    defined(__ARMEL__) || \
 | 
			
		||||
    defined(__THUMBEL__) || \
 | 
			
		||||
    defined(__AARCH64EL__) || \
 | 
			
		||||
    defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__)
 | 
			
		||||
#define UDP2RAW_LITTLE_ENDIAN 1
 | 
			
		||||
// It's a little-endian target architecture
 | 
			
		||||
#else
 | 
			
		||||
#error "I don't know what architecture this is!"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef unsigned long long u64_t;   //this works on most platform,avoid using the PRId64
 | 
			
		||||
typedef long long i64_t;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								makefile
									
									
									
									
									
								
							@@ -10,10 +10,10 @@ 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.c 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 -lpcap -D_DEFAULT_SOURCE `libnet-config --defines` `libnet-config --libs` 
 | 
			
		||||
 | 
			
		||||
SOURCES= $(COMMON) lib/aes_faster_c/aes.c lib/aes_faster_c/wrapper.c
 | 
			
		||||
SOURCES_TINY_AES= $(COMMON) lib/aes.c
 | 
			
		||||
SOURCES= $(COMMON) lib/aes_faster_c/aes.cpp lib/aes_faster_c/wrapper.cpp
 | 
			
		||||
SOURCES_TINY_AES= $(COMMON) lib/aes.cpp
 | 
			
		||||
SOURCES_AES_ACC=$(COMMON) $(wildcard lib/aes_acc/aes*.c)
 | 
			
		||||
 | 
			
		||||
NAME=udp2raw
 | 
			
		||||
@@ -23,6 +23,9 @@ TAR=${NAME}_binaries.tar.gz `echo ${TARGETS}|sed -r 's/([^ ]+)/udp2raw_\1/g'` ve
 | 
			
		||||
all:git_version
 | 
			
		||||
	rm -f ${NAME}
 | 
			
		||||
	${cc_local}   -o ${NAME}          -I. ${SOURCES} ${FLAGS} -lrt -ggdb -static -O3
 | 
			
		||||
mac:git_version
 | 
			
		||||
	rm -f ${NAME}
 | 
			
		||||
	${cc_local}   -o ${NAME}          -I. ${SOURCES} ${FLAGS} -ggdb -O2
 | 
			
		||||
fast: git_version
 | 
			
		||||
	rm -f ${NAME}
 | 
			
		||||
	${cc_local}   -o ${NAME}          -I. ${SOURCES} ${FLAGS} -lrt -ggdb
 | 
			
		||||
 
 | 
			
		||||
@@ -2060,7 +2060,7 @@ int try_to_list_and_bind(int &fd,u32_t local_ip_uint32,int port)  //try to bind
 | 
			
		||||
     temp_bind_addr.sin_port = htons(port);
 | 
			
		||||
     temp_bind_addr.sin_addr.s_addr = local_ip_uint32;
 | 
			
		||||
 | 
			
		||||
     if (bind(fd, (struct sockaddr*)&temp_bind_addr, sizeof(temp_bind_addr)) !=0)
 | 
			
		||||
     if (::bind(fd, (struct sockaddr*)&temp_bind_addr, sizeof(temp_bind_addr)) !=0)
 | 
			
		||||
     {
 | 
			
		||||
    	 mylog(log_debug,"bind fail\n");
 | 
			
		||||
    	 return -1;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								network.h
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								network.h
									
									
									
									
									
								
							@@ -50,15 +50,13 @@ struct icmphdr
 | 
			
		||||
 | 
			
		||||
struct my_iphdr
 | 
			
		||||
  {
 | 
			
		||||
//#if __BYTE_ORDER == __LITTLE_ENDIAN
 | 
			
		||||
#ifdef UDP2RAW_LITTLE_ENDIAN
 | 
			
		||||
    unsigned int ihl:4;
 | 
			
		||||
    unsigned int version:4;
 | 
			
		||||
//#elif __BYTE_ORDER == __BIG_ENDIAN
 | 
			
		||||
//    unsigned int version:4;
 | 
			
		||||
//    unsigned int ihl:4;
 | 
			
		||||
//#else
 | 
			
		||||
//# error	"Please fix <bits/endian.h>"
 | 
			
		||||
//#endif
 | 
			
		||||
#else
 | 
			
		||||
    unsigned int version:4;
 | 
			
		||||
    unsigned int ihl:4;
 | 
			
		||||
#endif
 | 
			
		||||
    u_int8_t tos;
 | 
			
		||||
    u_int16_t tot_len;
 | 
			
		||||
    u_int16_t id;
 | 
			
		||||
@@ -74,7 +72,7 @@ struct my_iphdr
 | 
			
		||||
 | 
			
		||||
struct my_udphdr
 | 
			
		||||
{
 | 
			
		||||
  __extension__ union
 | 
			
		||||
  /*__extension__*/ union
 | 
			
		||||
  {
 | 
			
		||||
    struct
 | 
			
		||||
    {
 | 
			
		||||
@@ -96,7 +94,7 @@ struct my_udphdr
 | 
			
		||||
 | 
			
		||||
struct my_tcphdr
 | 
			
		||||
  {
 | 
			
		||||
    __extension__ union
 | 
			
		||||
    /*__extension__*/ union
 | 
			
		||||
    {
 | 
			
		||||
      struct
 | 
			
		||||
      {
 | 
			
		||||
@@ -104,14 +102,13 @@ struct my_tcphdr
 | 
			
		||||
	u_int16_t th_dport;		/* destination port */
 | 
			
		||||
	u_int32_t th_seq;		/* sequence number */
 | 
			
		||||
	u_int32_t th_ack;		/* acknowledgement number */
 | 
			
		||||
//# if __BYTE_ORDER == __LITTLE_ENDIAN
 | 
			
		||||
# ifdef UDP2RAW_LITTLE_ENDIAN
 | 
			
		||||
	u_int8_t th_x2:4;		/* (unused) */
 | 
			
		||||
	u_int8_t tc_off:4;		/* data offset */
 | 
			
		||||
# else
 | 
			
		||||
	u_int8_t th_off:4;		/* data offset */
 | 
			
		||||
//# endif
 | 
			
		||||
//# if __BYTE_ORDER == __BIG_ENDIAN
 | 
			
		||||
//	u_int8_t th_off:4;		/* data offset */
 | 
			
		||||
//	u_int8_t th_x2:4;		/* (unused) */
 | 
			
		||||
//# endif
 | 
			
		||||
	u_int8_t th_x2:4;		/* (unused) */
 | 
			
		||||
# endif
 | 
			
		||||
	u_int8_t th_flags;
 | 
			
		||||
# define TH_FIN	0x01
 | 
			
		||||
# define TH_SYN	0x02
 | 
			
		||||
@@ -129,7 +126,7 @@ struct my_tcphdr
 | 
			
		||||
	u_int16_t dest;
 | 
			
		||||
	u_int32_t seq;
 | 
			
		||||
	u_int32_t ack_seq;
 | 
			
		||||
//# if __BYTE_ORDER == __LITTLE_ENDIAN
 | 
			
		||||
# ifdef UDP2RAW_LITTLE_ENDIAN
 | 
			
		||||
	u_int16_t res1:4;
 | 
			
		||||
	u_int16_t doff:4;
 | 
			
		||||
	u_int16_t fin:1;
 | 
			
		||||
@@ -139,19 +136,17 @@ struct my_tcphdr
 | 
			
		||||
	u_int16_t ack:1;
 | 
			
		||||
	u_int16_t urg:1;
 | 
			
		||||
	u_int16_t res2:2;
 | 
			
		||||
//# elif __BYTE_ORDER == __BIG_ENDIAN
 | 
			
		||||
//	u_int16_t doff:4;
 | 
			
		||||
//	u_int16_t res1:4;
 | 
			
		||||
//	u_int16_t res2:2;
 | 
			
		||||
//	u_int16_t urg:1;
 | 
			
		||||
//	u_int16_t ack:1;
 | 
			
		||||
//	u_int16_t psh:1;
 | 
			
		||||
//	u_int16_t rst:1;
 | 
			
		||||
//	u_int16_t syn:1;
 | 
			
		||||
//	u_int16_t fin:1;
 | 
			
		||||
//# else
 | 
			
		||||
//#  error "Adjust your <bits/endian.h> defines"
 | 
			
		||||
//# endif
 | 
			
		||||
# else
 | 
			
		||||
	u_int16_t doff:4;
 | 
			
		||||
	u_int16_t res1:4;
 | 
			
		||||
	u_int16_t res2:2;
 | 
			
		||||
	u_int16_t urg:1;
 | 
			
		||||
	u_int16_t ack:1;
 | 
			
		||||
	u_int16_t psh:1;
 | 
			
		||||
	u_int16_t rst:1;
 | 
			
		||||
	u_int16_t syn:1;
 | 
			
		||||
	u_int16_t fin:1;
 | 
			
		||||
# endif
 | 
			
		||||
	u_int16_t window;
 | 
			
		||||
	u_int16_t check;
 | 
			
		||||
	u_int16_t urg_ptr;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user