--- net/tap-bsd.c.orig	2021-06-20 22:39:33 UTC
+++ net/tap-bsd.c
@@ -29,17 +29,21 @@
 #include "qemu/cutils.h"
 #include "qemu/error-report.h"
 
-#if defined(__NetBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
 #include <sys/ioctl.h>
 #include <net/if.h>
+#ifdef __DragonFly__
+#include <net/tap/if_tap.h>
+#else
 #include <net/if_tap.h>
 #endif
+#endif
 
 #if defined(__OpenBSD__)
 #include <sys/param.h>
 #endif
 
-#ifndef __FreeBSD__
+#if !(defined(__FreeBSD__) || defined(__DragonFly__))
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
              int vnet_hdr_required, int mq_required, Error **errp)
 {
@@ -111,7 +115,7 @@ int tap_open(char *ifname, int ifname_si
     return fd;
 }
 
-#else /* __FreeBSD__ */
+#else /* __FreeBSD__||__DragonFly__ */
 
 #define PATH_NET_TAP "/dev/tap"
 
@@ -205,7 +209,7 @@ error:
     close(fd);
     return -1;
 }
-#endif /* __FreeBSD__ */
+#endif /* __FreeBSD__||__DragonFly__ */
 
 void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp)
 {
