11#ifndef ZEPHYR_INCLUDE_NET_VIRTUAL_H_ 
   12#define ZEPHYR_INCLUDE_NET_VIRTUAL_H_ 
   45        VIRTUAL_INTERFACE_NUM_CAPS
 
   51enum virtual_interface_config_type {
 
   52        VIRTUAL_INTERFACE_CONFIG_TYPE_PEER_ADDRESS,
 
   53        VIRTUAL_INTERFACE_CONFIG_TYPE_MTU,
 
   56struct virtual_interface_config {
 
   65#if defined(CONFIG_NET_L2_VIRTUAL) 
   66#define VIRTUAL_MAX_NAME_LEN CONFIG_NET_L2_VIRTUAL_MAX_NAME_LEN 
   68#define VIRTUAL_MAX_NAME_LEN 0 
  101                                  struct net_addr *remote_addr,
 
  109                          enum virtual_interface_config_type type,
 
  110                          const struct virtual_interface_config *config);
 
  114                          enum virtual_interface_config_type type,
 
  115                          struct virtual_interface_config *config);
 
  131        struct net_if *virtual_iface;
 
  153        char name[VIRTUAL_MAX_NAME_LEN];
 
  219                                   struct net_addr *remote_addr,
 
  230#if defined(CONFIG_NET_L2_VIRTUAL) 
  231void net_virtual_init(
struct net_if *iface);
 
  233static inline void net_virtual_init(
struct net_if *iface)
 
  245#if defined(CONFIG_NET_L2_VIRTUAL) 
  246void net_virtual_disable(
struct net_if *iface);
 
  248static inline void net_virtual_disable(
struct net_if *iface)
 
  260#if defined(CONFIG_NET_L2_VIRTUAL) 
  261void net_virtual_enable(
struct net_if *iface);
 
  263static inline void net_virtual_enable(
struct net_if *iface)
 
  269#define VIRTUAL_L2_CTX_TYPE     struct virtual_interface_context 
  279net_virtual_get_iface_capabilities(
struct net_if *iface)
 
  291#define Z_NET_VIRTUAL_INTERFACE_INIT(node_id, dev_id, name, init_fn,    \ 
  292                                     pm, data, config, prio, api, mtu)  \ 
  293        Z_NET_DEVICE_INIT(node_id, dev_id, name, init_fn, pm, data,     \ 
  294                          config, prio, api, VIRTUAL_L2,                \ 
  295                          NET_L2_GET_CTX_TYPE(VIRTUAL_L2), mtu) 
  319#define NET_VIRTUAL_INTERFACE_INIT(dev_id, name, init_fn, pm, data,     \ 
  320                                   config, prio, api, mtu)              \ 
  321        Z_NET_VIRTUAL_INTERFACE_INIT(DT_INVALID_NODE, dev_id, name,     \ 
  322                                     init_fn, pm, data, config, prio,   \ 
unsigned short int sa_family_t
Definition: net_ip.h:164
 
net_verdict
Net Verdict.
Definition: net_core.h:97
 
static const struct device * net_if_get_device(struct net_if *iface)
Get an network interface's device.
Definition: net_if.h:698
 
net_l2_flags
Definition: net_l2.h:33
 
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
 
void net_virtual_set_name(struct net_if *iface, const char *name)
Set the name of the virtual network interface L2.
 
enum net_l2_flags net_virtual_set_flags(struct net_if *iface, enum net_l2_flags flags)
Set the L2 flags of the virtual network interface.
 
int net_virtual_interface_attach(struct net_if *virtual_iface, struct net_if *iface)
Attach virtual network interface to the given network interface.
 
enum net_verdict net_virtual_input(struct net_if *input_iface, struct net_addr *remote_addr, struct net_pkt *pkt)
Feed the IP pkt to stack if tunneling is enabled.
 
virtual_interface_caps
Definition: virtual.h:37
 
char * net_virtual_get_name(struct net_if *iface, char *buf, size_t len)
Return the name of the virtual network interface L2.
 
struct net_if * net_virtual_get_iface(struct net_if *iface)
Return network interface related to this virtual network interface. The returned network interface is...
 
@ VIRTUAL_INTERFACE_IPIP
Definition: virtual.h:39
 
Public API for network interface.
 
IPv6 and IPv4 definitions.
 
Network packet buffer descriptor API.
 
flags
Definition: parser.h:96
 
struct _snode sys_snode_t
Definition: slist.h:33
 
Runtime device structure (in ROM) per driver instance.
Definition: device.h:378
 
const void * api
Definition: device.h:384
 
Network Interface structure.
Definition: net_if.h:510
 
Hardware link address structure.
Definition: net_linkaddr.h:88
 
Network packet.
Definition: net_pkt.h:62
 
int(* stop)(const struct device *dev)
Definition: virtual.h:86
 
enum net_verdict(* input)(struct net_if *input_iface, struct net_if *iface, struct net_addr *remote_addr, struct net_pkt *pkt)
Definition: virtual.h:99
 
int(* get_config)(struct net_if *iface, enum virtual_interface_config_type type, struct virtual_interface_config *config)
Definition: virtual.h:113
 
int(* set_config)(struct net_if *iface, enum virtual_interface_config_type type, const struct virtual_interface_config *config)
Definition: virtual.h:108
 
enum net_verdict(* recv)(struct net_if *iface, struct net_pkt *pkt)
Definition: virtual.h:92
 
int(* send)(struct net_if *iface, struct net_pkt *pkt)
Definition: virtual.h:89
 
int(* attach)(struct net_if *virtual_iface, struct net_if *iface)
Definition: virtual.h:105
 
enum virtual_interface_caps(* get_capabilities)(struct net_if *iface)
Definition: virtual.h:80
 
struct net_if_api iface_api
Definition: virtual.h:77
 
int(* start)(const struct device *dev)
Definition: virtual.h:83
 
Definition: virtual.h:125
 
enum net_l2_flags virtual_l2_flags
Definition: virtual.h:144
 
struct net_if * iface
Definition: virtual.h:139
 
char name[VIRTUAL_MAX_NAME_LEN]
Definition: virtual.h:153
 
bool is_init
Definition: virtual.h:147
 
struct net_linkaddr_storage lladdr
Definition: virtual.h:150