[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <456f5c18-b1c6-77b3-58bd-6f954a83756c@gmail.com>
Date: Thu, 11 Jan 2018 20:31:31 -0800
From: John Fastabend <john.fastabend@...il.com>
To: Daniel Borkmann <daniel@...earbox.net>, borkmann@...earbox.net,
ast@...nel.org
Cc: netdev@...r.kernel.org
Subject: Re: [bpf-next PATCH v2 1/7] bpf: refactor sockmap sample program
update for arg parsing
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 <john.fastabend@...il.com>
>> ---
>> 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.
Powered by blists - more mailing lists