diff --git a/drivers/virtio-blk.cc b/drivers/virtio-blk.cc
index 47ef7e16743882d82fe20b4e816178cde8cff66a..ac228541bd8055bb08db526900f2023ff4b86393 100644
--- a/drivers/virtio-blk.cc
+++ b/drivers/virtio-blk.cc
@@ -153,22 +153,6 @@ bool virtio_blk::read_config()
     return true;
 }
 
-struct virtio_blk_req {
-    virtio_blk_req(void* req = nullptr, virtio_blk::virtio_blk_res* res = nullptr, struct bio* b=nullptr)
-                   :req_header(req), status(res), bio(b) {};
-    ~virtio_blk_req() {
-        if (req_header) delete reinterpret_cast<virtio_blk::virtio_blk_outhdr*>(req_header);
-        if (status) delete status;
-    }
-
-
-    void* req_header;
-    virtio_blk::virtio_blk_res* status;
-    struct bio* bio;
-};
-
-
-
 void virtio_blk::response_worker() {
     vring* queue = get_virt_queue(0);
     virtio_blk_req* req;
diff --git a/drivers/virtio-blk.hh b/drivers/virtio-blk.hh
index 1cec6fa405473031cd2a333d800ee6c87308a808..f61ca948bc12e5f8daaa82f7c3a197eaf05088e0 100644
--- a/drivers/virtio-blk.hh
+++ b/drivers/virtio-blk.hh
@@ -159,6 +159,19 @@ namespace virtio {
         static hw_driver* probe(hw_device* dev);
     private:
 
+        struct virtio_blk_req {
+            virtio_blk_req(void* req = nullptr, virtio_blk_res* res = nullptr, struct bio* b=nullptr)
+                           :req_header(req), status(res), bio(b) {};
+            ~virtio_blk_req() {
+                if (req_header) delete reinterpret_cast<virtio_blk_outhdr*>(req_header);
+                if (status) delete status;
+            }
+
+            void* req_header;
+            virtio_blk_res* status;
+            struct bio* bio;
+        };
+
         std::string _driver_name;
         virtio_blk_config _config;
 
diff --git a/drivers/virtio-net.cc b/drivers/virtio-net.cc
index 1c26325a234584085482b7299c134527f01c600c..5cac3f7c6e8065cae56f48b3b66a565483fece6c 100644
--- a/drivers/virtio-net.cc
+++ b/drivers/virtio-net.cc
@@ -196,17 +196,6 @@ namespace virtio {
         return true;
     }
 
-    struct virtio_net_req {
-        struct virtio_net::virtio_net_hdr_mrg_rxbuf mhdr;
-        struct free_deleter {
-            void operator()(struct mbuf *m) {m_freem(m);}
-        };
-
-        std::unique_ptr<struct mbuf, free_deleter> um;
-
-        virtio_net_req() {memset(&mhdr,0,sizeof(mhdr));};
-    };
-
     void virtio_net::receiver() {
 
         while (1) {
diff --git a/drivers/virtio-net.hh b/drivers/virtio-net.hh
index 166baedbb3f84ab01bfdf63cd1b6a0a34ed6b2b2..7a1bf9b52d75f71640019c41bf35775094c10e01 100644
--- a/drivers/virtio-net.hh
+++ b/drivers/virtio-net.hh
@@ -30,6 +30,8 @@
 #include <bsd/porting/netport.h>
 #include <bsd/sys/net/if_var.h>
 #include <bsd/sys/net/if.h>
+#define _KERNEL
+#include <bsd/sys/sys/mbuf.h>
 
 #include "drivers/virtio.hh"
 #include "drivers/pci-device.hh"
@@ -234,6 +236,17 @@ namespace virtio {
 
     private:
 
+        struct virtio_net_req {
+            struct virtio_net::virtio_net_hdr_mrg_rxbuf mhdr;
+            struct free_deleter {
+                void operator()(struct mbuf *m) {m_freem(m);}
+            };
+
+            std::unique_ptr<struct mbuf, free_deleter> um;
+
+            virtio_net_req() {memset(&mhdr,0,sizeof(mhdr));};
+        };
+
         std::string _driver_name;
         virtio_net_config _config;
         bool _mergeable_bufs;