1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/net/routing/rpl/of_mrhof.h
Fabian Brandt 12cd62c689 Introduction of RPL non-storing mode.
This implementation is based on RFC 6550 with addition of RFC 6554 (Source Routing Header for RPL). Both can be found under the following links:
- http://tools.ietf.org/html/rfc6550
- http://tools.ietf.org/html/rfc6554

The PR provides basic functionality for handling and forwarding packages in non-storing mode. In addition the structure of the previous implemented RPL storing mode is now revised, so that readability and modularity is increased. The following features are implemented:
- building function for a SRH and integration in common packets
- source-route build algorithm based on the structure of the DODAG
- an RPL-based interpretation of the SRH and removal at destination
- new structure for RPl-module with extracted beaconing-functionality
- leaf nodes are now supported

There are some missed goals and should be included in future updates:
- building a common routing table structure for different types of routing protocols
- routing tables are statically assigned via source code, future update should have an optional variable at build-time, which sets the size of the routing table depending on the desired functionality of a node in the network (root, node, leaf)
2014-11-27 21:42:40 +01:00

70 lines
1.5 KiB
C

/*
* Copyright (C) 2013 Stephan Arndt <arndtste@zedat.fu-berlin.de>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup rpl
* @{
* @file of_mrhof.h
* @brief Objective Function MRHOF.
*
* Header-file, which defines all functions for the implementation of Objective Function MRHOF.
*
* @author Eric Engel <eric.engel@fu-berlin.de>
* @}
*/
#ifndef OF_MRHOF_H
#define OF_MRHOF_H
#include "rpl/rpl_structs.h"
#include "rpl/rpl_config.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* Disallow links with greater than 4 expected
* transmission counts on the selected path.
*/
#define MAX_LINK_METRIC (512)
/**
* Disallow paths with greater than 256
* expected transmission counts.
*/
#define MAX_PATH_COST (0x8000)
/**
* Switch to a new path only if it is
* expected to require at least 1.5 fewer transmissions than the
* current path.
*/
#define PARENT_SWITCH_THRESHOLD (192)
/**
* Do not allow a node to become a floating root.
* (Currently unused, since the RPL-implementation does not allow for floating
* roots).
*/
#define ALLOW_FLOATING_ROOT (0)
/**
* While assigning Rank when using ETX, use the representation of ETX described
* in [RFC6551], i.e., assign Rank equal to ETX * 128.
*/
#define ETX_RANK_MULTIPLIER (0x80)
rpl_of_t *rpl_get_of_mrhof(void);
#ifdef __cplusplus
}
#endif
#endif /* OF_MRHOF_H */