int scamper_file_write_obj(scamper_file_t *sf, uint16_t type, const void *data) { switch(type) { case SCAMPER_FILE_OBJ_LIST: case SCAMPER_FILE_OBJ_CYCLE_DEF: case SCAMPER_FILE_OBJ_CYCLE_START: case SCAMPER_FILE_OBJ_CYCLE_STOP: case SCAMPER_FILE_OBJ_ADDR: return -1; case SCAMPER_FILE_OBJ_TRACE: return scamper_file_write_trace(sf, data); case SCAMPER_FILE_OBJ_PING: return scamper_file_write_ping(sf, data); case SCAMPER_FILE_OBJ_TRACELB: return scamper_file_write_tracelb(sf, data); case SCAMPER_FILE_OBJ_DEALIAS: return scamper_file_write_dealias(sf, data); case SCAMPER_FILE_OBJ_NEIGHBOURDISC: return scamper_file_write_neighbourdisc(sf, data); case SCAMPER_FILE_OBJ_TBIT: return scamper_file_write_tbit(sf, data); case SCAMPER_FILE_OBJ_SNIFF: return scamper_file_write_sniff(sf, data); } return -1; }
static int write_obj(uint16_t type, void *data) { /* write the object out */ switch(type) { case SCAMPER_FILE_OBJ_TRACELB: if(scamper_file_write_tracelb(outfile, data) != 0) return -1; scamper_tracelb_free(data); break; case SCAMPER_FILE_OBJ_TRACE: if(scamper_file_write_trace(outfile, data) != 0) return -1; scamper_trace_free(data); break; case SCAMPER_FILE_OBJ_PING: if(scamper_file_write_ping(outfile, data) != 0) return -1; scamper_ping_free(data); break; case SCAMPER_FILE_OBJ_DEALIAS: if(scamper_file_write_dealias(outfile, data) != 0) return -1; scamper_dealias_free(data); break; case SCAMPER_FILE_OBJ_CYCLE_START: if(scamper_file_write_cycle_start(outfile, data) != 0) return -1; scamper_cycle_free(data); break; case SCAMPER_FILE_OBJ_CYCLE_STOP: if(scamper_file_write_cycle_stop(outfile, data) != 0) return -1; scamper_cycle_free(data); break; default: fprintf(stderr, "unhandled data object 0x%04x\n", type); break; } return 0; }