]> git.proxmox.com Git - mirror_qemu.git/commitdiff
tap: Permit incremental conversion of tap_open() to Error
authorMarkus Armbruster <armbru@redhat.com>
Fri, 15 May 2015 11:58:58 +0000 (13:58 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Wed, 27 May 2015 09:34:07 +0000 (10:34 +0100)
Convert the trivial ones immediately: tap-aix and tap-haiku.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1431691143-1015-11-git-send-email-armbru@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
net/tap-aix.c
net/tap-bsd.c
net/tap-haiku.c
net/tap-linux.c
net/tap-solaris.c
net/tap.c
net/tap_int.h

index 0a3d46158f89f40c6374f55c80c90299eb5c64a3..18fdbf3b21aadc11d4fa98d1ba191811fbfcbd19 100644 (file)
@@ -26,9 +26,9 @@
 #include <stdio.h>
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required)
+             int vnet_hdr_required, int mq_required, Error **errp)
 {
-    fprintf(stderr, "no tap on AIX\n");
+    error_setg(errp, "no tap on AIX");
     return -1;
 }
 
index 53cdd9f4e1d47d7405f39661562a0223e3176f04..bbbe446b1bdc34c8509cf7b45b4c8f78c5e242b4 100644 (file)
@@ -35,8 +35,9 @@
 
 #ifndef __FreeBSD__
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required)
+             int vnet_hdr_required, int mq_required, Error **errp)
 {
+    /* FIXME error_setg(errp, ...) on failure */
     int fd;
 #ifdef TAPGIFNAME
     struct ifreq ifr;
@@ -114,8 +115,9 @@ 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)
+             int vnet_hdr_required, int mq_required, Error **errp)
 {
+    /* FIXME error_setg(errp, ...) on failure */
     int fd, s, ret;
     struct ifreq ifr;
 
index 0905b2887d7b059c1bafb0cc84b9a4433f0e48b0..d18590c636987e817f17b677da50d7bcbeecf375 100644 (file)
@@ -26,9 +26,9 @@
 #include <stdio.h>
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required)
+             int vnet_hdr_required, int mq_required, Error **errp)
 {
-    fprintf(stderr, "no tap on Haiku\n");
+    error_setg(errp, "no tap on Haiku");
     return -1;
 }
 
index 6fa27442bc6d9a0ed7412e580c111ad8c1119751..be18382517a51b2134016d214ec8f768dbd474a6 100644 (file)
@@ -37,8 +37,9 @@
 #define PATH_NET_TUN "/dev/net/tun"
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required)
+             int vnet_hdr_required, int mq_required, Error **errp)
 {
+    /* FIXME error_setg(errp, ...) on failure */
     struct ifreq ifr;
     int fd, ret;
     int len = sizeof(struct virtio_net_hdr);
index 7839323e201a30a0d4bc6161b0ca7b312ba463b6..079046bab856a469f1c4a0c6980c7b196c6ab75b 100644 (file)
@@ -174,8 +174,9 @@ static int tap_alloc(char *dev, size_t dev_size)
 }
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required)
+             int vnet_hdr_required, int mq_required, Error **errp)
 {
+    /* FIXME error_setg(errp, ...) on failure */
     char  dev[10]="";
     int fd;
     if( (fd = tap_alloc(dev, sizeof(dev))) < 0 ){
index 93075c67e9d67243c59246b599508b6786ecd77e..362df4235f47436c0d67f563f529b259b74c2485 100644 (file)
--- a/net/tap.c
+++ b/net/tap.c
@@ -581,7 +581,7 @@ int net_init_bridge(const NetClientOptions *opts, const char *name,
 
 static int net_tap_init(const NetdevTapOptions *tap, int *vnet_hdr,
                         const char *setup_script, char *ifname,
-                        size_t ifname_sz, int mq_required)
+                        size_t ifname_sz, int mq_required, Error **errp)
 {
     Error *err = NULL;
     int fd, vnet_hdr_required;
@@ -595,8 +595,12 @@ static int net_tap_init(const NetdevTapOptions *tap, int *vnet_hdr,
     }
 
     TFR(fd = tap_open(ifname, ifname_sz, vnet_hdr, vnet_hdr_required,
-                      mq_required));
+                      mq_required, errp));
     if (fd < 0) {
+        /* FIXME drop when all tap_open() store an Error */
+        if (errp && !*errp) {
+            error_setg(errp, "can't open tap device");
+        }
         return -1;
     }
 
@@ -605,7 +609,7 @@ static int net_tap_init(const NetdevTapOptions *tap, int *vnet_hdr,
         strcmp(setup_script, "no") != 0) {
         launch_script(setup_script, ifname, fd, &err);
         if (err) {
-            error_report_err(err);
+            error_propagate(errp, err);
             close(fd);
             return -1;
         }
@@ -853,8 +857,9 @@ int net_init_tap(const NetClientOptions *opts, const char *name,
 
         for (i = 0; i < queues; i++) {
             fd = net_tap_init(tap, &vnet_hdr, i >= 1 ? "no" : script,
-                              ifname, sizeof ifname, queues > 1);
+                              ifname, sizeof ifname, queues > 1, &err);
             if (fd == -1) {
+                error_report_err(err);
                 return -1;
             }
 
index 6df271f8236f38120d17169e846fc1a9dc2d3b6f..d12a409967327b1b471c2e772ca474111d890226 100644 (file)
@@ -30,7 +30,7 @@
 #include "qapi-types.h"
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required);
+             int vnet_hdr_required, int mq_required, Error **errp);
 
 ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen);