/* * readerFree(flow_processor); * * Invoked by input_mode_type->free_fn(); */ static void readerFree( flow_proc_t *fproc) { if (fproc->flow_src) { skPDUSourceDestroy((skPDUSource_t*)fproc->flow_src); fproc->flow_src = NULL; } }
/* * count = pdu2silk(filename); * * Read PDUs from 'filename' and write records to the global * 'silk_output' file. Return number of records processed, or -1 * on error. */ static int64_t pdu2silk( const char *filename) { static unsigned int file_count = 0; char probe_name[128]; skPDUSource_t *pdu_src; skFlowSourceParams_t params; int64_t count; rwRec rwrec; int rv; ++file_count; snprintf(probe_name, sizeof(probe_name), "input%04u", file_count); params.path_name = filename; skpcProbeSetName(probe, probe_name); pdu_src = skPDUSourceCreate(probe, ¶ms); if (pdu_src == NULL) { return -1; } count = 0; while (-1 != skPDUSourceGetGeneric(pdu_src, &rwrec)) { ++count; rv = skStreamWriteRecord(silk_output, &rwrec); if (rv) { skStreamPrintLastErr(silk_output, rv, &skAppPrintErr); if (SKSTREAM_ERROR_IS_FATAL(rv)) { exit(EXIT_FAILURE); } } } skPDUSourceLogStatsAndClear(pdu_src); skPDUSourceDestroy(pdu_src); return count; }