remove non-portable code

This commit is contained in:
wangyu- 2018-06-14 09:25:02 -05:00
parent 00f37c0d2f
commit 5d4ea64d00
5 changed files with 45 additions and 29 deletions

View File

@ -86,11 +86,15 @@ u32_t get_true_random_number_nz() //nz for non-zero
}
return ret;
}
u64_t ntoh64(u64_t a)
{
if(__BYTE_ORDER == __LITTLE_ENDIAN)
{
return bswap_64( a);
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;
@ -99,7 +103,10 @@ u64_t hton64(u64_t a)
{
if(__BYTE_ORDER == __LITTLE_ENDIAN)
{
return bswap_64( a);
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;

View File

@ -282,9 +282,9 @@ int client_on_raw_recv(conn_info_t &conn_info) //called when raw fd received a p
if(conn_info.state.client_current_state==client_idle )
{
//recv(raw_recv_fd, 0,0, 0 );
pthread_mutex_lock(&queue_mutex);
my_queue.pop_front();
pthread_mutex_unlock(&queue_mutex);
//pthread_mutex_lock(&queue_mutex);
//my_queue.pop_front();
//pthread_mutex_unlock(&queue_mutex);
}
else if(conn_info.state.client_current_state==client_tcp_handshake)//received syn ack
{

View File

@ -85,6 +85,7 @@ int force_socket_buf=0;
//char lower_level_arg[1000];
/*
int process_lower_level_arg()//handle --lower-level option
{
lower_level=1;
@ -112,7 +113,7 @@ int process_lower_level_arg()//handle --lower-level option
dest_hw_addr[i] = uint8_t(hw[i]);
}
return 0;
}
}*/
void print_help()
{
char git_version_buf[100]={0};
@ -1058,7 +1059,7 @@ int set_timer(int epollfd,int &timer_fd)//put a timer_fd into epoll,general func
return 0;
}*/
/*
int set_timer_server(int epollfd,int &timer_fd,fd64_t &fd64)//only for server
{
int ret;
@ -1120,7 +1121,7 @@ int handle_lower_level(raw_info_t &raw_info)//fill lower_level info,when --lower
}
return 0;
}
*/
string chain[2];
string rule_keep[2];

View File

@ -23,7 +23,7 @@ int disable_bpf_filter=0; //for test only,most time no need to disable this
u32_t bind_address_uint32=0;
int lower_level=0;
//int lower_level=0;
int lower_level_manual=0;
int ifindex=-1;
char if_name[100]="";
@ -32,8 +32,8 @@ char dev[100]="";
unsigned short g_ip_id_counter=0;
unsigned char dest_hw_addr[sizeof(sockaddr_ll::sll_addr)]=
{0xff,0xff,0xff,0xff,0xff,0xff,0,0};
//unsigned char dest_hw_addr[sizeof(sockaddr_ll::sll_addr)]=
// {0xff,0xff,0xff,0xff,0xff,0xff,0,0};
//{0x00,0x23,0x45,0x67,0x89,0xb9};
const u32_t receive_window_lower_bound=40960;
@ -58,6 +58,7 @@ char g_packet_buf[buf_len]; //dirty code, fix it later
int g_packet_buf_len=1;
int g_packet_buf_cnt=0;
/*
struct sock_filter code_tcp_old[] = {
{ 0x28, 0, 0, 0x0000000c },//0
{ 0x15, 0, 10, 0x00000800 },//1
@ -109,7 +110,7 @@ struct sock_filter code_icmp[] = {
{ 0x15, 0, 1, 0x00000001 },
{ 0x6, 0, 0, 0x0000ffff },
{ 0x6, 0, 0, 0x00000000 },
};
};*/
/*
@ -314,6 +315,8 @@ int init_raw_socket()
g_ip_id_counter=get_true_random_number()%65535;
/*
if(lower_level==0)
{
raw_send_fd = socket(AF_INET , SOCK_RAW , IPPROTO_TCP);
@ -398,17 +401,19 @@ int init_raw_socket()
setnonblocking(raw_send_fd); //not really necessary
setnonblocking(raw_recv_fd);
setnonblocking(raw_recv_fd);*/
return 0;
}
void init_filter(int port)
{
sock_fprog bpf;
/*
sock_fprog bpf;*/
if(raw_mode==mode_faketcp||raw_mode==mode_udp)
{
filter_port=port;
}
/*
if(disable_bpf_filter) return;
//if(raw_mode==mode_icmp) return ;
//code_tcp[8].k=code_tcp[10].k=port;
@ -445,7 +450,7 @@ void init_filter(int port)
mylog(log_fatal,"error set fiter\n");
//perror("filter");
myexit(-1);
}
}*/
}
void remove_filter()
{
@ -538,6 +543,7 @@ vector<int> find_route_entry(const vector<route_info_t> &route_info_vec,u32_t ip
}
return res;
}
/*
int find_direct_dest(const vector<route_info_t> &route_info_vec,u32_t ip,u32_t &dest_ip,string &if_name)
{
vector<int> res;
@ -568,7 +574,7 @@ int find_direct_dest(const vector<route_info_t> &route_info_vec,u32_t ip,u32_t &
}
mylog(log_error,"dead loop in find_direct_dest\n");
return -1;
}
}*/
struct arp_info_t
{
u32_t ip;
@ -609,6 +615,7 @@ int find_arp(const vector<arp_info_t> &arp_info_vec,u32_t ip,string if_name,stri
hw=arp_info_vec[pos].hw;
return 0;
}
/*
int find_lower_level_info(u32_t ip,u32_t &dest_ip,string &if_name,string &hw)
{
ip=htonl(ip);
@ -697,7 +704,7 @@ int find_lower_level_info(u32_t ip,u32_t &dest_ip,string &if_name,string &hw)
dest_ip=ntohl(dest_ip);
return 0;
}
}*/
int send_raw_ip(raw_info_t &raw_info,const char * payload,int payloadlen)
@ -720,12 +727,12 @@ int send_raw_ip(raw_info_t &raw_info,const char * payload,int payloadlen)
iph->version = 4;
iph->tos = 0;
if(lower_level)
/* if(lower_level)
{
//iph->id=0;
iph->id = htons (g_ip_id_counter++); //Id of this packet
}
else
else*/
iph->id = htons (g_ip_id_counter++); //Id of this packet
//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
@ -738,15 +745,15 @@ int send_raw_ip(raw_info_t &raw_info,const char * payload,int payloadlen)
iph->daddr = send_info.dst_ip;
uint16_t ip_tot_len=sizeof (struct iphdr)+payloadlen;
if(lower_level)iph->tot_len = htons(ip_tot_len); //this is not necessary ,kernel will always auto fill this //http://man7.org/linux/man-pages/man7/raw.7.html
else
/* if(lower_level)iph->tot_len = htons(ip_tot_len); //this is not necessary ,kernel will always auto fill this //http://man7.org/linux/man-pages/man7/raw.7.html
else*/
iph->tot_len = 0;
memcpy(send_raw_ip_buf+sizeof(iphdr) , payload, payloadlen);
if(lower_level) iph->check =
/*if(lower_level) iph->check =
csum ((unsigned short *) send_raw_ip_buf, iph->ihl*4); //this is not necessary ,kernel will always auto fill this
else
else*/
iph->check=0;
int ret;
@ -862,8 +869,8 @@ int recv_raw_ip(raw_info_t &raw_info,char * &payload,int &payloadlen)
//static char recv_raw_ip_buf[buf_len];
iphdr * iph;
struct sockaddr_ll saddr={0};
socklen_t saddr_size = sizeof(saddr);
/*struct sockaddr_ll saddr={0};
socklen_t saddr_size = sizeof(saddr);*/
int flag=0;
//int recv_len = recvfrom(raw_recv_fd, recv_raw_ip_buf, max_data_len+1, flag ,(sockaddr*)&saddr , &saddr_size);
@ -904,10 +911,11 @@ int recv_raw_ip(raw_info_t &raw_info,char * &payload,int &payloadlen)
recv_info.dst_ip=iph->daddr;
recv_info.protocol=iph->protocol;
/*
if(lower_level)
{
memcpy(&recv_info.addr_ll,&saddr,sizeof(recv_info.addr_ll));
}
}*/
if(bind_address_uint32!=0 &&recv_info.dst_ip!=bind_address_uint32)

View File

@ -16,8 +16,8 @@ extern int filter_port;
extern u32_t bind_address_uint32;
extern int disable_bpf_filter;
extern int lower_level;
extern int lower_level_manual;
//extern int lower_level;
//extern int lower_level_manual;
extern char if_name[100];
extern unsigned char dest_hw_addr[];
@ -80,7 +80,7 @@ struct packet_info_t //todo change this to union
bool has_ts;
sockaddr_ll addr_ll;
//sockaddr_ll addr_ll;
i32_t data_len;