From 1a487cec005de9f77cb9d1a2492681af293f73fb Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Mon, 3 Aug 2009 16:11:43 -0700 Subject: [PATCH] netdev-linux: Fix tap device using wrong FD. Tap devices were doing ioctls on the AF_INET socket, instead of the FD opened on the tap device. --- lib/netdev-linux.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index 5abf6e16..50a0d2da 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -239,9 +239,11 @@ netdev_linux_open(const char *name, char *suffix, int ethertype, /* Create tap device. */ ifr.ifr_flags = IFF_TAP | IFF_NO_PI; - error = netdev_linux_do_ioctl(&netdev->netdev, &ifr, - TUNSETIFF, "TUNSETIFF"); - if (error) { + strncpy(ifr.ifr_name, suffix, sizeof ifr.ifr_name); + if (ioctl(netdev->tap_fd, TUNSETIFF, &ifr) == -1) { + VLOG_WARN("%s: creating tap device failed: %s", suffix, + strerror(errno)); + error = errno; goto error; } -- 2.30.2