/* * common.h * * Created on: Jul 29, 2017 * Author: wangyu */ #ifndef COMMON_H_ #define COMMON_H_ //#define __STDC_FORMAT_MACROS 1 #include #include #include #include #include #include #include #include #include #include //for socket ofcourse #include #include //for exit(0); #include //For errno - the error number #include //Provides declarations for tcp header #include #include //Provides declarations for ip header #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int max_data_len=1600; const int buf_len=max_data_len+200; const uint32_t max_handshake_conn_num=10000; const uint32_t max_ready_conn_num=1000; const uint32_t anti_replay_window_size=1000; const int max_conv_num=10000; const uint32_t client_handshake_timeout=5000; const uint32_t client_retry_interval=1000; const uint32_t server_handshake_timeout=10000;// this should be much longer than clients. client retry initially ,server retry passtively const int conv_clear_ratio=10; //conv grabage collecter check 1/10 of all conv one time const int conn_clear_ratio=10; const int conv_clear_min=5; const int conn_clear_min=1; const uint32_t conv_clear_interval=1000; const uint32_t conn_clear_interval=1000; const int max_fail_time=100000; const uint32_t heartbeat_interval=1000; const uint32_t timer_interval=400;//this should be smaller than heartbeat_interval and retry interval; //const uint32_t conv_timeout=120000; //120 second const uint32_t conv_timeout=30000; //for test const uint32_t client_conn_timeout=10000; //const uint32_t server_conn_timeout=conv_timeout+60000;//this should be 60s+ longer than conv_timeout,so that conv_manager can destruct convs gradually,to avoid latency glicth const uint32_t server_conn_timeout=conv_timeout+10000;//for test enum raw_mode_t{mode_faketcp=0,mode_udp,mode_icmp,mode_end}; extern raw_mode_t raw_mode; enum program_mode_t {unset_mode=0,client_mode,server_mode}; extern program_mode_t program_mode; extern unordered_map raw_mode_tostring ; extern int socket_buf_size; typedef uint32_t id_t; typedef uint64_t iv_t; typedef uint64_t padding_t; typedef uint64_t anti_replay_seq_t; uint64_t get_current_time(); uint64_t pack_u64(uint32_t a,uint32_t b); uint32_t get_u64_h(uint64_t a); uint32_t get_u64_l(uint64_t a); char * my_ntoa(uint32_t ip); void myexit(int a); void init_random_number_fd(); uint64_t get_true_random_number_64(); uint32_t get_true_random_number(); uint32_t get_true_random_number_nz(); uint64_t ntoh64(uint64_t a); uint64_t hton64(uint64_t a); bool larger_than_u16(uint16_t a,uint16_t b); bool larger_than_u32(uint32_t a,uint32_t b); void setnonblocking(int sock); int set_buf_size(int fd); unsigned short csum(const unsigned short *ptr,int nbytes); void INThandler(int sig); int numbers_to_char(id_t id1,id_t id2,id_t id3,char * &data,int &len); int char_to_numbers(const char * data,int len,id_t &id1,id_t &id2,id_t &id3); void myexit(int a); #endif /* COMMON_H_ */