lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180111211005.c6gb5ktuc4gupibl@kafai-mbp.dhcp.thefacebook.com>
Date:   Thu, 11 Jan 2018 13:10:05 -0800
From:   Martin KaFai Lau <kafai@...com>
To:     John Fastabend <john.fastabend@...il.com>
CC:     <borkmann@...earbox.net>, <ast@...nel.org>,
        <netdev@...r.kernel.org>
Subject: Re: [bpf-next PATCH v2 5/7] bpf: sockmap sample add base test
 without any BPF for comparison

On Wed, Jan 10, 2018 at 10:40:11AM -0800, John Fastabend wrote:
> Add a base test that does not use BPF hooks to test baseline case.
> 
> Signed-off-by: John Fastabend <john.fastabend@...il.com>
> ---
>  samples/sockmap/sockmap_user.c |   26 +++++++++++++++++++++-----
>  1 file changed, 21 insertions(+), 5 deletions(-)
> 
> diff --git a/samples/sockmap/sockmap_user.c b/samples/sockmap/sockmap_user.c
> index 812fc7e..eb19d14 100644
> --- a/samples/sockmap/sockmap_user.c
> +++ b/samples/sockmap/sockmap_user.c
> @@ -285,18 +285,24 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt,
>  
>  static float giga = 1000000000;
>  
> -static int sendmsg_test(int iov_count, int iov_buf, int cnt, int verbose)
> +static int sendmsg_test(int iov_count, int iov_buf, int cnt,
> +			int verbose, bool base)
>  {
> -	int txpid, rxpid, err = 0;
> +	float sent_Bps = 0, recvd_Bps = 0;
> +	int rx_fd, txpid, rxpid, err = 0;
>  	struct msg_stats s = {0};
>  	int status;
> -	float sent_Bps = 0, recvd_Bps = 0;
>  
>  	errno = 0;
>  
> +	if (base)
> +		rx_fd = p1;
> +	else
> +		rx_fd = p2;
> +
>  	rxpid = fork();
>  	if (rxpid == 0) {
> -		err = msg_loop(p2, iov_count, iov_buf, cnt, &s, false);
> +		err = msg_loop(rx_fd, iov_count, iov_buf, cnt, &s, false);
I am likely missing something.  After receiving from p1, should the
base-line case also send to c2 which then will be received by p2?

>  		if (err)
>  			fprintf(stderr,
>  				"msg_loop_rx: iov_count %i iov_buf %i cnt %i err %i\n",
> @@ -425,6 +431,7 @@ static int forever_ping_pong(int rate, int verbose)
>  enum {
>  	PING_PONG,
>  	SENDMSG,
> +	BASE,
>  };
>  
>  int main(int argc, char **argv)
> @@ -463,6 +470,8 @@ int main(int argc, char **argv)
>  				test = PING_PONG;
>  			} else if (memcmp(optarg, "sendmsg", 7) == 0) {
>  				test = SENDMSG;
> +			} else if (memcmp(optarg, "base", 4) == 0) {
> +				test = BASE;
>  			} else {
>  				usage(argv);
>  				return -1;
> @@ -488,6 +497,10 @@ int main(int argc, char **argv)
>  	/* catch SIGINT */
>  	signal(SIGINT, running_handler);
>  
> +	/* If base test skip BPF setup */
> +	if (test == BASE)
> +		goto run;
> +
>  	if (load_bpf_file(filename)) {
>  		fprintf(stderr, "load_bpf_file: (%s) %s\n",
>  			filename, strerror(errno));
> @@ -519,6 +532,7 @@ int main(int argc, char **argv)
>  		return err;
>  	}
>  
> +run:
>  	err = sockmap_init_sockets();
>  	if (err) {
>  		fprintf(stderr, "ERROR: test socket failed: %d\n", err);
> @@ -528,7 +542,9 @@ int main(int argc, char **argv)
>  	if (test == PING_PONG)
>  		err = forever_ping_pong(rate, verbose);
>  	else if (test == SENDMSG)
> -		err = sendmsg_test(iov_count, length, rate, verbose);
> +		err = sendmsg_test(iov_count, length, rate, verbose, false);
> +	else if (test == BASE)
> +		err = sendmsg_test(iov_count, length, rate, verbose, true);
>  	else
>  		fprintf(stderr, "unknown test\n");
>  out:
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ