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); } } }
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]); }
void snd_iac(int sockfd, char cmd, char opt) { char data[3] = {IAC, cmd, opt}; write_certain_bytes(sockfd, data, sizeof(data)); }
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); }