[Spice-devel] [PATCH v2] usbredirserver: add support for bind specific address

Frediano Ziglio fziglio at redhat.com
Mon Nov 20 13:30:10 UTC 2017


> 
> At 2017-11-17 19:23:30, "Frediano Ziglio" <fziglio at redhat.com> wrote:
> >> 
> >> From: Chen Hanxiao <chenhanxiao at gmail.com>
> >> 
> >> We bind our listen address to in6addr_any, which may be
> >> unsecure with multi network cards that belong to
> >> internal or external networks.
> >> 
> >> This patch introduces option -4 and -6 to bind a specific
> >> address.
> >> 
> >> Signed-off-by: Chen Hanxiao <chenhanxiao at gmail.com>
> >> ---
> >> v2:
> >>   replace strerror with perror
> >>   fix some copy-paste errors
> >> 
> >>  usbredirserver/usbredirserver.1 |  3 +-
> >>  usbredirserver/usbredirserver.c | 63
> >>  ++++++++++++++++++++++++++++++++++-------
> >>  2 files changed, 54 insertions(+), 12 deletions(-)
> >> 
> >> diff --git a/usbredirserver/usbredirserver.1
> >> b/usbredirserver/usbredirserver.1
> >> index e857190..8bbce07 100644
> >> --- a/usbredirserver/usbredirserver.1
> >> +++ b/usbredirserver/usbredirserver.1
> >> @@ -3,7 +3,8 @@
> >>  usbredirserver \- exporting an USB device for use from another (virtual)
> >>  machine
> >>  .SH SYNOPSIS
> >>  .B usbredirserver
> >> -[\fI-p|--port <port>\fR] [\fI-v|--verbose <0-5>\fR]
> >> \fI<busnum-devnum|vendorid:prodid>\fR
> >> +[\fI-p|--port <port>\fR] [\fI-v|--verbose <0-5>\fR] [\fI-4 <ipv4_addr|I-6
> >> <ipv6_addr>]
> >> +\fI<busnum-devnum|vendorid:prodid>\fR
> >>  .SH DESCRIPTION
> >>  usbredirserver is a small standalone server for exporting an USB device
> >>  for
> >>  use from another (virtual) machine through the usbredir protocol.
> >> diff --git a/usbredirserver/usbredirserver.c
> >> b/usbredirserver/usbredirserver.c
> >> index 13965dc..e2841b2 100644
> >> --- a/usbredirserver/usbredirserver.c
> >> +++ b/usbredirserver/usbredirserver.c
> >> @@ -36,6 +36,7 @@
> >>  #include <sys/time.h>
> >>  #include <netdb.h>
> >>  #include <netinet/in.h>
> >> +#include <arpa/inet.h>
> >>  #include "usbredirhost.h"
> >>  
> >>  
> >> @@ -49,6 +50,8 @@ static struct usbredirhost *host;
> >>  static const struct option longopts[] = {
> >>      { "port", required_argument, NULL, 'p' },
> >>      { "verbose", required_argument, NULL, 'v' },
> >> +    { "ipv4", required_argument, NULL, '4' },
> >> +    { "ipv6", required_argument, NULL, '6' },
> >>      { "help", no_argument, NULL, 'h' },
> >>      { NULL, 0, NULL, 0 }
> >>  };
> >> @@ -93,7 +96,9 @@ static int usbredirserver_write(void *priv, uint8_t
> >> *data,
> >> int count)
> >>  static void usage(int exit_code, char *argv0)
> >>  {
> >>      fprintf(exit_code? stderr:stdout,
> >> -        "Usage: %s [-p|--port <port>] [-v|--verbose <0-5>]
> >> <busnum-devnum|vendorid:prodid>\n",
> >> +        "Usage: %s [-p|--port <port>] [-v|--verbose <0-5>] "
> >> +        "[[-4|--ipv4 ipaddr]|[-6|--ipv6 ipaddr]] "
> >> +        "<busnum-devnum|vendorid:prodid>\n",
> >>          argv0);
> >>      exit(exit_code);
> >>  }
> >> @@ -198,11 +203,13 @@ int main(int argc, char *argv[])
> >>      int usbvendor  = -1;
> >>      int usbproduct = -1;
> >>      int on = 1;
> >> +    char *ipv4_addr = NULL, *ipv6_addr = NULL;
> >> +    struct sockaddr_in serveraddr4;
> >>      struct sockaddr_in6 serveraddr;
> >
> >Would not be better to have a sort of
> >
> >union {
> >   struct sockaddr_in v4;
> >   struct sockaddr_in6 v6;
> >} serveraddr;
> >
> >Here? This would allow some code to be reused (like memset and bind part).
> >
> 
> Nice catch.
> I'll update in v3.
> Thanks for your advice.
> 
> Regards,
> - Chen
> 

Acked v3.
Don't know why didn't arrive on my e-mail.

Frediano


More information about the Spice-devel mailing list