static PyObject * canbridge_output_queue(PyObject *self, PyObject *args) { union pkt_any out; out.sample.type = PKT_SAMPLE; if (!PyArg_ParseTuple(args, "(IKi)", &out.sample.can.id, (uint64_t*)&out.sample.can.data, &out.sample.can.length)) return NULL; output_queue(&out); return Py_BuildValue(""); }
static void output_all(void) { unsigned i, stats_line=0; werase(stats_head_window); werase(stats_window); wattron(stats_head_window, COLOR_PAIR(queue_header_color)); mvwprintw(stats_head_window, 0, 0, "%s", clamd_header); wattroff(stats_head_window, COLOR_PAIR(queue_header_color)); for (i=0;i<global.num_clamd;i++) { unsigned j = output_stats(&global.all_stats[i], i); if (j > stats_line) stats_line = j; } output_queue(stats_line, maxystats - stats_line-1); wrefresh(stats_head_window); wrefresh(stats_window); if (detail_exists()) { /* overlaps, must be done at the end */ wrefresh(mem_window); } }
int main(int argc, char **argv) { char *localip; int localport; char* remoteip; int remoteport; FILE* logfile; char* logfile_name; struct stat logfile_stats; long logfile_len; union pkt_any out; union pkt_any in; if (argc != 6) { printf("usage: dummysender <local ip> <local port> " "<remote ip> <remote port> <logfile name>\n"); return 0; } localip = argv[1]; localport = atoi(argv[2]); remoteip = argv[3]; remoteport = atoi(argv[4]); logfile_name = argv[5]; printf("using %s:%d -> %s:%d\n", localip, localport, remoteip, remoteport); printf("Sending logfile: %s\n", logfile_name); logfile = fopen(logfile_name, "r"); if(logfile == NULL){ perror("fopen"); fprintf(stderr, "Error opening log file for sending\n"); exit(1); } stat(logfile_name, &logfile_stats); logfile_len = logfile_stats.st_size; if (socket_init(localip, localport, remoteip, remoteport)) return -1; input_init(); output_init(); while(!feof(logfile)){ //int priority, node, channel;// value; //unsigned int timestamp; // unsigned long long otherstamp; uint32_t header; uint64_t payload; long double scanalysis_time; fscanf(logfile, "%x %Lx %Lf", &header, &payload, &scanalysis_time); out.sample.type = PKT_SAMPLE; out.sample.can.id = header; out.sample.can.data[0] = (payload >> 56) & 0xFF; out.sample.can.data[1] = (payload >> 48) & 0xFF; out.sample.can.data[2] = (payload >> 40 ) & 0xFF; out.sample.can.data[3] = (payload >> 32 ) & 0xFF; out.sample.can.data[4] = (payload >> 24) & 0xFF; out.sample.can.data[5] = (payload >> 16) & 0xFF; out.sample.can.data[6] = (payload >> 8 ) & 0xFF; out.sample.can.data[7] = (payload >> 0 ) & 0xFF; out.sample.can.length = 8; output_queue(&out); out.sample.type = PKT_SAMPLE; /* WHAT THE F**K IS THIS SHIT switch(node){ case 5: out.sample.can.id = fake_heartbeat_id(node, 28); break; case 26: out.sample.can.id = fake_heartbeat_id(node, 26); break; case 111: case 113: out.sample.can.id = fake_heartbeat_id(node, 25); break; case 40: out.sample.can.id = fake_heartbeat_id(node, 13); break; case 30: out.sample.can.id = fake_heartbeat_id(node, 23); break; case 155: case 160: case 165: case 170: case 175: case 180: case 185: out.sample.can.id = fake_heartbeat_id(node, 22); break; } */ /* again, wtf out.sample.can.data[0] = 0; out.sample.can.data[1] = 0; out.sample.can.data[2] = 0; out.sample.can.data[3] = 0; out.sample.can.data[4] = (timestamp >> 24) & 0xFF; out.sample.can.data[5] = (timestamp >> 16) & 0xFF; out.sample.can.data[6] = (timestamp >> 8 ) & 0xFF; out.sample.can.data[7] = (timestamp >> 0 ) & 0xFF; out.sample.can.length = 8; output_queue(&out); */ fprintf(stdout, "\r%d%%\r", (int)(100.0 * ((float)ftell(logfile)) / (float)logfile_len)); while(input_dequeue(&in)==0){ printf("Recieved " "packet_type=%d " "packet_id=%d " "can_id=%x " "can.data=[%x %x %x %x %x %x %x %x] " "can_length=%d\n", in.sample.type, in.sample.packet_id, in.sample.can.id & 0x1FFFFFFF, in.sample.can.data[0], in.sample.can.data[1], in.sample.can.data[2], in.sample.can.data[3], in.sample.can.data[4], in.sample.can.data[5], in.sample.can.data[6], in.sample.can.data[7], in.sample.can.length ); } output_send(); input_recv(); usleep(5000); } return 0; }