Contiki-NG
Data Fields
routing_driver Struct Reference

The structure of a routing protocol driver. More...

#include <os/net/routing/routing.h>

Data Fields

void(* init )(void)
 Initialize the routing protocol.
 
void(* root_set_prefix )(uip_ipaddr_t *prefix, uip_ipaddr_t *iid)
 Set the prefix, for nodes that will operate as root. More...
 
int(* root_start )(void)
 Set the node as root and start a network. More...
 
int(* node_is_root )(void)
 Tells whether the node is a network root or not. More...
 
int(* get_root_ipaddr )(uip_ipaddr_t *ipaddr)
 Returns the IPv6 address of the network root, if any. More...
 
int(* get_sr_node_ipaddr )(uip_ipaddr_t *addr, const uip_sr_node_t *node)
 Returns the global IPv6 address of a source routing node. More...
 
void(* leave_network )(void)
 Leave the network the node is part of. More...
 
int(* node_has_joined )(void)
 Tells whether the node is currently part of a network. More...
 
int(* node_is_reachable )(void)
 Tells whether the node is currently reachable as part of the network. More...
 
void(* global_repair )(const char *str)
 Triggers a global topology repair. More...
 
void(* local_repair )(const char *str)
 Triggers a RPL local topology repair. More...
 
void(* ext_header_remove )(void)
 Removes all extension headers that pertain to the routing protocol.
 
int(* ext_header_update )(void)
 Adds/updates routing protocol extension headers to current uIP packet. More...
 
int(* ext_header_hbh_update )(int uip_ext_opt_offset)
 Process and update the routing protocol hob-by-hop extention headers of the current uIP packet. More...
 
int(* ext_header_srh_update )(void)
 Process and update SRH in-place, i.e. More...
 
int(* ext_header_srh_get_next_hop )(uip_ipaddr_t *ipaddr)
 Look for next hop from SRH of current uIP packet. More...
 
void(* link_callback )(const linkaddr_t *addr, int status, int numtx)
 Called by lower layers after every packet transmission. More...
 
void(* neighbor_state_changed )(uip_ds6_nbr_t *nbr)
 Called by uIP to notify addition/removal of IPv6 neighbor entries. More...
 
void(* drop_route )(uip_ds6_route_t *route)
 Called by uIP if it has decided to drop a route because. More...
 

Detailed Description

The structure of a routing protocol driver.

Definition at line 53 of file routing.h.

Field Documentation

void(* routing_driver::drop_route) (uip_ds6_route_t *route)

Called by uIP if it has decided to drop a route because.

Parameters
routeThe route that will be dropped after this function returns

Definition at line 174 of file routing.h.

Referenced by rpl_get_leaf_only(), rpl_link_callback(), rpl_set_prefix(), and tcpip_input().

int(* routing_driver::ext_header_hbh_update) (int uip_ext_opt_offset)

Process and update the routing protocol hob-by-hop extention headers of the current uIP packet.

Parameters
uip_ext_opt_offsetThe offset within the uIP packet where extension headers start
Returns
1 in case the packet is valid and to be processed further, 0 in case the packet must be dropped.

Definition at line 139 of file routing.h.

Referenced by ext_hdr_options_process().

int(* routing_driver::ext_header_srh_get_next_hop) (uip_ipaddr_t *ipaddr)

Look for next hop from SRH of current uIP packet.

Parameters
ipaddrA pointer to the address where to store the next hop.
Returns
1 if a next hop was found, 0 otherwise

Definition at line 152 of file routing.h.

Referenced by tcpip_input().

int(* routing_driver::ext_header_srh_update) (void)

Process and update SRH in-place, i.e.

internal address swapping as per RFC6554

Returns
1 if SRH found, 0 otherwise

Definition at line 145 of file routing.h.

Referenced by uip_process().

int(* routing_driver::ext_header_update) (void)

Adds/updates routing protocol extension headers to current uIP packet.

Returns
1 in case of success, 0 otherwise

Definition at line 129 of file routing.h.

Referenced by tcpip_ipv6_output().

int(* routing_driver::get_root_ipaddr) (uip_ipaddr_t *ipaddr)

Returns the IPv6 address of the network root, if any.

Parameters
ipaddrA pointer where to copy the IP address of the root
Returns
1 if the root address was copied, 0 otherwise

Definition at line 82 of file routing.h.

Referenced by rpl_link_callback(), and uip_sr_is_addr_reachable().

int(* routing_driver::get_sr_node_ipaddr) (uip_ipaddr_t *addr, const uip_sr_node_t *node)

Returns the global IPv6 address of a source routing node.

Parameters
ipaddrA pointer where to copy the IP address of the node
nodeThe source routing node
Returns
1 if the global node address was copied, 0 otherwise

Definition at line 90 of file routing.h.

Referenced by rpl_ext_header_srh_update(), rpl_get_leaf_only(), rpl_link_callback(), rpl_set_prefix(), uip_sr_link_snprint(), uip_sr_num_nodes(), and uip_sr_periodic().

void(* routing_driver::global_repair) (const char *str)

Triggers a global topology repair.

Parameters
strA textual description of the cause for triggering a repair

Definition at line 113 of file routing.h.

Referenced by rpl_link_callback().

void(* routing_driver::leave_network) (void)

Leave the network the node is part of.

Definition at line 95 of file routing.h.

Referenced by rpl_link_callback().

void(* routing_driver::link_callback) (const linkaddr_t *addr, int status, int numtx)

Called by lower layers after every packet transmission.

Parameters
addrThe link-layer addrress of the packet destination
statusThe transmission status (see os/net/mac/mac.h)
numtxThe total number of transmission attempts

Definition at line 160 of file routing.h.

Referenced by packet_sent().

void(* routing_driver::local_repair) (const char *str)

Triggers a RPL local topology repair.

Parameters
strA textual description of the cause for triggering a repair

Definition at line 119 of file routing.h.

Referenced by rpl_link_callback().

void(* routing_driver::neighbor_state_changed) (uip_ds6_nbr_t *nbr)

Called by uIP to notify addition/removal of IPv6 neighbor entries.

Parameters
addrThe link-layer addrress of the packet destination
statusThe transmission status (see os/net/mac/mac.h)
numtxThe total number of transmission attempts

Definition at line 168 of file routing.h.

Referenced by rpl_get_leaf_only(), rpl_set_prefix(), and uip_ds6_nbr_add().

int(* routing_driver::node_has_joined) (void)

Tells whether the node is currently part of a network.

Returns
1 if we have joined a network, 0 otherwise.

Definition at line 101 of file routing.h.

int(* routing_driver::node_is_reachable) (void)

Tells whether the node is currently reachable as part of the network.

Returns
1 if we are reachable, 0 otherwise.

Definition at line 107 of file routing.h.

Referenced by coap_endpoint_is_connected().

int(* routing_driver::node_is_root) (void)

Tells whether the node is a network root or not.

Returns
1 if we are root, 0 otherwise

Definition at line 75 of file routing.h.

void(* routing_driver::root_set_prefix) (uip_ipaddr_t *prefix, uip_ipaddr_t *iid)

Set the prefix, for nodes that will operate as root.

Parameters
prefixThe prefix. If NULL, UIP_DS6_DEFAULT_PREFIX is used instead
iidThe IID. If NULL, it will be built from uip_ds6_set_addr_iid.

Definition at line 63 of file routing.h.

int(* routing_driver::root_start) (void)

Set the node as root and start a network.

Returns
0 in case of success, -1 otherwise

Definition at line 69 of file routing.h.