give some useful error messages when tap open
PATCH 1/1 give some useful error messages when tap open
From: Michael Tokarev <[email protected]>
In net/tap-linux.c, when manipulation of /dev/net/tun fails, it prints (with fprintf) something like this:
warning: could not open /dev/net/tun: no virtual network emulation
this has 2 issues:
1) it is not a warning really, it's a fatal error (kvm exits after
that),
2) there's no indication as of what's actually wrong: printing errno there is helpful.
The patch below removes the "warning" prefix, uses %m (since it's linux, %m is available as format modifier), and changes fprintf() to %qemu_error(). Now it prints something like this instead:
could not configure /dev/net/tun: Device or resource busy
(there are 2 messages like that in the same function)
This fixes Debian bug #578154, see
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578154
---
IMPORTANT: this an old fix that got forgotten, probably because it was
submitted in the middle of thread. I've just compiled tested it.
net/tap-linux.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
net/tap-linux.c +5 -3
@@ -33,14 +33,16 @@#include "qemu-common.h" #include "qemu-error.h" +#define PATH_NET_TUN "/dev/net/tun" +int tap_open (char *ifname,int ifname_size,int *vnet_hdr,int vnet_hdr_required) {struct ifreq ifr;int fd, ret; -TFR (fd =open ("/dev/net/tun" ,O_RDWR )); +TFR (fd =open (PATH_NET_TUN ,O_RDWR ));if (fd <0 ) { -fprintf (stderr,"warning: could not open /dev/net/tun: no virtual network emulation\n" ); +error_report ("could not open %s: %m" ,PATH_NET_TUN );return -1 ; }memset (&ifr,0 ,sizeof (ifr));
@@ -71,7 +73,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_requiredpstrcpy (ifr.ifr_name,IFNAMSIZ ,"tap%d" ); ret =ioctl (fd,TUNSETIFF , (void *) &ifr);if (ret !=0 ) { -fprintf (stderr,"warning: could not configure /dev/net/tun: no virtual network emulation\n" ); +error_report ("could not configure %s (%s): %m" ,PATH_NET_TUN , ifr.ifr_name);close (fd);return -1 ; }
Signature · 1 line
1.7.1.231.gd0b16
Quoted 7 lines · Luiz Capitulino
From: Michael Tokarev <[email protected]>
In
net/tap-linux.c, when manipulation of/dev/net/tunfails, it prints (with fprintf) something like this:warning: could not open
/dev/net/tun: no virtual network emulation
Quoted 8 lines
this has 2 issues:
1) it is not a warning really, it's a fatal error (kvm exits after
that),
2) there's no indication as of what's actually wrong: printing errno there is helpful.The patch below removes the "warning" prefix, uses %m (since it's linux, %m is available as format modifier), and changes
fprintf()to %qemu_error().
To error_report(), you mean.
Quoted 11 lines
Now it prints something like this instead:
could not configure
/dev/net/tun: Device or resource busy(there are 2 messages like that in the same function)
This fixes Debian bug #578154, see
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578154Signed-off-by Michael Tokarev <[email protected]>Signed-off-by Luiz Capitulino <[email protected]>
Looks good.
Quoted 15 lines · On Wed, 02 Jun 2010 20:26:58 +0200 Markus Armbruster <[email protected]> wrote:
Quoted 13 lines · Luiz Capitulino
From: Michael Tokarev <[email protected]>
In
net/tap-linux.c, when manipulation of/dev/net/tunfails, it prints (with fprintf) something like this:warning: could not open
/dev/net/tun: no virtual network emulationthis has 2 issues:
1) it is not a warning really, it's a fatal error (kvm exits after
that),
2) there's no indication as of what's actually wrong: printing errno there is helpful.
Quoted 4 lines
Quoted 2 lines
The patch below removes the "warning" prefix, uses %m (since it's linux, %m is available as format modifier), and changes
fprintf()to %qemu_error().To
error_report(), you mean.
It's the original commit log.. Should this be fixed? If so, Michael,
could you resend?
Quoted 15 lines
Quoted 5 lines
Now it prints something like this instead:
could not configure
/dev/net/tun: Device or resource busyQuoted 7 lines
(there are 2 messages like that in the same function)
This fixes Debian bug #578154, see
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578154Signed-off-by Michael Tokarev <[email protected]>Signed-off-by Luiz Capitulino <[email protected]>Looks good.
Quoted 18 lines · Luiz Capitulino
Quoted 15 lines · On Wed, 02 Jun 2010 20:26:58 +0200 Markus Armbruster <[email protected]> wrote:
Quoted 13 lines · Luiz Capitulino
From: Michael Tokarev <[email protected]>
In
net/tap-linux.c, when manipulation of/dev/net/tunfails, it prints (with fprintf) something like this:warning: could not open
/dev/net/tun: no virtual network emulationthis has 2 issues:
1) it is not a warning really, it's a fatal error (kvm exits after
that),
2) there's no indication as of what's actually wrong: printing errno there is helpful.
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
The patch below removes the "warning" prefix, uses %m (since it's linux, %m is available as format modifier), and changes
fprintf()to %qemu_error().To
error_report(), you mean.It's the original commit log.. Should this be fixed? If so, Michael,
could you resend?
Or maybe it could be fixed up on commit.
[...]
Anthony Liguori
AppliedQuoted 19 lines · Luiz Capitulino
From: Michael Tokarev<[email protected]>
In
net/tap-linux.c, when manipulation of/dev/net/tunfails, it prints (with fprintf) something like this:warning: could not open
/dev/net/tun: no virtual network emulationthis has 2 issues:
1) it is not a warning really, it's a fatal error (kvm exits after
that),
2) there's no indication as of what's actually wrong: printing errno there is helpful.The patch below removes the "warning" prefix, uses %m (since it's linux, %m is available as format modifier), and changes
fprintf()to %qemu_error(). Now it prints something like this instead:could not configure
/dev/net/tun: Device or resource busy
Quoted 8 lines
(there are 2 messages like that in the same function)
This fixes Debian bug #578154, see
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578154Signed-off-by Michael Tokarev<[email protected]>Signed-off-by Luiz Capitulino<[email protected]>
Applied. Thanks.
Regards,
Anthony Liguori
Quoted 40 lines
---
IMPORTANT: this an old fix that got forgotten, probably because it was
submitted in the middle of thread. I've just compiled tested it.net/tap-linux.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)net/tap-linux.c +5
-3@@ -33,14 +33,16 @@#include "qemu-common.h" #include "qemu-error.h" +#define PATH_NET_TUN "/dev/net/tun" +int tap_open (char *ifname,int ifname_size,int *vnet_hdr,int vnet_hdr_required) {struct ifreq ifr;int fd, ret; -TFR (fd =open ("/dev/net/tun" ,O_RDWR )); +TFR (fd =open (PATH_NET_TUN ,O_RDWR ));if (fd<0 ) { -fprintf (stderr,"warning: could not open /dev/net/tun: no virtual network emulation\n" ); +error_report ("could not open %s: %m" ,PATH_NET_TUN );return -1 ; }memset (&ifr,0 ,sizeof (ifr));@@ -71,7 +73,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_requiredpstrcpy (ifr.ifr_name,IFNAMSIZ ,"tap%d" ); ret =ioctl (fd,TUNSETIFF , (void *)&ifr);if (ret !=0 ) { -fprintf (stderr,"warning: could not configure /dev/net/tun: no virtual network emulation\n" ); +error_report ("could not configure %s (%s): %m" ,PATH_NET_TUN , ifr.ifr_name);close (fd);return -1 ; }