46#ifdef NETSTACK_CONF_ROUTING
47#define NETSTACK_ROUTING NETSTACK_CONF_ROUTING
49#if ROUTING_CONF_RPL_LITE
50#define NETSTACK_ROUTING rpl_lite_driver
51#elif ROUTING_CONF_RPL_CLASSIC
52#define NETSTACK_ROUTING rpl_classic_driver
53#elif ROUTING_CONF_NULLROUTING
54#define NETSTACK_ROUTING nullrouting_driver
56#error Unknown ROUTING configuration
62#ifdef NETSTACK_CONF_NETWORK
63#define NETSTACK_NETWORK NETSTACK_CONF_NETWORK
65#if NETSTACK_CONF_WITH_IPV6
66#define NETSTACK_NETWORK sicslowpan_driver
67#elif NETSTACK_CONF_WITH_NULLNET
68#define NETSTACK_NETWORK nullnet_driver
70#error Unknown NET configuration
76#ifdef NETSTACK_CONF_MAC
77#define NETSTACK_MAC NETSTACK_CONF_MAC
79#if MAC_CONF_WITH_NULLMAC
80#define NETSTACK_MAC nullmac_driver
81#elif MAC_CONF_WITH_CSMA
82#define NETSTACK_MAC csma_driver
83#elif MAC_CONF_WITH_TSCH
84#define NETSTACK_MAC tschmac_driver
85#elif MAC_CONF_WITH_BLE
86#define NETSTACK_MAC ble_l2cap_driver
88#error Unknown MAC configuration
93#ifdef NETSTACK_CONF_RADIO
94#define NETSTACK_RADIO NETSTACK_CONF_RADIO
96#define NETSTACK_RADIO nullradio_driver
101#ifdef NETSTACK_CONF_FRAMER
102#define NETSTACK_FRAMER NETSTACK_CONF_FRAMER
104#define NETSTACK_FRAMER framer_802154
125 uint8_t (*
output)(
const linkaddr_t *localdest);
132extern const struct framer NETSTACK_FRAMER;
137enum netstack_ip_action {
138 NETSTACK_IP_PROCESS = 0,
139 NETSTACK_IP_DROP = 1,
142enum netstack_ip_callback_type {
143 NETSTACK_IP_INPUT = 0,
144 NETSTACK_IP_OUTPUT = 1,
147struct netstack_ip_packet_processor {
148 struct netstack_ip_packet_processor *next;
149 enum netstack_ip_action (*process_input)(void);
150 enum netstack_ip_action (*process_output)(
const linkaddr_t * localdest);
155enum netstack_ip_action netstack_process_ip_callback(uint8_t type,
const linkaddr_t *localdest);
157void netstack_ip_packet_processor_add(
struct netstack_ip_packet_processor *p);
158void netstack_ip_packet_processor_remove(
struct netstack_ip_packet_processor *p);
162struct netstack_sniffer {
163 struct netstack_sniffer *next;
164 void (*input_callback)(void);
165 void (*output_callback)(
int mac_status);
168#define NETSTACK_SNIFFER(name, input_callback, output_callback) \
169 static struct netstack_sniffer name = { NULL, input_callback, output_callback }
171void netstack_sniffer_add(
struct netstack_sniffer *s);
172void netstack_sniffer_remove(
struct netstack_sniffer *s);
A MAC framer is responsible for constructing and parsing the header in MAC frames.
Header file for the link-layer address representation.
Header file for the radio API.
The structure of a MAC protocol driver in Contiki.
The structure of a network driver in Contiki.
void(* input)(void)
Callback for getting notified of incoming packet in packetbuf.
uint8_t(* output)(const linkaddr_t *localdest)
Output funtion, sends from uipbuf.
void(* init)(void)
Initialize the network driver.
The structure of a Contiki-NG radio device driver.
The structure of a routing protocol driver.