From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Fastabend Subject: Re: [bpf-next PATCH v2 1/7] bpf: refactor sockmap sample program update for arg parsing Date: Thu, 11 Jan 2018 20:31:31 -0800 Message-ID: <456f5c18-b1c6-77b3-58bd-6f954a83756c@gmail.com> References: <20180110183600.5930.68261.stgit@john-Precision-Tower-5810> <20180110183904.5930.42185.stgit@john-Precision-Tower-5810> <86c79df5-5b5e-a996-41d1-48b7aa960c02@iogearbox.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org To: Daniel Borkmann , borkmann@iogearbox.net, ast@kernel.org Return-path: Received: from mail-pg0-f68.google.com ([74.125.83.68]:35888 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932753AbeALEbp (ORCPT ); Thu, 11 Jan 2018 23:31:45 -0500 Received: by mail-pg0-f68.google.com with SMTP id j2so3831776pgv.3 for ; Thu, 11 Jan 2018 20:31:45 -0800 (PST) In-Reply-To: <86c79df5-5b5e-a996-41d1-48b7aa960c02@iogearbox.net> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 01/10/2018 05:25 PM, Daniel Borkmann wrote: > On 01/10/2018 07:39 PM, John Fastabend wrote: >> sockmap sample program takes arguments from cmd line but it reads them >> in using offsets into the array. Because we want to add more arguments >> in the future lets do proper argument handling. >> >> Also refactor code to pull apart sock init and ping/pong test. This >> allows us to add new tests in the future. >> >> Signed-off-by: John Fastabend >> --- >> samples/sockmap/sockmap_user.c | 142 +++++++++++++++++++++++++++++----------- >> 1 file changed, 103 insertions(+), 39 deletions(-) > [...] >> >> /* Accept Connecrtions */ >> @@ -149,23 +177,32 @@ static int sockmap_test_sockets(int rate, int dot) >> goto out; >> } >> >> - max_fd = p2; >> - timeout.tv_sec = 10; >> - timeout.tv_usec = 0; >> - >> printf("connected sockets: c1 <-> p1, c2 <-> p2\n"); >> printf("cgroups binding: c1(%i) <-> s1(%i) - - - c2(%i) <-> s2(%i)\n", >> c1, s1, c2, s2); >> +out: >> + return err; > > Maybe rather than setting err and goto out where we now just return > err anyway, return from those places directly. > Perhaps but how about doing this in another patch. This patch is not changing the goto err pattern. I can send a follow up. >> +} >> + >> +static int forever_ping_pong(int rate, int verbose) >> +{ >> + struct timeval timeout; >> + char buf[1024] = {0}; >> + int sc; >> + >> + timeout.tv_sec = 10; >> + timeout.tv_usec = 0; >> >> /* Ping/Pong data from client to server */ >> sc = send(c1, buf, sizeof(buf), 0); >> if (sc < 0) { >> perror("send failed()\n"); >> - goto out; >> + return sc; >> } >> >> do { >> - int s, rc, i; >> + int s, rc, i, max_fd = p2; >> + fd_set w; >> >> /* FD sets */ >> FD_ZERO(&w); > [...] >> - err = sockmap_test_sockets(rate, dot); >> + err = sockmap_init_sockets(); >> if (err) { >> fprintf(stderr, "ERROR: test socket failed: %d\n", err); >> - return err; >> + goto out; >> } >> - return 0; >> + >> + err = forever_ping_pong(rate, verbose); >> +out: >> + close(s1); >> + close(s2); >> + close(p1); >> + close(p2); >> + close(c1); >> + close(c2); >> + return err; >> } >> >> void running_handler(int a) >> { >> running = 0; >> + printf("\n"); > > Do we need this out of the sighandler instead of e.g. main loop when > we break out? Not really let me just remove it. I'll do another patch with documentation and fixup error messages so we don't have this issue. I agree its a bit clumsy.