summaryrefslogtreecommitdiffstats
path: root/src/plugins/flowprobe
AgeCommit message (Expand)AuthorFilesLines
2024-03-12misc: remove GNU Indent directivesDamjan Marion3-20/+0
2024-03-07flowprobe: fix flush callbacks when multiple workersAlexander Chernavin1-0/+86
2024-01-02flowprobe: fix calling vlib_time_now() from worker threadsAlexander Chernavin1-3/+2
2023-11-14flowprobe: fix L3 header offset calculation for tx flowsAlexander Chernavin1-1/+1
2023-11-12flowprobe: fix tx flows generated for rewritten trafficAlexander Chernavin1-5/+7
2023-11-07flowprobe: fix clearing interface state on feature disablingAlexander Chernavin1-0/+3
2023-10-30flowprobe: fix accumulation of tcp flags in flow entriesAlexander Chernavin1-0/+1
2023-10-18flowprobe: fix sending L4 fields in L2 template and flowsAlexander Chernavin2-3/+13
2023-10-16flowprobe: fix corrupted packets sent after feature disablingAlexander Chernavin3-2/+54
2023-10-12flowprobe: fix sending L2 flows using L2_IP6 templateAlexander Chernavin1-11/+13
2022-09-26api: replace print functions wth formatDamjan Marion1-7/+5
2022-05-16flowprobe: add api messages to obtain current stateAlexander Chernavin3-6/+383
2022-05-13flowprobe: add support for reporting on inbound packetsAlexander Chernavin7-91/+441
2021-11-22ipfix-export: Change exp to use ip_addressPaul Atkins2-5/+6
2021-11-22ipfix-export: refactor params to the callback fnsPaul Atkins1-24/+13
2021-11-22ipfix-export: pass an exp to flow_report_add_delPaul Atkins1-64/+51
2021-11-22ipfix-export: refactor fields in flow_report_mainPaul Atkins2-17/+19
2021-11-14flowprobe: right values in records from subinterfacesDaniel Béreš1-2/+14
2021-11-02flowprobe: missing headerDamjan Marion1-0/+1
2021-10-13docs: convert plugins doc md->rstNathan Skrzypczak2-13/+17
2021-07-15misc: replace CLIB_PREFETCH with clib_prefetch_{load,store}Damjan Marion1-2/+2
2021-05-13tests: move test source to vpp/testDave Wallace1-1094/+0
2021-05-01vlib: refactor trajectory trace debug featureBenoît Ganne1-1/+0
2021-04-19interface: interface-output end node reworkDamjan Marion1-3/+2
2021-03-26vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()Damjan Marion1-3/+3
2021-02-11tests: tag the tests that do not work with multi-worker configurationAndrew Yourtchenko1-0/+3
2021-02-07flowprobe: set collector port for data from settingjan_cavojsky1-2/+2
2021-01-22tests: add generalized tags for tests, use them for run-solo testsAndrew Yourtchenko1-4/+2
2020-12-14misc: move to new pool_foreach macrosDamjan Marion1-2/+2
2020-11-25api: vat2 and json autogeneration for api messagesOle Troan2-19/+1
2020-10-21misc: minimize dependencies on udp.hFlorin Coras2-0/+2
2020-10-07misc: Purge unused pg includesNeale Ranns1-1/+0
2020-09-16flowprobe: add show commands for params and list of interfaces for recordingjan_cavojsky1-0/+87
2020-09-01ip: fix ip zero checksum verificationBenoît Ganne1-1/+1
2020-08-27tests: "force solo" testcase supportAndrew Yourtchenko1-0/+4
2020-05-06docs: clean up make docs jobPaul Vinciguerra1-1/+2
2019-12-10flowprobe: use explicit types in apiOle Troan4-25/+44
2019-11-08tests: python3 use byte strings in raw()Ole Troan1-1/+1
2019-11-06build: add yaml file linting to make checkstylePaul Vinciguerra1-3/+4
2019-11-05misc: Fix python scripts shebang lineRenato Botelho do Couto1-1/+1
2019-10-22ip: ipfix-export API updateJakub Grajciar1-2/+2
2019-10-22flowprobe: tests support python3Ole Troan1-12/+8
2019-09-25api: split api generated filesOle Troan6-214/+11
2019-08-22tests: move plugin tests to src/plugins/*/testDave Wallace1-0/+1082
2019-07-09vat: unload unused vat pluginsDave Barach1-21/+2
2019-06-07build: add -Wall and -fno-common, fix reported issuesBenoît Ganne2-1/+1
2019-05-31tools: FEATURE.yaml meta-data infrastructureOle Troan1-0/+13
2019-01-20buffers: don't init metadata, as it is already initializedDamjan Marion1-4/+0
2019-01-02Fixes for buliding for 32bit targets:David Johnson1-1/+1
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach1-27/+27
ass="n">fh->major_version = 2; fh->minor_version = 4; fh->time_zone = 0; fh->max_packet_size_in_bytes = 1 << 16; fh->packet_type = pm->packet_type; return 0; } /** * @brief mmap a mapped pcap file, e.g. to read from another process * @param pcap_main_t *pm * @return rc - clib_error_t */ clib_error_t * mpcap_map (mpcap_main_t * pm) { clib_error_t *error = 0; int fd = -1; mpcap_file_header_t *fh; mpcap_packet_header_t *ph; struct stat statb; u64 packets_read = 0; u32 min_packet_bytes = ~0; u32 max_packet_bytes = 0; fd = open (pm->file_name, O_RDONLY); if (fd < 0) { error = clib_error_return_unix (0, "open `%s'", pm->file_name); goto done; } if (fstat (fd, &statb) < 0) { error = clib_error_return_unix (0, "stat `%s'", pm->file_name); goto done; } if ((statb.st_mode & S_IFREG) == 0) { error = clib_error_return (0, "'%s' is not a regular file", pm->file_name); goto done; } if (statb.st_size < sizeof (*fh) + sizeof (*ph)) { error = clib_error_return_unix (0, "`%s' is too short", pm->file_name); goto done; } pm->max_file_size = statb.st_size; pm->file_baseva = mmap (0, statb.st_size, PROT_READ, MAP_SHARED, fd, 0); if (pm->file_baseva == (u8 *) MAP_FAILED) { error = clib_error_return_unix (0, "mmap"); goto done; } pm->flags |= MPCAP_FLAG_INIT_DONE; fh = pm->file_header = (mpcap_file_header_t *) pm->file_baseva; ph = (mpcap_packet_header_t *) (fh + 1); if (fh->magic != 0xa1b2c3d4) { error = clib_error_return (0, "bad magic `%s'", pm->file_name); pm->flags &= ~(MPCAP_FLAG_INIT_DONE); (void) munmap (pm->file_baseva, pm->max_file_size); goto done; } /* for the client's convenience, count packets; compute min/max sizes */ while (ph < (mpcap_packet_header_t *) pm->file_baseva + pm->max_file_size) { if (ph->n_packet_bytes_stored_in_file == 0) break; packets_read++; min_packet_bytes = ph->n_packet_bytes_stored_in_file < min_packet_bytes ? ph->n_packet_bytes_stored_in_file : min_packet_bytes; max_packet_bytes = ph->n_packet_bytes_stored_in_file > max_packet_bytes ? ph->n_packet_bytes_stored_in_file : max_packet_bytes; ph = (mpcap_packet_header_t *) (((u8 *) (ph)) + sizeof (*ph) + ph->n_packet_bytes_stored_in_file); } pm->packets_read = packets_read; pm->min_packet_bytes = min_packet_bytes; pm->max_packet_bytes = max_packet_bytes; done: if (fd >= 0) close (fd); return error; } /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */