Browse Source

Reorder Linux TAP link sequence

This corrects the flow for bringing up a TAP device under Linux.

Closes #1314
pull/2/head
Jonathon Fernyhough 5 years ago
parent
commit
9374e45449
No known key found for this signature in database
GPG Key ID: 9C08A255442FAFF0
  1. 13
      osdep/LinuxEthernetTap.cpp

13
osdep/LinuxEthernetTap.cpp

@ -207,12 +207,6 @@ LinuxEthernetTap::LinuxEthernetTap(
printf("WARNING: ioctl() failed setting up Linux tap device (bring interface up)\n");
return;
}
ifr.ifr_flags |= IFF_UP;
if (ioctl(sock,SIOCSIFFLAGS,(void *)&ifr) < 0) {
::close(sock);
printf("WARNING: ioctl() failed setting up Linux tap device (bring interface up)\n");
return;
}
// Some kernel versions seem to require you to yield while the device comes up
// before they will accept MTU and MAC. For others it doesn't matter, but is
@ -235,6 +229,13 @@ LinuxEthernetTap::LinuxEthernetTap(
return;
}
ifr.ifr_flags |= IFF_UP;
if (ioctl(sock,SIOCSIFFLAGS,(void *)&ifr) < 0) {
::close(sock);
printf("WARNING: ioctl() failed setting up Linux tap device (bring interface up)\n");
return;
}
fcntl(_fd,F_SETFL,O_NONBLOCK);
::close(sock);

Loading…
Cancel
Save