[Bug 277435] [Feature request] Add an option to destroy the tap/tun interface when the descriptor is closed

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 02 Mar 2024 15:35:02 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277435

            Bug ID: 277435
           Summary: [Feature request] Add an option to destroy the tap/tun
                    interface when the descriptor is closed
           Product: Base System
           Version: Unspecified
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: standards
          Assignee: standards@FreeBSD.org
          Reporter: monsterovich@gmail.com

When developing the tap library, I ran into the problem that you cannot destroy
an interface (ex. tap0) while the application is running (via SIOCIFDESTROY).

The ioctl(SIOCIFDESTROY) call will simply hang until the application using this
descriptor finishes (see
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242841#c0).

Opening "/dev/tap" does not check if existing interfaces are being used and
creates tap(N+1) every time.

It would be nice to make a parameter that will control the automatic
destruction of the interface when the descriptor is closed.

For example:

if (ioctl(fd, TAPSIFDCLOSE, 1) < 0) {
    printf("error: ioctl(TAPSIFDCLOSE)\n");
}

close(fd);

This mechanism is implemented by default in the Linux driver for tuntap:

"A network device will appear as tunXX or tapXX, depending on the options
chosen. When the program closes the file descriptor, the network device and all
corresponding routes will disappear."

Source: https://docs.kernel.org/networking/tuntap.html

-- 
You are receiving this mail because:
You are the assignee for the bug.