/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once

typedef struct TunTap TunTap;

#include "netdev.h"

struct TunTap {
        NetDev meta;

        int fd;
        char *user_name;
        char *group_name;
        bool multi_queue;
        bool packet_info;
        bool vnet_hdr;
        bool keep_fd;
};

DEFINE_NETDEV_CAST(TUN, TunTap);
DEFINE_NETDEV_CAST(TAP, TunTap);
extern const NetDevVTable tun_vtable;
extern const NetDevVTable tap_vtable;

int manager_add_tuntap_fd(Manager *m, int fd, const char *name);
void manager_clear_unmanaged_tuntap_fds(Manager *m);
