Re: [Qemu-devel] [PATCH] tap-bsd: use user-specified tap device if it already exists

2015-11-06 Thread Michael Tokarev
Applied to -trivial, thank you!

/mjt



Re: [Qemu-devel] [PATCH] tap-bsd: use user-specified tap device if it already exists

2015-10-27 Thread Roger Pau Monné
Ccing the maintainers.

El 23/10/15 a les 17.53, Ed Maste ha escrit:
> Acked-by: Roger Pau Monné 
> Signed-off-by: Ed Maste 
> ---
> As an aside this was reviewed on FreeBSD's Phabricator here:
> https://reviews.freebsd.org/D3969
> 
> Resend with Signed-off-by.
> 
>  net/tap-bsd.c | 38 +-
>  1 file changed, 33 insertions(+), 5 deletions(-)
> 
> diff --git a/net/tap-bsd.c b/net/tap-bsd.c
> index 7028d9b..0103a97 100644
> --- a/net/tap-bsd.c
> +++ b/net/tap-bsd.c
> @@ -109,8 +109,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
>  
>  #define PATH_NET_TAP "/dev/tap"
>  
> -int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
> - int vnet_hdr_required, int mq_required, Error **errp)
> +static int tap_open_clone(char *ifname, int ifname_size, Error **errp)
>  {
>  int fd, s, ret;
>  struct ifreq ifr;
> @@ -126,7 +125,8 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
>  ret = ioctl(fd, TAPGIFNAME, (void *)&ifr);
>  if (ret < 0) {
>  error_setg_errno(errp, errno, "could not get tap interface name");
> -goto error;
> +close(fd);
> +return -1;
>  }
>  
>  if (ifname[0] != '\0') {
> @@ -135,19 +135,47 @@ int tap_open(char *ifname, int ifname_size, int 
> *vnet_hdr,
>  if (s < 0) {
>  error_setg_errno(errp, errno,
>   "could not open socket to set interface name");
> -goto error;
> +close(fd);
> +return -1;
>  }
>  ifr.ifr_data = ifname;
>  ret = ioctl(s, SIOCSIFNAME, (void *)&ifr);
>  close(s);
>  if (ret < 0) {
>  error_setg(errp, "could not set tap interface name");
> -goto error;
> +close(fd);
> +return -1;
>  }
>  } else {
>  pstrcpy(ifname, ifname_size, ifr.ifr_name);
>  }
>  
> +return fd;
> +}
> +
> +int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
> + int vnet_hdr_required, int mq_required, Error **errp)
> +{
> +int fd = -1;
> +
> +/* If the specified tap device already exists just use it. */
> +if (ifname[0] != '\0') {
> +char dname[100];
> +snprintf(dname, sizeof dname, "/dev/%s", ifname);
> +TFR(fd = open(dname, O_RDWR));
> +if (fd < 0 && errno != ENOENT) {
> +error_setg_errno(errp, errno, "could not open %s", dname);
> +return -1;
> +}
> +}
> +
> +if (fd < 0) {
> +/* Tap device not specified or does not exist. */
> +if ((fd = tap_open_clone(ifname, ifname_size, errp)) < 0) {
> +return -1;
> +}
> +}
> +
>  if (*vnet_hdr) {
>  /* BSD doesn't have IFF_VNET_HDR */
>  *vnet_hdr = 0;
> 




Re: [Qemu-devel] [PATCH] tap-bsd: use user-specified tap device if it already exists

2015-10-23 Thread Roger Pau Monné
El 23/10/15 a les 16.39, Ed Maste ha escrit:
> ---
> As an aside this was reviewed on FreeBSD's Phabricator here:
> https://reviews.freebsd.org/D3969

This is missing the SoB, but provided that's added:

Acked-by: Roger Pau Monné 

Thanks.