12#ifndef ZEPHYR_INCLUDE_NET_NET_L2_H_ 
   13#define ZEPHYR_INCLUDE_NET_NET_L2_H_ 
   83#define NET_L2_GET_NAME(_name) _net_l2_##_name 
   84#define NET_L2_DECLARE_PUBLIC(_name)                                    \ 
   85        extern const struct net_l2 NET_L2_GET_NAME(_name) 
   86#define NET_L2_GET_CTX_TYPE(_name) _name##_CTX_TYPE 
   88#ifdef CONFIG_NET_L2_VIRTUAL 
   89#define VIRTUAL_L2              VIRTUAL 
   90NET_L2_DECLARE_PUBLIC(VIRTUAL_L2);
 
   93#ifdef CONFIG_NET_L2_DUMMY 
   95#define DUMMY_L2_CTX_TYPE       void* 
   96NET_L2_DECLARE_PUBLIC(DUMMY_L2);
 
   99#if defined(CONFIG_NET_OFFLOAD) || defined(CONFIG_NET_SOCKETS_OFFLOAD) 
  100#define OFFLOADED_NETDEV_L2 OFFLOADED_NETDEV 
  101NET_L2_DECLARE_PUBLIC(OFFLOADED_NETDEV_L2);
 
  104#ifdef CONFIG_NET_L2_ETHERNET 
  105#define ETHERNET_L2             ETHERNET 
  106NET_L2_DECLARE_PUBLIC(ETHERNET_L2);
 
  109#ifdef CONFIG_NET_L2_PPP 
  111NET_L2_DECLARE_PUBLIC(PPP_L2);
 
  114#ifdef CONFIG_NET_L2_IEEE802154 
  115#define IEEE802154_L2           IEEE802154 
  116NET_L2_DECLARE_PUBLIC(IEEE802154_L2);
 
  119#ifdef CONFIG_NET_L2_BT 
  120#define BLUETOOTH_L2            BLUETOOTH 
  121#define BLUETOOTH_L2_CTX_TYPE   void* 
  122NET_L2_DECLARE_PUBLIC(BLUETOOTH_L2);
 
  125#ifdef CONFIG_NET_L2_OPENTHREAD 
  126#define OPENTHREAD_L2           OPENTHREAD 
  127NET_L2_DECLARE_PUBLIC(OPENTHREAD_L2);
 
  130#ifdef CONFIG_NET_L2_CANBUS_RAW 
  131#define CANBUS_RAW_L2           CANBUS_RAW 
  132#define CANBUS_RAW_L2_CTX_TYPE  void* 
  133NET_L2_DECLARE_PUBLIC(CANBUS_RAW_L2);
 
  136#ifdef CONFIG_NET_L2_CUSTOM_IEEE802154 
  137#ifndef CUSTOM_IEEE802154_L2 
  138#define CUSTOM_IEEE802154_L2    CUSTOM_IEEE802154 
  140#define CUSTOM_IEEE802154_L2_CTX_TYPE   void* 
  141NET_L2_DECLARE_PUBLIC(CUSTOM_IEEE802154_L2);
 
  144#define NET_L2_INIT(_name, _recv_fn, _send_fn, _enable_fn, _get_flags_fn) \ 
  145        const STRUCT_SECTION_ITERABLE(net_l2,                           \ 
  146                                      NET_L2_GET_NAME(_name)) = {       \ 
  147                .recv = (_recv_fn),                                     \ 
  148                .send = (_send_fn),                                     \ 
  149                .enable = (_enable_fn),                                 \ 
  150                .get_flags = (_get_flags_fn),                           \ 
  153#define NET_L2_GET_DATA(name, sfx) _net_l2_data_##name##sfx 
  155#define NET_L2_DATA_INIT(name, sfx, ctx_type)                           \ 
  156        static ctx_type NET_L2_GET_DATA(name, sfx) __used; 
  158typedef int (*net_l2_send_t)(
const struct device *dev, 
struct net_pkt *pkt);
 
  160static inline int net_l2_send(net_l2_send_t send_fn,
 
  165        net_capture_pkt(
iface, pkt);
 
  167        return send_fn(dev, pkt);
 
Network packet capture definitions.
 
net_verdict
Net Verdict.
Definition net_core.h:98
 
net_l2_flags
L2 flags.
Definition net_l2.h:34
 
@ NET_L2_POINT_TO_POINT
Is this L2 point-to-point with tunneling so no need to have IP address etc to network interface.
Definition net_l2.h:47
 
@ NET_L2_MULTICAST_SKIP_JOIN_SOLICIT_NODE
Do not join solicited node multicast group.
Definition net_l2.h:39
 
@ NET_L2_PROMISC_MODE
Is promiscuous mode supported.
Definition net_l2.h:42
 
@ NET_L2_MULTICAST
IP multicast supported.
Definition net_l2.h:36
 
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
 
state
Definition parser_state.h:29
 
Runtime device structure (in ROM) per driver instance.
Definition device.h:381
 
Network Interface structure.
Definition net_if.h:595
 
Network L2 structure.
Definition net_l2.h:55
 
int(* send)(struct net_if *iface, struct net_pkt *pkt)
This function is used by net core to push a packet to lower layer (interface's L2),...
Definition net_l2.h:68
 
enum net_verdict(* recv)(struct net_if *iface, struct net_pkt *pkt)
This function is used by net core to get iface's L2 layer parsing what's relevant to itself.
Definition net_l2.h:60
 
enum net_l2_flags(* get_flags)(struct net_if *iface)
Return L2 flags for the network interface.
Definition net_l2.h:79
 
int(* enable)(struct net_if *iface, bool state)
This function is used to enable/disable traffic over a network interface.
Definition net_l2.h:74
 
Network packet.
Definition net_pkt.h:63
 
struct net_if * iface
Network interface.
Definition net_pkt.h:86