pg: don't leak open files in packet-generator

Fix pg code to close it's open file descriptors before zero'ing the
pcap_main structure for re-use.

Ticket: VPP-1780
Type: fix
Signed-off-by: Christian E. Hopps <chopps@chopps.org>
Change-Id: I32945c6476ae83b8d210ee67ac78db3e8f786f46
(cherry picked from commit 19871f25394fa9a4bfb55006092cbcc28b446c04)
This commit is contained in:
Christian E. Hopps
2019-09-27 14:35:32 -04:00
committed by Andrew Yourtchenko
parent 99e0ee56eb
commit c7e6b50fdd
2 changed files with 4 additions and 0 deletions

View File

@ -93,7 +93,10 @@ pg_capture (pg_capture_args_t * a)
pi = pool_elt_at_index (pg->interfaces, a->dev_instance); pi = pool_elt_at_index (pg->interfaces, a->dev_instance);
vec_free (pi->pcap_file_name); vec_free (pi->pcap_file_name);
if ((pi->pcap_main.flags & PCAP_MAIN_INIT_DONE))
pcap_close (&pi->pcap_main);
clib_memset (&pi->pcap_main, 0, sizeof (pi->pcap_main)); clib_memset (&pi->pcap_main, 0, sizeof (pi->pcap_main));
pi->pcap_main.file_descriptor = -1;
if (a->is_enabled == 0) if (a->is_enabled == 0)
return 0; return 0;

View File

@ -17,6 +17,7 @@
#define included_vppinfra_pcap_funcs_h #define included_vppinfra_pcap_funcs_h
/** Write out data to output file. */ /** Write out data to output file. */
clib_error_t *pcap_close (pcap_main_t * pm);
clib_error_t *pcap_write (pcap_main_t * pm); clib_error_t *pcap_write (pcap_main_t * pm);
/** Read data from file. */ /** Read data from file. */