static int warts_dealias_params_write(const scamper_dealias_t *dealias, const scamper_file_t *sf, uint8_t *buf, uint32_t *off, const uint32_t len, const uint8_t *flags, const uint16_t flags_len, const uint16_t params_len) { uint32_t list_id, cycle_id; warts_param_writer_t handlers[] = { {&list_id, (wpw_t)insert_uint32, NULL}, {&cycle_id, (wpw_t)insert_uint32, NULL}, {&dealias->start, (wpw_t)insert_timeval, NULL}, {&dealias->method, (wpw_t)insert_byte, NULL}, {&dealias->result, (wpw_t)insert_byte, NULL}, {&dealias->probec, (wpw_t)insert_uint32, NULL}, {&dealias->userid, (wpw_t)insert_uint32, NULL}, }; const int handler_cnt = sizeof(handlers)/sizeof(warts_param_writer_t); if(warts_list_getid(sf, dealias->list, &list_id) == -1) return -1; if(warts_cycle_getid(sf, dealias->cycle, &cycle_id) == -1) return -1; warts_params_write(buf, off, len, flags, flags_len, params_len, handlers, handler_cnt); return 0; }
static int warts_ping_params_write(const scamper_ping_t *ping, const scamper_file_t *sf, warts_addrtable_t *table, uint8_t *buf, uint32_t *off, const uint32_t len, const uint8_t *flags, const uint16_t flags_len, const uint16_t params_len) { uint32_t list_id, cycle_id; uint16_t pad_len = ping->probe_datalen; warts_param_writer_t handlers[] = { {&list_id, (wpw_t)insert_uint32, NULL}, {&cycle_id, (wpw_t)insert_uint32, NULL}, {NULL, NULL, NULL}, {NULL, NULL, NULL}, {&ping->start, (wpw_t)insert_timeval, NULL}, {&ping->stop_reason, (wpw_t)insert_byte, NULL}, {&ping->stop_data, (wpw_t)insert_byte, NULL}, {&ping->probe_datalen, (wpw_t)insert_uint16, NULL}, {ping->probe_data, (wpw_t)insert_bytes_uint16, &pad_len}, {&ping->probe_count, (wpw_t)insert_uint16, NULL}, {&ping->probe_size, (wpw_t)insert_uint16, NULL}, {&ping->probe_wait, (wpw_t)insert_byte, NULL}, {&ping->probe_ttl, (wpw_t)insert_byte, NULL}, {&ping->reply_count, (wpw_t)insert_uint16, NULL}, {&ping->ping_sent, (wpw_t)insert_uint16, NULL}, {&ping->probe_method, (wpw_t)insert_byte, NULL}, {&ping->probe_sport, (wpw_t)insert_uint16, NULL}, {&ping->probe_dport, (wpw_t)insert_uint16, NULL}, {&ping->userid, (wpw_t)insert_uint32, NULL}, {ping->src, (wpw_t)insert_addr, table}, {ping->dst, (wpw_t)insert_addr, table}, {&ping->flags, (wpw_t)insert_byte, NULL}, {&ping->probe_tos, (wpw_t)insert_byte, NULL}, {ping->probe_tsps, (wpw_t)insert_ping_probe_tsps, table}, {&ping->probe_icmpsum, (wpw_t)insert_uint16, NULL}, {&ping->reply_pmtu, (wpw_t)insert_uint16, NULL}, {&ping->probe_timeout, (wpw_t)insert_byte, NULL}, {&ping->probe_wait_us, (wpw_t)insert_uint32, NULL}, }; const int handler_cnt = sizeof(handlers)/sizeof(warts_param_writer_t); if(warts_list_getid(sf, ping->list, &list_id) == -1) return -1; if(warts_cycle_getid(sf, ping->cycle, &cycle_id) == -1) return -1; warts_params_write(buf, off, len, flags, flags_len, params_len, handlers, handler_cnt); return 0; }
static int warts_trace_params_write(const scamper_trace_t *trace, const scamper_file_t *sf, warts_addrtable_t *table, uint8_t *buf, uint32_t *off, const uint32_t len, const uint8_t *flags, const uint16_t flags_len, const uint16_t params_len) { uint32_t list_id, cycle_id; warts_param_writer_t handlers[] = { {&list_id, (wpw_t)insert_uint32, NULL}, {&cycle_id, (wpw_t)insert_uint32, NULL}, {NULL, NULL, NULL}, {NULL, NULL, NULL}, {&trace->start, (wpw_t)insert_timeval, NULL}, {&trace->stop_reason, (wpw_t)insert_byte, NULL}, {&trace->stop_data, (wpw_t)insert_byte, NULL}, {&trace->flags, (wpw_t)insert_byte, NULL}, {&trace->attempts, (wpw_t)insert_byte, NULL}, {&trace->hoplimit, (wpw_t)insert_byte, NULL}, {&trace->type, (wpw_t)insert_byte, NULL}, {&trace->probe_size, (wpw_t)insert_uint16, NULL}, {&trace->sport, (wpw_t)insert_uint16, NULL}, {&trace->dport, (wpw_t)insert_uint16, NULL}, {&trace->firsthop, (wpw_t)insert_byte, NULL}, {&trace->tos, (wpw_t)insert_byte, NULL}, {&trace->wait, (wpw_t)insert_byte, NULL}, {&trace->loops, (wpw_t)insert_byte, NULL}, {&trace->hop_count, (wpw_t)insert_uint16, NULL}, {&trace->gaplimit, (wpw_t)insert_byte, NULL}, {&trace->gapaction, (wpw_t)insert_byte, NULL}, {&trace->loopaction, (wpw_t)insert_byte, NULL}, {&trace->probec, (wpw_t)insert_uint16, NULL}, {&trace->wait_probe, (wpw_t)insert_byte, NULL}, {&trace->confidence, (wpw_t)insert_byte, NULL}, {trace->src, (wpw_t)insert_addr, table}, {trace->dst, (wpw_t)insert_addr, table}, {&trace->userid, (wpw_t)insert_uint32, NULL}, {&trace->offset, (wpw_t)insert_uint16, NULL}, }; const int handler_cnt = sizeof(handlers)/sizeof(warts_param_writer_t); if(warts_list_getid(sf, trace->list, &list_id) == -1) return -1; if(warts_cycle_getid(sf, trace->cycle, &cycle_id) == -1) return -1; warts_params_write(buf, off, len, flags, flags_len, params_len, handlers, handler_cnt); return 0; }
static int warts_tbit_params_write(const scamper_tbit_t *tbit, const scamper_file_t *sf, warts_addrtable_t *table, uint8_t *buf, uint32_t *off, const uint32_t len, const uint8_t *flags, const uint16_t flags_len, const uint16_t params_len) { uint32_t list_id, cycle_id; /* Specifies how to write each variable to the warts file. */ warts_param_writer_t handlers[] = { {&list_id, (wpw_t)insert_uint32, NULL}, {&cycle_id, (wpw_t)insert_uint32, NULL}, {&tbit->userid, (wpw_t)insert_uint32, NULL}, {tbit->src, (wpw_t)insert_addr, table}, {tbit->dst, (wpw_t)insert_addr, table}, {&tbit->sport, (wpw_t)insert_uint16, NULL}, {&tbit->dport, (wpw_t)insert_uint16, NULL}, {&tbit->start, (wpw_t)insert_timeval, NULL}, {&tbit->result, (wpw_t)insert_uint16, NULL}, {&tbit->type, (wpw_t)insert_byte, NULL}, {&tbit->app_proto, (wpw_t)insert_byte, NULL}, {&tbit->client_mss, (wpw_t)insert_uint16, NULL}, {&tbit->server_mss, (wpw_t)insert_uint16, NULL}, {&tbit->syn_retx, (wpw_t)insert_byte, NULL}, {&tbit->dat_retx, (wpw_t)insert_byte, NULL}, {NULL, NULL, NULL}, /* PKTC16 */ {&tbit->pktc, (wpw_t)insert_uint32, NULL}, }; const int handler_cnt = sizeof(handlers)/sizeof(warts_param_writer_t); if(warts_list_getid(sf, tbit->list, &list_id) == -1) return -1; if(warts_cycle_getid(sf, tbit->cycle, &cycle_id) == -1) return -1; warts_params_write(buf, off, len, flags, flags_len, params_len, handlers, handler_cnt); return 0; }
static int warts_neighbourdisc_params_write(const scamper_neighbourdisc_t *nd, const scamper_file_t *sf, warts_addrtable_t *table, uint8_t *buf, uint32_t *off, const uint32_t len, const uint8_t *flags, const uint16_t flags_len, const uint16_t params_len) { uint32_t list_id, cycle_id; warts_param_writer_t handlers[] = { {&list_id, (wpw_t)insert_uint32, NULL}, {&cycle_id, (wpw_t)insert_uint32, NULL}, {&nd->userid, (wpw_t)insert_uint32, NULL}, {nd->ifname, (wpw_t)insert_string, NULL}, {&nd->start, (wpw_t)insert_timeval, NULL}, {&nd->method, (wpw_t)insert_byte, NULL}, {&nd->wait, (wpw_t)insert_uint16, NULL}, {&nd->flags, (wpw_t)insert_byte, NULL}, {&nd->attempts, (wpw_t)insert_uint16, NULL}, {&nd->replyc, (wpw_t)insert_uint16, NULL}, {nd->src_ip, (wpw_t)insert_addr, table}, {nd->src_mac, (wpw_t)insert_addr, table}, {nd->dst_ip, (wpw_t)insert_addr, table}, {nd->dst_mac, (wpw_t)insert_addr, table}, {&nd->probec, (wpw_t)insert_uint16, table}, }; const int handler_cnt = sizeof(handlers)/sizeof(warts_param_writer_t); if(warts_list_getid(sf, nd->list, &list_id) == -1) return -1; if(warts_cycle_getid(sf, nd->cycle, &cycle_id) == -1) return -1; warts_params_write(buf, off, len, flags, flags_len, params_len, handlers, handler_cnt); return 0; }