-error:
- netdev_uninit(&netdev->netdev, true);
- return error;
-}
-
-/* Closes and destroys 'netdev'. */
-static void
-netdev_linux_close(struct netdev *netdev_)
-{
- struct netdev_linux *netdev = netdev_linux_cast(netdev_);
-
- if (netdev->fd > 0 && strcmp(netdev_get_type(netdev_), "tap")) {
- close(netdev->fd);
- }
- free(netdev);
-}
-
-static int
-netdev_linux_listen(struct netdev *netdev_)
-{
- struct netdev_linux *netdev = netdev_linux_cast(netdev_);
- struct netdev_dev_linux *netdev_dev =
- netdev_dev_linux_cast(netdev_get_dev(netdev_));
- struct sockaddr_ll sll;
- int ifindex;
- int error;
- int fd;
-
- if (netdev->fd >= 0) {
- return 0;
- }
-
- if (!strcmp(netdev_get_type(netdev_), "tap")
- && !netdev_dev->state.tap.opened) {
- netdev->fd = netdev_dev->state.tap.fd;
- netdev_dev->state.tap.opened = true;
- return 0;
- }