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.fastab...@gmail.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.

Reply via email to