[EXT] [RFT] graph: fix pcapng file support

Amit Prakash Shukla amitprakashs at marvell.com
Wed May 31 10:27:09 CEST 2023



> -----Original Message-----
> From: Stephen Hemminger <stephen at networkplumber.org>
> Sent: Wednesday, May 31, 2023 12:39 AM
> To: dev at dpdk.org
> Cc: Stephen Hemminger <stephen at networkplumber.org>; Jerin Jacob
> Kollanukkaran <jerinj at marvell.com>; Kiran Kumar Kokkilagadda
> <kirankumark at marvell.com>; Nithin Kumar Dabilpuram
> <ndabilpuram at marvell.com>
> Subject: [EXT] [RFT] graph: fix pcapng file support
> 
> External Email
> 
> ----------------------------------------------------------------------
> The interface to rte_pcapng changed in last release so that the interfaces
> used need to be added to the pcapng file via the API. If this step is missing
> the pcapng file will not be valid and can't be read by wireshark etc.
> 
> I don't have setup to test graph, so needs a validation test.
> 
> Fixes: d1da6d0d04c7 ("pcapng: require per-interface information")
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
>  lib/graph/graph_pcap.c | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/graph/graph_pcap.c b/lib/graph/graph_pcap.c index
> 6c433300290b..eff7b2d060ed 100644
> --- a/lib/graph/graph_pcap.c
> +++ b/lib/graph/graph_pcap.c
> @@ -7,6 +7,7 @@
>  #include <stdlib.h>
>  #include <unistd.h>
> 
> +#include <rte_ethdev.h>
>  #include <rte_mbuf.h>
>  #include <rte_pcapng.h>
> 
> @@ -80,7 +81,8 @@ graph_pcap_default_path_get(char **dir_path)  int
> graph_pcap_file_open(const char *filename)  {
> -	int fd;
> +	int fd, ret;
> +	uint16_t portid;
>  	char file_name[RTE_GRAPH_PCAP_FILE_SZ];
>  	char *pcap_dir;
> 
> @@ -114,6 +116,18 @@ graph_pcap_file_open(const char *filename)
>  		return -1;
>  	}
> 
> +	/* Add the configured interfaces as possible capture ports */
> +	RTE_ETH_FOREACH_DEV(portid) {
> +		ret = rte_pcapng_add_interface(pcapng_fd, portid,
> +					       NULL, NULL, NULL);
> +		if (ret < 0) {
> +			graph_err("Graph rte_pcapng_add_interface failed:
> %d",
> +				 ret);

In error case, pcapng_fd shall be closed. rte_pcapng_close(pcapng_fd).

> +			close(fd);
> +			return -1;
> +		}
> +	}
> +
>  done:
>  	return 0;
>  }
> --
> 2.39.2

with above change, looks good to me.
Acked-by: Amit Prakash Shukla <amitprakashs at marvell.com>


More information about the dev mailing list