+ if (new_style_driver && !looped) {
+ if (ioctl(ppp_dev_fd, PPPIOCDETACH) < 0) {
+ if (errno == ENOTTY) {
+ /* first version of new driver didn't have PPPIOCDETACH */
+ int flags;
+
+ close(ppp_dev_fd);
+ ppp_dev_fd = open("/dev/ppp", O_RDWR);
+ if (ppp_dev_fd < 0)
+ fatal("Couldn't reopen /dev/ppp: %m");
+ flags = fcntl(ppp_dev_fd, F_GETFL);
+ if (flags == -1
+ || fcntl(ppp_dev_fd, F_SETFL, flags | O_NONBLOCK) == -1)
+ warn("Couldn't set /dev/ppp to nonblock: %m");
+ } else
+ error("Couldn't release PPP unit: %m");
+ }