Contiki-NG
nullrouting.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017, RISE SICS.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the Institute nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * This file is part of the Contiki operating system.
30 */
31
32/**
33 * \addtogroup routing
34 * @{
35 *
36 * \file
37 * A routing protocol that does nothing
38 *
39 * \author Simon Duquennoy <simon.duquennoy@ri.se>
40 */
41
42#include "net/routing/routing.h"
43
44/*---------------------------------------------------------------------------*/
45static void
46init(void)
47{
48}
49/*---------------------------------------------------------------------------*/
50static void
51root_set_prefix(uip_ipaddr_t *prefix, uip_ipaddr_t *iid)
52{
53}
54/*---------------------------------------------------------------------------*/
55static int
56root_start(void)
57{
58 return 0;
59}
60/*---------------------------------------------------------------------------*/
61static int
62node_is_root(void)
63{
64 return 0;
65}
66/*---------------------------------------------------------------------------*/
67static int
68get_root_ipaddr(uip_ipaddr_t *ipaddr)
69{
70 return 0;
71}
72/*---------------------------------------------------------------------------*/
73static int
74get_sr_node_ipaddr(uip_ipaddr_t *addr, const uip_sr_node_t *node)
75{
76 return 0;
77}
78/*---------------------------------------------------------------------------*/
79static void
80leave_network(void)
81{
82}
83/*---------------------------------------------------------------------------*/
84static int
85node_has_joined(void)
86{
87 return 1;
88}
89/*---------------------------------------------------------------------------*/
90static int
91node_is_reachable(void)
92{
93 return 1;
94}
95/*---------------------------------------------------------------------------*/
96static void
97global_repair(const char *str)
98{
99}
100/*---------------------------------------------------------------------------*/
101static void
102local_repair(const char *str)
103{
104}
105/*---------------------------------------------------------------------------*/
106static bool
107ext_header_remove(void)
108{
109#if NETSTACK_CONF_WITH_IPV6
110 return uip_remove_ext_hdr();
111#else
112 return true;
113#endif /* NETSTACK_CONF_WITH_IPV6 */
114}
115/*---------------------------------------------------------------------------*/
116static int
117ext_header_update(void)
118{
119 return 1;
120}
121/*---------------------------------------------------------------------------*/
122static int
123ext_header_hbh_update(uint8_t *ext_buf, int opt_offset)
124{
125 return 1;
126}
127/*---------------------------------------------------------------------------*/
128static int
129ext_header_srh_update(void)
130{
131 return 0; /* Means SRH not found */
132}
133/*---------------------------------------------------------------------------*/
134static int
135ext_header_srh_get_next_hop(uip_ipaddr_t *ipaddr)
136{
137 return 0;
138}
139/*---------------------------------------------------------------------------*/
140static void
141link_callback(const linkaddr_t *addr, int status, int numtx)
142{
143}
144/*---------------------------------------------------------------------------*/
145static void
146neighbor_state_changed(uip_ds6_nbr_t *nbr)
147{
148}
149/*---------------------------------------------------------------------------*/
150static void
151drop_route(uip_ds6_route_t *route)
152{
153}
154/*---------------------------------------------------------------------------*/
155static uint8_t
156is_in_leaf_mode(void)
157{
158 return 0;
159}
160/*---------------------------------------------------------------------------*/
161const struct routing_driver nullrouting_driver = {
162 "nullrouting",
163 init,
183};
184/*---------------------------------------------------------------------------*/
185
186/** @}*/
bool uip_remove_ext_hdr(void)
Removes all IPv6 extension headers from uip_buf, updates length fields (uip_len and uip_ext_len)
Definition: uip6.c:493
Routing driver header file.
The structure of a routing protocol driver.
Definition: routing.h:60
int(* root_start)(void)
Set the node as root and start a network.
Definition: routing.h:76
int(* ext_header_srh_get_next_hop)(uip_ipaddr_t *ipaddr)
Look for next hop from SRH of current uIP packet.
Definition: routing.h:162
void(* init)(void)
Initialize the routing protocol.
Definition: routing.h:63
int(* get_root_ipaddr)(uip_ipaddr_t *ipaddr)
Returns the IPv6 address of the network root, if any.
Definition: routing.h:89
bool(* ext_header_remove)(void)
Removes all extension headers that pertain to the routing protocol.
Definition: routing.h:132
void(* link_callback)(const linkaddr_t *addr, int status, int numtx)
Called by lower layers after every packet transmission.
Definition: routing.h:170
void(* leave_network)(void)
Leave the network the node is part of.
Definition: routing.h:102
int(* ext_header_hbh_update)(uint8_t *ext_buf, int opt_offset)
Process and update the routing protocol hob-by-hop extention headers of the current uIP packet.
Definition: routing.h:149
void(* root_set_prefix)(uip_ipaddr_t *prefix, uip_ipaddr_t *iid)
Set the prefix, for nodes that will operate as root.
Definition: routing.h:70
void(* neighbor_state_changed)(uip_ds6_nbr_t *nbr)
Called by uIP to notify addition/removal of IPv6 neighbor entries.
Definition: routing.h:176
void(* global_repair)(const char *str)
Triggers a global topology repair.
Definition: routing.h:120
int(* get_sr_node_ipaddr)(uip_ipaddr_t *ipaddr, const uip_sr_node_t *node)
Returns the global IPv6 address of a source routing node.
Definition: routing.h:97
int(* node_has_joined)(void)
Tells whether the node is currently part of a network.
Definition: routing.h:108
void(* local_repair)(const char *str)
Triggers a RPL local topology repair.
Definition: routing.h:126
int(* ext_header_srh_update)(void)
Process and update SRH in-place, i.e.
Definition: routing.h:155
uint8_t(* is_in_leaf_mode)(void)
Tells whether the protocol is in leaf mode.
Definition: routing.h:188
int(* node_is_root)(void)
Tells whether the node is a network root or not.
Definition: routing.h:82
int(* node_is_reachable)(void)
Tells whether the node is currently reachable as part of the network.
Definition: routing.h:114
int(* ext_header_update)(void)
Adds/updates routing protocol extension headers to current uIP packet.
Definition: routing.h:138
void(* drop_route)(uip_ds6_route_t *route)
Called by uIP if it has decided to drop a route because.
Definition: routing.h:182
The default nbr_table entry (when UIP_DS6_NBR_MULTI_IPV6_ADDRS is disabled), that implements nbr cach...
Definition: uip-ds6-nbr.h:105
An entry in the routing table.
A node in a source routing graph, stored at the root and representing all child-parent relationship.
Definition: uip-sr.h:92
static uip_ds6_nbr_t * nbr
Pointer to llao option in uip_buf.
Definition: uip-nd6.c:106
static uip_ipaddr_t ipaddr
Pointer to prefix information option in uip_buf.
Definition: uip-nd6.c:116
static uip_ds6_addr_t * addr
Pointer to a nbr cache entry.
Definition: uip-nd6.c:107