mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
0c67c02047
This PR depends on #1766. It contains a minimal implementation of the AODVv2 routing protocol. *Not* implemented are: - AckReqs - alternate metrics - multiple interfaces - clients and Client Networks - buffering - all addresses, TLVs, and features that are marked as optional An example application can be found at https://github.com/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo. The implementation relies heavily on a functioning Neighbor Discovery Protocol. It might be necessary to fill the neighbor cache manually with the current state of RIOTs NDP implementation. The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to future improvement. Please note that based on my experience, with the default transceiver buffer size (3) of the native port, about 2/3 of the route discoveries will fail. This has been addressed in issue #1747. It is advised to increase the transceiver buffer size when using AODVv2 as a routing protocol.
53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
/*
|
|
* Copyright (C) 2014 Freie Universität Berlin
|
|
* Copyright (C) 2014 Lotte Steenbrink <lotte.steenbrink@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.
|
|
*/
|
|
|
|
/**
|
|
* @defgroup aodvv2 AODVv2
|
|
* @brief The Ad-hoc On-demand Distance Vector routing protocol, version 2
|
|
* @ingroup net
|
|
* @{
|
|
*
|
|
* @file aodvv2/aodvv2.h
|
|
* @brief Interface for the AODVv2 routing protocol
|
|
*
|
|
* @author Lotte Steenbrink <lotte.steenbrink@fu-berlin.de>
|
|
*/
|
|
|
|
#ifndef AODVV2_H_
|
|
#define AODVV2_H_
|
|
|
|
#include "common/netaddr.h"
|
|
#include "rfc5444/rfc5444_print.h"
|
|
|
|
#include "aodvv2/types.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Initialize the AODVv2 routing protocol.
|
|
*/
|
|
void aodv_init(void);
|
|
|
|
/**
|
|
* @brief Set the metric type. If metric_type does not match any known metric
|
|
* types, no changes will be made.
|
|
*
|
|
* @param[in] metric_type type of new metric
|
|
*/
|
|
void aodv_set_metric_type(aodvv2_metric_t metric_type);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* AODVV2_H_ */
|
|
/** @} */
|