static void connect2dst() { int ret; if (the_working_paras.src_ip) the_working_paras.sockfd = tcp_socket_init(the_working_paras.src_ip, the_working_paras.src_port); else the_working_paras.sockfd = tcp_socket_init_no_addr(); if (the_working_paras.sockfd<0) { ERR_DBG_PRINT_QUIT("create socket on %s:%d failed ", the_working_paras.src_ip, (int)the_working_paras.src_port); } make_sockaddr(&the_working_paras.dst_sock_addr, inet_addr(the_working_paras.dst_ip), htons(the_working_paras.dst_port)); ret=connect(the_working_paras.sockfd ,(void *)&the_working_paras.dst_sock_addr ,sizeof(struct sockaddr_in)); if (ret<0) { ERR_DBG_PRINT_QUIT("connect to %s:%d failed ", the_working_paras.dst_ip, (int)the_working_paras.dst_port); } set_fd_nonblock(the_working_paras.sockfd); DBG_PRINT("connect to %s:%d succeed!", the_working_paras.dst_ip, (int)the_working_paras.dst_port); }
int main(int argc, char *argv[]) { int ret; parse_args(argc, argv); if (the_working_paras.cpu_idx!=(uint8_t)-1) { ret = bind_cur_thread_to_cpu(the_working_paras.cpu_idx); if (0==ret) goto BIND_CPU_OK; errno = ret; ERR_DBG_PRINT_QUIT("bind to cpu %d failed", (int)the_working_paras.cpu_idx); } BIND_CPU_OK: register_sig_proc(SIGINT, sig_handler); the_working_paras.sockfd = udp_socket_init(the_working_paras.src_ip, the_working_paras.src_port); if (the_working_paras.sockfd<0) { ERR_DBG_PRINT_QUIT("create socket on %s:%d failed ", the_working_paras.src_ip, (int)the_working_paras.src_port); } set_fd_nonblock(the_working_paras.sockfd); rxtx_loop(); show_stats(); return 0; }
int main(int argc, char *argv[]) { int ret; parse_args(argc, argv); if (the_working_paras.cpu_idx!=(uint8_t)-1) { ret = bind_cur_thread_to_cpu(the_working_paras.cpu_idx); if (0==ret) goto BIND_CPU_OK; errno = ret; ERR_DBG_PRINT_QUIT("bind to cpu %d failed", (int)the_working_paras.cpu_idx); } BIND_CPU_OK: register_sig_proc(SIGINT, sig_handler); register_sig_proc(SIGALRM, sig_handler); connect2dst(); alarm(the_working_paras.snd_interval); rx_loop(); show_stats(); return 0; }
static void *misc_thread_func(void *arg) { fd_set r_fds,w_fds,except_fds; struct timeval tv; int retval, max_fd, tmp_fd; save_ori_io(); fd_server=tcp_socket_init(NULL, server_port); if (fd_server<0) { ERR_DBG_PRINT_QUIT("create telnetd server socket failed."); } listen(fd_server,0); while (1) { FD_ZERO(&r_fds); FD_ZERO(&w_fds); FD_ZERO(&except_fds); FD_SET(fd_server, &r_fds); max_fd=fd_server; if (fd_conn>0) { FD_SET(fd_conn, &r_fds); FD_SET(fd_conn, &except_fds); max_fd=(fd_conn>max_fd)?fd_conn:max_fd; FD_SET(fd_pty_master, &r_fds); max_fd=(fd_pty_master>max_fd)?fd_pty_master:max_fd; } tv.tv_sec = 0; tv.tv_usec = 200000; retval = select(max_fd + 1, &r_fds, &w_fds, &except_fds, &tv); if (retval <= 0) { continue; } if (FD_ISSET(fd_server, &r_fds)) { tmp_fd=accept(fd_server, NULL, NULL); if (tmp_fd<0) { continue; } if (fd_conn>0) { printf_to_fd(fd_conn, "A new login happens, so we shutdown your session...\r\n"); } term_session(); if (make_new_session(tmp_fd)) { close(tmp_fd); } continue; } if (shell_quit_occurred || FD_ISSET(fd_conn, &except_fds)) { term_session(); continue; } if (FD_ISSET(fd_conn, &r_fds)) { trans_data_sock2pty(); } if (FD_ISSET(fd_pty_master, &r_fds)|| (pty2sock_cache_len>0)) { if (trans_data_pty2sock()) { term_session(); continue; } } } return NULL; }