net_backend
static struct net_backend ng_backend = {
ng_init(struct net_backend *be, const char *devname __unused,
netmap_get_cap(struct net_backend *be)
netmap_set_cap(struct net_backend *be, uint64_t features __unused,
netmap_init(struct net_backend *be, const char *devname,
netmap_cleanup(struct net_backend *be)
netmap_send(struct net_backend *be, const struct iovec *iov,
netmap_peek_recvlen(struct net_backend *be)
netmap_recv(struct net_backend *be, const struct iovec *iov, int iovcnt)
netmap_recv_enable(struct net_backend *be)
netmap_recv_disable(struct net_backend *be)
static struct net_backend netmap_backend = {
static struct net_backend vale_backend = {
netmap_set_vnet_hdr_len(struct net_backend *be, int vnet_hdr_len)
netmap_has_vnet_hdr_len(struct net_backend *be, unsigned vnet_hdr_len)
slirp_send(struct net_backend *be, const struct iovec *iov, int iovcnt)
slirp_cleanup(struct net_backend *be)
slirp_peek_recvlen(struct net_backend *be)
slirp_recv(struct net_backend *be, const struct iovec *iov, int iovcnt)
slirp_recv_enable(struct net_backend *be)
slirp_recv_disable(struct net_backend *be)
slirp_get_cap(struct net_backend *be __unused)
slirp_set_cap(struct net_backend *be __unused, uint64_t features __unused,
static struct net_backend slirp_backend = {
slirp_init(struct net_backend *be, const char *devname __unused,
tap_send(struct net_backend *be, const struct iovec *iov, int iovcnt)
tap_peek_recvlen(struct net_backend *be)
tap_recv(struct net_backend *be, const struct iovec *iov, int iovcnt)
tap_recv_enable(struct net_backend *be)
tap_recv_disable(struct net_backend *be)
tap_get_cap(struct net_backend *be __unused)
tap_set_cap(struct net_backend *be __unused, uint64_t features,
static struct net_backend tap_backend = {
static struct net_backend vmnet_backend = {
static struct net_backend ngd_backend = {
netbe_init(struct net_backend **ret, nvlist_t *nvl, net_be_rxeof_t cb,
struct net_backend **pbe, *nbe, *tbe = NULL;
netbe_cleanup(struct net_backend *be)
netbe_get_cap(struct net_backend *be)
netbe_set_cap(struct net_backend *be, uint64_t features,
netbe_send(struct net_backend *be, const struct iovec *iov, int iovcnt)
netbe_peek_recvlen(struct net_backend *be)
netbe_recv(struct net_backend *be, const struct iovec *iov, int iovcnt)
netbe_rx_discard(struct net_backend *be)
netbe_rx_disable(struct net_backend *be)
netbe_rx_enable(struct net_backend *be)
netbe_get_vnet_hdr_len(struct net_backend *be)
tap_cleanup(struct net_backend *be)
tap_init(struct net_backend *be, const char *devname,
typedef struct net_backend net_backend_t;
SET_DECLARE(net_backend_set, struct net_backend);
void tap_cleanup(struct net_backend *be);
ssize_t tap_send(struct net_backend *be, const struct iovec *iov, int iovcnt);
ssize_t tap_recv(struct net_backend *be, const struct iovec *iov, int iovcnt);
ssize_t tap_peek_recvlen(struct net_backend *be);
void tap_recv_enable(struct net_backend *be);
ssize_t tap_recv(struct net_backend *be, const struct iovec *iov, int iovcnt);
void tap_recv_disable(struct net_backend *be);
uint64_t tap_get_cap(struct net_backend *be);
int tap_set_cap(struct net_backend *be, uint64_t features,
int (*init)(struct net_backend *be, const char *devname,
void (*cleanup)(struct net_backend *be);
ssize_t (*send)(struct net_backend *be, const struct iovec *iov,
ssize_t (*peek_recvlen)(struct net_backend *be);
ssize_t (*recv)(struct net_backend *be, const struct iovec *iov,
void (*recv_enable)(struct net_backend *be);
void (*recv_disable)(struct net_backend *be);
uint64_t (*get_cap)(struct net_backend *be);
int (*set_cap)(struct net_backend *be, uint64_t features,