Ejemplo n.º 1
0
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);

}
Ejemplo n.º 2
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);
    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;
}
Ejemplo n.º 3
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;
}
Ejemplo n.º 4
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;
}