#include "rpl-conf.h"
#include "lib/list.h"
#include "net/ip/uip.h"
#include "net/ipv6/uip-ds6.h"
#include "sys/ctimer.h"
Data Structures | |
union | rpl_metric_container::metric_object |
struct | rpl_dag |
struct | rpl_instance |
struct | rpl_metric_container |
struct | rpl_metric_object_energy |
struct | rpl_of |
struct | rpl_parent |
struct | rpl_prefix |
Macros | |
#define | RPL_DAG_MC_AGGR_ADDITIVE 0 |
#define | RPL_DAG_MC_AGGR_MAXIMUM 1 |
#define | RPL_DAG_MC_AGGR_MINIMUM 2 |
#define | RPL_DAG_MC_AGGR_MULTIPLICATIVE 3 |
#define | RPL_DAG_MC_ENERGY 2 /* Node Energy */ |
#define | RPL_DAG_MC_ENERGY_ESTIMATION 0 |
#define | RPL_DAG_MC_ENERGY_INCLUDED 3 |
#define | RPL_DAG_MC_ENERGY_TYPE 1 |
#define | RPL_DAG_MC_ENERGY_TYPE_BATTERY 1 |
#define | RPL_DAG_MC_ENERGY_TYPE_MAINS 0 |
#define | RPL_DAG_MC_ENERGY_TYPE_SCAVENGING 2 |
#define | RPL_DAG_MC_ETX 7 /* Expected Transmission Count */ |
#define | RPL_DAG_MC_FLAG_C 0x4 |
#define | RPL_DAG_MC_FLAG_O 0x2 |
#define | RPL_DAG_MC_FLAG_P 0x8 |
#define | RPL_DAG_MC_FLAG_R 0x1 |
#define | RPL_DAG_MC_HOPCOUNT 3 /* Hop Count */ |
#define | RPL_DAG_MC_LATENCY 5 /* Latency */ |
#define | RPL_DAG_MC_LC 8 /* Link Color */ |
#define | RPL_DAG_MC_LQL 6 /* Link Quality Level */ |
#define | RPL_DAG_MC_NONE 0 /* Local identifier for empty MC */ |
#define | RPL_DAG_MC_NSA 1 /* Node State and Attributes */ |
#define | RPL_DAG_MC_THROUGHPUT 4 /* Throughput */ |
Typedefs | |
typedef struct rpl_dag | rpl_dag_t |
typedef struct rpl_instance | rpl_instance_t |
typedef struct rpl_metric_container | rpl_metric_container_t |
typedef uint16_t | rpl_ocp_t |
typedef struct rpl_of | rpl_of_t |
typedef struct rpl_parent | rpl_parent_t |
typedef struct rpl_prefix | rpl_prefix_t |
typedef uint16_t | rpl_rank_t |
Enumerations | |
enum | rpl_mode { RPL_MODE_MESH = 0, RPL_MODE_FEATHER = 1, RPL_MODE_LEAF = 2 } |
RPL modes. More... | |
Functions | |
void | rpl_dag_init (void) |
rpl_dag_t * | rpl_get_any_dag (void) |
rpl_instance_t * | rpl_get_instance (uint8_t instance_id) |
enum rpl_mode | rpl_get_mode (void) |
Get the RPL mode. More... | |
uip_ipaddr_t * | rpl_get_parent_ipaddr (rpl_parent_t *nbr) |
uint16_t | rpl_get_parent_link_metric (const uip_lladdr_t *addr) |
rpl_rank_t | rpl_get_parent_rank (uip_lladdr_t *addr) |
void | rpl_init (void) |
void | rpl_insert_header (void) |
uint8_t | rpl_invert_header (void) |
void | rpl_remove_header (void) |
int | rpl_repair_root (uint8_t instance_id) |
int | rpl_set_default_route (rpl_instance_t *instance, uip_ipaddr_t *from) |
enum rpl_mode | rpl_set_mode (enum rpl_mode mode) |
Set the RPL mode. More... | |
int | rpl_set_prefix (rpl_dag_t *dag, uip_ipaddr_t *prefix, unsigned len) |
rpl_dag_t * | rpl_set_root (uint8_t instance_id, uip_ipaddr_t *dag_id) |
void | rpl_update_header_empty (void) |
int | rpl_update_header_final (uip_ipaddr_t *addr) |
int | rpl_verify_header (int) |
void | uip_rpl_input (void) |
Variables | |
rpl_of_t | RPL_OF |
#define RPL_DAG_MC_AGGR_ADDITIVE 0 |
#define RPL_DAG_MC_AGGR_MAXIMUM 1 |
#define RPL_DAG_MC_AGGR_MINIMUM 2 |
#define RPL_DAG_MC_AGGR_MULTIPLICATIVE 3 |
#define RPL_DAG_MC_ENERGY 2 /* Node Energy */ |
Referenced by dio_input(), and dio_output().
#define RPL_DAG_MC_ENERGY_ESTIMATION 0 |
#define RPL_DAG_MC_ENERGY_INCLUDED 3 |
#define RPL_DAG_MC_ENERGY_TYPE 1 |
#define RPL_DAG_MC_ENERGY_TYPE_BATTERY 1 |
#define RPL_DAG_MC_ENERGY_TYPE_MAINS 0 |
#define RPL_DAG_MC_ENERGY_TYPE_SCAVENGING 2 |
#define RPL_DAG_MC_ETX 7 /* Expected Transmission Count */ |
Referenced by calculate_path_metric(), dio_input(), and dio_output().
#define RPL_DAG_MC_FLAG_C 0x4 |
#define RPL_DAG_MC_FLAG_O 0x2 |
#define RPL_DAG_MC_FLAG_P 0x8 |
#define RPL_DAG_MC_FLAG_R 0x1 |
#define RPL_DAG_MC_HOPCOUNT 3 /* Hop Count */ |
#define RPL_DAG_MC_LATENCY 5 /* Latency */ |
#define RPL_DAG_MC_LC 8 /* Link Color */ |
#define RPL_DAG_MC_LQL 6 /* Link Quality Level */ |
#define RPL_DAG_MC_NONE 0 /* Local identifier for empty MC */ |
Referenced by dio_input(), dio_output(), and update_metric_container().
#define RPL_DAG_MC_NSA 1 /* Node State and Attributes */ |
#define RPL_DAG_MC_THROUGHPUT 4 /* Throughput */ |
typedef struct rpl_instance rpl_instance_t |
typedef struct rpl_metric_container rpl_metric_container_t |
typedef uint16_t rpl_ocp_t |
typedef struct rpl_parent rpl_parent_t |
typedef struct rpl_prefix rpl_prefix_t |
typedef uint16_t rpl_rank_t |
enum rpl_mode |
RPL modes.
The RPL module can be in either of three modes: mesh mode (RPL_MODE_MESH), feater mode (RPL_MODE_FEATHER), and leaf mode (RPL_MODE_LEAF). In mesh mode, nodes forward data for other nodes, and are reachable by others. In feather mode, nodes can forward data for other nodes, but are not reachable themselves. In leaf mode, nodes do not forward data for others, but are reachable by others.
Enumerator | |
---|---|
RPL_MODE_MESH | |
RPL_MODE_FEATHER | |
RPL_MODE_LEAF |
void uip_rpl_input | ( | void | ) |
rpl_of_t RPL_OF |