diff options
Diffstat (limited to 'sysutils/libvirt/patches/patch-aa')
-rw-r--r-- | sysutils/libvirt/patches/patch-aa | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/sysutils/libvirt/patches/patch-aa b/sysutils/libvirt/patches/patch-aa deleted file mode 100644 index 9dcf4e37412..00000000000 --- a/sysutils/libvirt/patches/patch-aa +++ /dev/null @@ -1,175 +0,0 @@ -$NetBSD: patch-aa,v 1.1.1.1 2011/07/26 06:05:00 agc Exp $ - -bridge is only compilable on Linux right now - ---- src/util/bridge.c 2011/07/17 17:36:59 1.1 -+++ src/util/bridge.c 2011/07/17 17:37:20 -@@ -39,10 +39,21 @@ - # include <paths.h> - # include <sys/wait.h> - -+#if defined(__linux__) - # include <linux/param.h> /* HZ */ - # include <linux/sockios.h> /* SIOCBRADDBR etc. */ - # include <linux/if_bridge.h> /* SYSFS_BRIDGE_ATTR */ - # include <linux/if_tun.h> /* IFF_TUN, IFF_NO_PI */ -+#elif defined(__NetBSD__) -+# include <sys/param.h> -+# include <sys/sockio.h> -+# include <net/if.h> -+# include <net/if_tap.h> -+# include <net/if_ether.h> -+# include <net/if_bridgevar.h> -+# include <net/if_tun.h> -+#endif -+ - # include <net/if_arp.h> /* ARPHRD_ETHER */ - - # include "internal.h" -@@ -309,6 +320,7 @@ - if (virStrcpyStatic(ifr.ifr_name, ifname) == NULL) - return EINVAL; - -+#ifdef __linux__ - /* To fill ifr.ifr_hdaddr.sa_family field */ - if (ioctl(ctl->fd, SIOCGIFHWADDR, &ifr) != 0) - return errno; -@@ -316,6 +328,15 @@ - memcpy(ifr.ifr_hwaddr.sa_data, macaddr, VIR_MAC_BUFLEN); - - return ioctl(ctl->fd, SIOCSIFHWADDR, &ifr) == 0 ? 0 : errno; -+#elif defined(__NetBSD__) -+ /* To fill ifr.ifr_hdaddr.sa_family field */ -+ if (ioctl(ctl->fd, SIOCGIFADDR, &ifr) != 0) -+ return errno; -+ -+ memcpy(ifr.ifr_addr.sa_data, macaddr, VIR_MAC_BUFLEN); -+ -+ return ioctl(ctl->fd, SIOCSIFADDR, &ifr) == 0 ? 0 : errno; -+#endif - } - - /** -@@ -459,6 +480,10 @@ - } - # endif - -+#ifndef USE_ARG -+#define USE_ARG(x) /*LINTED*/(void)&(x) -+#endif -+ - /** - * brAddTap: - * @ctl: bridge control pointer -@@ -487,6 +512,7 @@ - bool up, - int *tapfd) - { -+#if defined(__linux__) - int fd; - struct ifreq ifr; - -@@ -549,11 +575,68 @@ - VIR_FORCE_CLOSE(fd); - - return errno; -+#elif defined(__NetBSD__) -+ int fd; -+ struct ifreq ifr; -+ -+ USE_ARG(vnet_hdr); -+ if (!ctl || !ctl->fd || !bridge || !ifname) -+ return EINVAL; -+ -+ if ((fd = open("/dev/tun", O_RDWR)) < 0) -+ return errno; -+ -+ memset(&ifr, 0, sizeof(ifr)); -+ -+ if (ioctl(fd, TAPGIFNAME, &ifr) < 0) -+ goto error; -+ -+ if (virStrcpyStatic(ifr.ifr_name, *ifname) == NULL) { -+ errno = EINVAL; -+ goto error; -+ } -+ -+ if (ioctl(fd, TUNSIFHEAD, &ifr) < 0) -+ goto error; -+ -+ /* We need to set the interface MAC before adding it -+ * to the bridge, because the bridge assumes the lowest -+ * MAC of all enslaved interfaces & we don't want it -+ * seeing the kernel allocate random MAC for the TAP -+ * device before we set our static MAC. -+ */ -+ if ((errno = ifSetInterfaceMac(ctl, ifr.ifr_name, macaddr))) -+ goto error; -+ /* We need to set the interface MTU before adding it -+ * to the bridge, because the bridge will have its -+ * MTU adjusted automatically when we add the new interface. -+ */ -+ if ((errno = brSetInterfaceMtu(ctl, bridge, ifr.ifr_name))) -+ goto error; -+ if ((errno = brAddInterface(ctl, bridge, ifr.ifr_name))) -+ goto error; -+ if (up && ((errno = brSetInterfaceUp(ctl, ifr.ifr_name, 1)))) -+ goto error; -+ VIR_FREE(*ifname); -+ if (!(*ifname = strdup(ifr.ifr_name))) -+ goto error; -+ if (tapfd) -+ *tapfd = fd; -+ else -+ VIR_FORCE_CLOSE(fd); -+ return 0; -+ -+ error: -+ VIR_FORCE_CLOSE(fd); -+ -+ return errno; -+#endif - } - - int brDeleteTap(brControl *ctl, - const char *ifname) - { -+#if defined(__linux__) - struct ifreq try; - int fd; - -@@ -580,6 +663,34 @@ - VIR_FORCE_CLOSE(fd); - - return errno; -+#elif defined(__NetBSD__) -+ struct ifreq try; -+ int fd; -+ -+ if (!ctl || !ctl->fd || !ifname) -+ return EINVAL; -+ -+ if ((fd = open("/dev/tun", O_RDWR)) < 0) -+ return errno; -+ -+ memset(&try, 0, sizeof(try)); -+ if (ioctl(fd, TAPGIFNAME, &try) < 0) -+ goto error; -+ -+ -+ if (virStrcpyStatic(try.ifr_name, ifname) == NULL) { -+ errno = EINVAL; -+ goto error; -+ } -+ -+ if (ioctl(fd, TUNSIFHEAD, &try) < 0) -+ goto error; -+ -+ error: -+ VIR_FORCE_CLOSE(fd); -+ -+ return errno; -+#endif - } - - |