pg: don't leak open files in packet-generator 61/22361/2
authorChristian E. Hopps <chopps@chopps.org>
Fri, 27 Sep 2019 18:35:32 +0000 (14:35 -0400)
committerDamjan Marion <dmarion@me.com>
Tue, 17 Dec 2019 18:40:14 +0000 (18:40 +0000)
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

src/vnet/pg/cli.c
src/vppinfra/pcap_funcs.h

index c43ff90..f78bb37 100644 (file)
@@ -93,7 +93,10 @@ pg_capture (pg_capture_args_t * a)
 
   pi = pool_elt_at_index (pg->interfaces, a->dev_instance);
   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));
+  pi->pcap_main.file_descriptor = -1;
 
   if (a->is_enabled == 0)
     return 0;
index a3a3072..125c3bd 100644 (file)
@@ -17,6 +17,7 @@
 #define included_vppinfra_pcap_funcs_h
 
 /** Write out data to output file. */
+clib_error_t *pcap_close (pcap_main_t * pm);
 clib_error_t *pcap_write (pcap_main_t * pm);
 
 /** Read data from file. */