コード例 #1
0
static void sig_handler(int sig_no, siginfo_t *pt_siginfo, void *p_ucontext)
{
    int ret;
    if (SIGINT==sig_no)
	{
		the_working_paras.need_exit = 1;
		alarm(0);
	}
	else if (SIGALRM==sig_no)
	{
	    alarm(the_working_paras.snd_interval);
		
		INC_STAT(the_stat_data.tx_pkts_total);
		INC_STAT_VALUE(the_stat_data.tx_bytes_total, the_working_paras.snd_data_len);

		if (!the_working_paras.no_verbose)
		{
			printf("[%"PRIu64"]try send %d bytes to %s:%d\n"
				,the_stat_data.tx_pkts_total
				,the_working_paras.snd_data_len
				,the_working_paras.dst_ip
				,(int)the_working_paras.dst_port);

		}
		ret=write_certain_bytes(the_working_paras.sockfd
			, the_working_paras.snd_buf
			, the_working_paras.snd_data_len
			, NULL);

		if (0==ret)
		{
			INC_STAT(the_stat_data.tx_pkts_succ);
			INC_STAT_VALUE(the_stat_data.tx_bytes_succ, the_working_paras.snd_data_len);
		}
		else
		{
			INC_STAT(the_stat_data.tx_pkts_fail);
			INC_STAT_VALUE(the_stat_data.tx_bytes_fail, the_working_paras.snd_data_len);

			if (!the_working_paras.no_verbose)
				ERR_DBG_PRINT("tx failed");
			
			the_working_paras.need_exit = 1;
			alarm(0);

		}

	}
}
コード例 #2
0
static void trans_data_sock2pty()
{
    char buf[512];
    int ret;
    
    ret=read_reliable(fd_conn, buf, sizeof(buf));
//    DBG_PRINT("ret=%d", ret);
    if (ret<=0)
    {
        term_session();
        return;
    }

    remove_iacs((void *)buf, ret, &ret);
    if (ret>0)
        write_certain_bytes(fd_pty_master, buf, ret);
    //for (i=0;i<ret;i++)
    //    DBG_PRINT("%02hhx-%c", buf[i], buf[i]);
}
コード例 #3
0
void snd_iac(int sockfd, char cmd, char opt)
{
    char data[3] = {IAC, cmd, opt};
    write_certain_bytes(sockfd, data, sizeof(data));
}
コード例 #4
0
static void refresh_shell_buf_display()
{
    printf_to_fd(1, "\r%s", DEBUG_SHELL_HINT);
    write_certain_bytes(1, shell_buf, shell_buf_cur_len);
}