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;
137 NETSTACK_RADIO.init();
139 NETSTACK_NETWORK.init();
145enum netstack_ip_action {
146 NETSTACK_IP_PROCESS = 0,
147 NETSTACK_IP_DROP = 1,
150enum netstack_ip_callback_type {
151 NETSTACK_IP_INPUT = 0,
152 NETSTACK_IP_OUTPUT = 1,
155struct netstack_ip_packet_processor {
156 struct netstack_ip_packet_processor *next;
157 enum netstack_ip_action (*process_input)(void);
158 enum netstack_ip_action (*process_output)(
const linkaddr_t * localdest);
163enum netstack_ip_action netstack_process_ip_callback(uint8_t type,
const linkaddr_t *localdest);
165void netstack_ip_packet_processor_add(
struct netstack_ip_packet_processor *p);
166void netstack_ip_packet_processor_remove(
struct netstack_ip_packet_processor *p);
170struct netstack_sniffer {
171 struct netstack_sniffer *next;
172 void (*input_callback)(void);
173 void (*output_callback)(
int mac_status);
176#define NETSTACK_SNIFFER(name, input_callback, output_callback) \
177 static struct netstack_sniffer name = { NULL, input_callback, output_callback }
179void netstack_sniffer_add(
struct netstack_sniffer *s);
180void 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.
void(* init)(void)
Initialize the MAC driver.
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.