RPL implementation for GNRC.
More...
RPL implementation for GNRC.
Configuration
USEMODULE
- RPL (Storing Mode)
- RPL auto-initialization on interface
USEMODULE += auto_init_gnrc_rpl
Auto-Initialization
If the application defines only one interface (gnrc_netif_highlander() returns true), then RPL will be initialized on this interface.
If the application defines several interfaces (gnrc_netif_highlander() returns false), then RPL will be initialized on the interface CONFIG_GNRC_RPL_DEFAULT_NETIF. Your application is responsible for setting CONFIG_GNRC_RPL_DEFAULT_NETIF to a valid interface PID, e.g. via CFLAGS or menuconfig.
Initializing RPL on multiple interfaces automatically is currently not supported. Call gnrc_rpl_init() manually from your application for the desired interfaces in this case.
CFLAGS
- Exclude Prefix Information Options from DIOs
CFLAGS += -DCONFIG_GNRC_RPL_WITHOUT_PIO
- Modify trickle parameters
CFLAGS += -DCONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_DOUBLINGS=20
CFLAGS += -DCONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_MIN=3
CFLAGS += -DCONFIG_GNRC_RPL_DEFAULT_DIO_REDUNDANCY_CONSTANT=10
- Make reception of DODAG_CONF optional when joining a DODAG. This will use the default trickle parameters until a DODAG_CONF is received from the parent. The DODAG_CONF is requested once from the parent while joining the DODAG. The standard behaviour is to request a DODAG_CONF and join only a DODAG once a DODAG_CONF is received.
CFLAGS += -DCONFIG_GNRC_RPL_DODAG_CONF_OPTIONAL_ON_JOIN
- Set interface for auto-initialization if more than one interface exists (gnrc_netif_highlander() returns false)
CFLAGS += -DCONFIG_GNRC_RPL_DEFAULT_NETIF=6
- By default, all incoming control messages get checked for validation. This validation can be disabled in case the involved RPL implementations are known to produce valid messages.
CFLAGS += -DCONFIG_GNRC_RPL_WITHOUT_VALIDATION
This RPL implementation currently only supports storing mode. That means, in order to have downwards routes to all nodes the storage space within gnrc_ipv6's Neighbor Information Base must be big enough to store information for each node.
For a random topology of n nodes, to ensure you can reach every node from the root, set CONFIG_GNRC_IPV6_NIB_NUMOF == CONFIG_GNRC_IPV6_NIB_OFFL_NUMOF == n.
e.g. for n = 50 set
CFLAGS += -DCONFIG_GNRC_IPV6_NIB_NUMOF=50
CFLAGS += -DCONFIG_GNRC_IPV6_NIB_OFFL_NUMOF=50
If you want to allow for alternative parents, increase the number of default routers in the NIB.
e.g. for one alternative parent, set
CFLAGS += -DCONFIG_GNRC_IPV6_NIB_DEFAULT_ROUTER_NUMOF=2
TODO
The GNRC RPL implementation only implements storing mode with OF0 (RFC6552). The RPL routing header is parsed by the nodes when the gnrc_rpl_srh module is used, but anything else for non-storing mode is missing. For interoperability with other RPL implementations, open task include:
|
| file | rpl.h |
| | RPL header.
|
| |
| file | dodag.h |
| | DODAG-related functions for RPL.
|
| |
| file | of_manager.h |
| | RPL Objective functions manager header.
|
| |
| file | rpble.h |
| | Glue code linking RPL with the NimBLE rpble connection manager.
|
| |
| file | structs.h |
| | RPL data structs.
|
| |
| file | globals.h |
| | Internal globals for RPL.
|
| |
| file | netstats.h |
| | RPL control message statistics functions.
|
| |
| file | validation.h |
| | RPL control message validation functions.
|
| |
| file | of0.h |
| | Objective Function Zero.
|
| |
|
| #define | GNRC_RPL_STACK_SIZE (THREAD_STACKSIZE_DEFAULT) |
| | Default stack size to use for the RPL thread.
|
| |
| #define | GNRC_RPL_PRIO (GNRC_IPV6_PRIO + 1) |
| | Default priority for the RPL thread.
|
| |
| #define | CONFIG_GNRC_RPL_MSG_QUEUE_SIZE_EXP (3U) |
| | Default message queue size to use for the RPL thread (as exponent of 2^n).
|
| |
| #define | GNRC_RPL_MSG_QUEUE_SIZE (1 << CONFIG_GNRC_RPL_MSG_QUEUE_SIZE_EXP) |
| | Message queue size to use for the RPL thread.
|
| |
| #define | GNRC_RPL_ALL_NODES_ADDR {{ 0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1a }} |
| | Static initializer for the all-RPL-nodes multicast IPv6 address (ff02::1a)
|
| |
| #define | GNRC_RPL_MSG_TYPE_LIFETIME_UPDATE (0x0900) |
| | Message type for lifetime updates.
|
| |
| #define | GNRC_RPL_MSG_TYPE_TRICKLE_MSG (0x0901) |
| | Message type for trickle.
|
| |
| #define | GNRC_RPL_MSG_TYPE_DAO_HANDLE (0x0903) |
| | Message type for handling DAO sending.
|
| |
| #define | GNRC_RPL_INFINITE_RANK (0xFFFF) |
| | Infinite rank.
|
| |
| #define | CONFIG_GNRC_RPL_DEFAULT_MIN_HOP_RANK_INCREASE (256) |
| | Default minimum hop rank increase.
|
| |
| #define | CONFIG_GNRC_RPL_DEFAULT_MAX_RANK_INCREASE (0) |
| | Maximum rank increase.
|
| |
| #define | GNRC_RPL_IMPLEMENTED_OFS_NUMOF (1) |
| | Number of implemented Objective Functions.
|
| |
| #define | GNRC_RPL_DEFAULT_OCP (0) |
| | Default Objective Code Point (OF0)
|
| |
| #define | CONFIG_GNRC_RPL_DEFAULT_INSTANCE (0) |
| | Default Instance ID.
|
| |
| #define | GNRC_RPL_DEFAULT_PREFIX_LEN (64) |
| | Default prefix length for the DODAG id.
|
| |
| #define | GNRC_RPL_DEFAULT_PREFIX_LIFETIME (0xFFFFFFFF) |
| | Default prefix valid and preferred time for the DODAG id.
|
| |
| #define | GNRC_RPL_GROUNDED (1) |
| | A DODAG can be grounded or floating.
|
| |
| #define | CONFIG_GNRC_RPL_CLEANUP_TIME (5 * MS_PER_SEC) |
| | Cleanup interval in milliseconds.
|
| |
| #define | GNRC_RPL_ROOT_RANK (CONFIG_GNRC_RPL_DEFAULT_MIN_HOP_RANK_INCREASE) |
| | Rank of the root node.
|
| |
| #define | GNRC_RPL_ICMPV6_CODE_DIS (0x00) |
| | DIS ICMPv6 code.
|
| |
| #define | GNRC_RPL_ICMPV6_CODE_DIO (0x01) |
| | DIO ICMPv6 code.
|
| |
| #define | GNRC_RPL_ICMPV6_CODE_DAO (0x02) |
| | DAO ICMPv6 code.
|
| |
| #define | GNRC_RPL_ICMPV6_CODE_DAO_ACK (0x03) |
| | DAO ACK ICMPv6 code.
|
| |
| #define | GNRC_RPL_LIFETIME_UPDATE_STEP (2) |
| | Update interval of the lifetime update function.
|
| |
| #define | DAGRANK(rank, mhri) |
| | Rank part of the DODAG.
|
| |
| #define | CONFIG_GNRC_RPL_PARENT_TIMEOUT_DIS_RETRIES (3) |
| | Number of DIS retries before parent times out.
|
| |
| #define | CONFIG_GNRC_RPL_DODAG_FLOAT_TIMEOUT (15 * MS_PER_SEC * SEC_PER_MIN) |
| | Timeout for floating DODAGs in milliseconds.
|
| |
| #define | CONFIG_GNRC_RPL_DEFAULT_NETIF (KERNEL_PID_UNDEF) |
| | Default network interface for GNRC RPL.
|
| |
|
| kernel_pid_t | gnrc_rpl_init (kernel_pid_t if_pid) |
| | Initialization of the RPL thread.
|
| |
| gnrc_rpl_instance_t * | gnrc_rpl_root_init (uint8_t instance_id, const ipv6_addr_t *dodag_id, bool gen_inst_id, bool local_inst_id) |
| | Initialization of a node as root.
|
| |
| void | gnrc_rpl_send_DIO (gnrc_rpl_instance_t *instance, ipv6_addr_t *destination) |
| | Send a DIO of the instance to the destination.
|
| |
| void | gnrc_rpl_send_DIS (gnrc_rpl_instance_t *instance, ipv6_addr_t *destination, gnrc_rpl_internal_opt_t **options, size_t num_opts) |
| | Send a DIS of the instance to the destination.
|
| |
| void | gnrc_rpl_send_DAO (gnrc_rpl_instance_t *instance, ipv6_addr_t *destination, uint8_t lifetime) |
| | Send a DAO of the dodag to the destination.
|
| |
| void | gnrc_rpl_send_DAO_ACK (gnrc_rpl_instance_t *instance, ipv6_addr_t *destination, uint8_t seq) |
| | Send a DAO-ACK of the instance to the destination.
|
| |
| void | gnrc_rpl_recv_DIS (gnrc_rpl_dis_t *dis, kernel_pid_t iface, ipv6_addr_t *src, ipv6_addr_t *dst, uint16_t len) |
| | Parse a DIS.
|
| |
| void | gnrc_rpl_recv_DIO (gnrc_rpl_dio_t *dio, kernel_pid_t iface, ipv6_addr_t *src, ipv6_addr_t *dst, uint16_t len) |
| | Parse a DIO.
|
| |
| void | gnrc_rpl_recv_DAO (gnrc_rpl_dao_t *dao, kernel_pid_t iface, ipv6_addr_t *src, ipv6_addr_t *dst, uint16_t len) |
| | Parse a DAO.
|
| |
| void | gnrc_rpl_recv_DAO_ACK (gnrc_rpl_dao_ack_t *dao_ack, kernel_pid_t iface, ipv6_addr_t *src, ipv6_addr_t *dst, uint16_t len) |
| | Parse a DAO-ACK.
|
| |
| void | gnrc_rpl_delay_dao (gnrc_rpl_dodag_t *dodag) |
| | Delay the DAO sending interval.
|
| |
| void | gnrc_rpl_long_delay_dao (gnrc_rpl_dodag_t *dodag) |
| | Long delay the DAO sending interval.
|
| |
| gnrc_rpl_instance_t * | gnrc_rpl_root_instance_init (uint8_t instance_id, const ipv6_addr_t *dodag_id, uint8_t mop) |
| | Create a new RPL instance and RPL DODAG.
|
| |
| void | gnrc_rpl_send (gnrc_pktsnip_t *pkt, kernel_pid_t iface, ipv6_addr_t *src, ipv6_addr_t *dst, ipv6_addr_t *dodag_id) |
| | Send a control message.
|
| |
| uint8_t | gnrc_rpl_gen_instance_id (bool local) |
| | Generate a local or global instance id.
|
| |
| static void | gnrc_rpl_config_pio (gnrc_rpl_dodag_t *dodag, bool status) |
| | (De-)Activate the transmission of Prefix Information Options within DIOs for a particular DODAG.
|
| |
| void | gnrc_rpl_configure_root (gnrc_netif_t *netif, const ipv6_addr_t *dodag_id) |
| | Convenience function to start a RPL root using the default configuration.
|
| |
◆ CONFIG_GNRC_RPL_CLEANUP_TIME
| #define CONFIG_GNRC_RPL_CLEANUP_TIME (5 * MS_PER_SEC) |
Cleanup interval in milliseconds.
Definition at line 424 of file rpl.h.
◆ CONFIG_GNRC_RPL_DAO_ACK_DELAY
| #define CONFIG_GNRC_RPL_DAO_ACK_DELAY (3000UL) |
◆ CONFIG_GNRC_RPL_DAO_DELAY_DEFAULT
| #define CONFIG_GNRC_RPL_DAO_DELAY_DEFAULT (1000UL) |
Default delay for DAOs in milli seconds.
Definition at line 410 of file rpl.h.
◆ CONFIG_GNRC_RPL_DAO_DELAY_JITTER
| #define CONFIG_GNRC_RPL_DAO_DELAY_JITTER (1000UL) |
Jitter for DAOs in milli seconds.
Definition at line 416 of file rpl.h.
◆ CONFIG_GNRC_RPL_DAO_DELAY_LONG
| #define CONFIG_GNRC_RPL_DAO_DELAY_LONG (60000UL) |
Long delay for DAOs in milli seconds.
Definition at line 404 of file rpl.h.
◆ CONFIG_GNRC_RPL_DAO_SEND_RETRIES
| #define CONFIG_GNRC_RPL_DAO_SEND_RETRIES (4) |
◆ CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_DOUBLINGS
| #define CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_DOUBLINGS (20) |
◆ CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_MIN
| #define CONFIG_GNRC_RPL_DEFAULT_DIO_INTERVAL_MIN (3) |
◆ CONFIG_GNRC_RPL_DEFAULT_DIO_REDUNDANCY_CONSTANT
| #define CONFIG_GNRC_RPL_DEFAULT_DIO_REDUNDANCY_CONSTANT (10) |
◆ CONFIG_GNRC_RPL_DEFAULT_INSTANCE
| #define CONFIG_GNRC_RPL_DEFAULT_INSTANCE (0) |
Default Instance ID.
Definition at line 262 of file rpl.h.
◆ CONFIG_GNRC_RPL_DEFAULT_LIFETIME
| #define CONFIG_GNRC_RPL_DEFAULT_LIFETIME (5) |
◆ CONFIG_GNRC_RPL_DEFAULT_MAX_RANK_INCREASE
| #define CONFIG_GNRC_RPL_DEFAULT_MAX_RANK_INCREASE (0) |
Maximum rank increase.
Definition at line 245 of file rpl.h.
◆ CONFIG_GNRC_RPL_DEFAULT_MIN_HOP_RANK_INCREASE
| #define CONFIG_GNRC_RPL_DEFAULT_MIN_HOP_RANK_INCREASE (256) |
◆ CONFIG_GNRC_RPL_DEFAULT_NETIF
Default network interface for GNRC RPL.
Definition at line 648 of file rpl.h.
◆ CONFIG_GNRC_RPL_DODAG_FLOAT_TIMEOUT
Timeout for floating DODAGs in milliseconds.
While a DODOAG is floating, it has no uplink but maintains connectivity in the subtree. After the timeout, the DODAG will be deconstructed and cleared. Nodes will always switch to grounded (i.e., non-floating) DODAGs if one becomes available in the meantime.
Definition at line 641 of file rpl.h.
◆ CONFIG_GNRC_RPL_LIFETIME_UNIT
| #define CONFIG_GNRC_RPL_LIFETIME_UNIT (60) |
◆ CONFIG_GNRC_RPL_MSG_QUEUE_SIZE_EXP
| #define CONFIG_GNRC_RPL_MSG_QUEUE_SIZE_EXP (3U) |
Default message queue size to use for the RPL thread (as exponent of 2^n).
As the queue size ALWAYS needs to be power of two, this option represents the exponent of 2^n, which will be used as the size of the queue.
Definition at line 188 of file rpl.h.
◆ CONFIG_GNRC_RPL_PARENT_TIMEOUT_DIS_RETRIES
| #define CONFIG_GNRC_RPL_PARENT_TIMEOUT_DIS_RETRIES (3) |
Number of DIS retries before parent times out.
Definition at line 628 of file rpl.h.
◆ DAGRANK
| #define DAGRANK |
( |
| rank, |
|
|
| mhri ) |
◆ GNRC_RPL_ALL_NODES_ADDR
| #define GNRC_RPL_ALL_NODES_ADDR {{ 0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1a }} |
Static initializer for the all-RPL-nodes multicast IPv6 address (ff02::1a)
- See also
- RFC 6550, section 6
Definition at line 206 of file rpl.h.
◆ GNRC_RPL_COUNTER_INIT
| #define GNRC_RPL_COUNTER_INIT (GNRC_RPL_COUNTER_MAX - GNRC_RPL_COUNTER_SEQ_WINDOW + 1) |
◆ GNRC_RPL_COUNTER_LOWER_REGION
| #define GNRC_RPL_COUNTER_LOWER_REGION (127) |
◆ GNRC_RPL_COUNTER_MAX
| #define GNRC_RPL_COUNTER_MAX (255) |
◆ GNRC_RPL_COUNTER_SEQ_WINDOW
| #define GNRC_RPL_COUNTER_SEQ_WINDOW (16) |
◆ GNRC_RPL_DEFAULT_MOP
| #define GNRC_RPL_DEFAULT_MOP GNRC_RPL_MOP_STORING_MODE_NO_MC |
default MOP set on compile time
Definition at line 287 of file rpl.h.
◆ GNRC_RPL_DEFAULT_OCP
| #define GNRC_RPL_DEFAULT_OCP (0) |
Default Objective Code Point (OF0)
Definition at line 256 of file rpl.h.
◆ GNRC_RPL_DEFAULT_PREFIX_LEN
| #define GNRC_RPL_DEFAULT_PREFIX_LEN (64) |
Default prefix length for the DODAG id.
Definition at line 368 of file rpl.h.
◆ GNRC_RPL_DEFAULT_PREFIX_LIFETIME
| #define GNRC_RPL_DEFAULT_PREFIX_LIFETIME (0xFFFFFFFF) |
Default prefix valid and preferred time for the DODAG id.
- Note
- Currently not used, but needed for RIOs
- See also
- Route Information
Definition at line 377 of file rpl.h.
◆ GNRC_RPL_DIS_SOLICITED_INFO_FLAG_D
| #define GNRC_RPL_DIS_SOLICITED_INFO_FLAG_D (1 << 5) |
◆ GNRC_RPL_DIS_SOLICITED_INFO_FLAG_I
| #define GNRC_RPL_DIS_SOLICITED_INFO_FLAG_I (1 << 6) |
◆ GNRC_RPL_DIS_SOLICITED_INFO_FLAG_V
| #define GNRC_RPL_DIS_SOLICITED_INFO_FLAG_V (1 << 7) |
◆ GNRC_RPL_DIS_SOLICITED_INFO_LENGTH
| #define GNRC_RPL_DIS_SOLICITED_INFO_LENGTH (19) |
◆ GNRC_RPL_GLOBAL_INSTANCE_MASK
| #define GNRC_RPL_GLOBAL_INSTANCE_MASK (0x7F) |
◆ GNRC_RPL_GROUNDED
| #define GNRC_RPL_GROUNDED (1) |
◆ GNRC_RPL_GROUNDED_SHIFT
| #define GNRC_RPL_GROUNDED_SHIFT (7) |
Shift of the Grounded 'G' flag in the DIO.
Definition at line 505 of file rpl.h.
◆ GNRC_RPL_ICMPV6_CODE_DAO
| #define GNRC_RPL_ICMPV6_CODE_DAO (0x02) |
◆ GNRC_RPL_ICMPV6_CODE_DAO_ACK
| #define GNRC_RPL_ICMPV6_CODE_DAO_ACK (0x03) |
◆ GNRC_RPL_ICMPV6_CODE_DIO
| #define GNRC_RPL_ICMPV6_CODE_DIO (0x01) |
◆ GNRC_RPL_ICMPV6_CODE_DIS
| #define GNRC_RPL_ICMPV6_CODE_DIS (0x00) |
◆ GNRC_RPL_IMPLEMENTED_OFS_NUMOF
| #define GNRC_RPL_IMPLEMENTED_OFS_NUMOF (1) |
Number of implemented Objective Functions.
Definition at line 251 of file rpl.h.
◆ GNRC_RPL_INFINITE_RANK
| #define GNRC_RPL_INFINITE_RANK (0xFFFF) |
◆ GNRC_RPL_INSTANCE_D_FLAG_MASK
| #define GNRC_RPL_INSTANCE_D_FLAG_MASK (1 << 6) |
◆ GNRC_RPL_INSTANCE_ID_MSB
| #define GNRC_RPL_INSTANCE_ID_MSB (1 << 7) |
◆ GNRC_RPL_LEAF_NODE
| #define GNRC_RPL_LEAF_NODE (2) |
◆ GNRC_RPL_LIFETIME_UPDATE_STEP
| #define GNRC_RPL_LIFETIME_UPDATE_STEP (2) |
Update interval of the lifetime update function.
Definition at line 561 of file rpl.h.
◆ GNRC_RPL_LOCAL_INSTANCE_MASK
| #define GNRC_RPL_LOCAL_INSTANCE_MASK (0x3F) |
◆ GNRC_RPL_MOP_NO_DOWNWARD_ROUTES
| #define GNRC_RPL_MOP_NO_DOWNWARD_ROUTES (0x00) |
◆ GNRC_RPL_MOP_NON_STORING_MODE
| #define GNRC_RPL_MOP_NON_STORING_MODE (0x01) |
◆ GNRC_RPL_MOP_SHIFT
| #define GNRC_RPL_MOP_SHIFT (3) |
Shift of the Mode of Operation (MOP) field in the DIO.
Definition at line 509 of file rpl.h.
◆ GNRC_RPL_MOP_STORING_MODE_MC
| #define GNRC_RPL_MOP_STORING_MODE_MC (0x03) |
◆ GNRC_RPL_MOP_STORING_MODE_NO_MC
| #define GNRC_RPL_MOP_STORING_MODE_NO_MC (0x02) |
◆ GNRC_RPL_MSG_QUEUE_SIZE
Message queue size to use for the RPL thread.
Definition at line 195 of file rpl.h.
◆ GNRC_RPL_MSG_TYPE_DAO_HANDLE
| #define GNRC_RPL_MSG_TYPE_DAO_HANDLE (0x0903) |
Message type for handling DAO sending.
Definition at line 221 of file rpl.h.
◆ GNRC_RPL_MSG_TYPE_LIFETIME_UPDATE
| #define GNRC_RPL_MSG_TYPE_LIFETIME_UPDATE (0x0900) |
Message type for lifetime updates.
Definition at line 211 of file rpl.h.
◆ GNRC_RPL_MSG_TYPE_TRICKLE_MSG
| #define GNRC_RPL_MSG_TYPE_TRICKLE_MSG (0x0901) |
Message type for trickle.
Definition at line 216 of file rpl.h.
◆ GNRC_RPL_NORMAL_NODE
| #define GNRC_RPL_NORMAL_NODE (0) |
◆ GNRC_RPL_OPT_DAG_METRIC_CONTAINER
| #define GNRC_RPL_OPT_DAG_METRIC_CONTAINER (2) |
Type ID of the DAG Metric Container option.
Definition at line 454 of file rpl.h.
◆ GNRC_RPL_OPT_DODAG_CONF
| #define GNRC_RPL_OPT_DODAG_CONF (4) |
Type ID of the DODAG Configuration option.
Definition at line 462 of file rpl.h.
◆ GNRC_RPL_OPT_PAD1
| #define GNRC_RPL_OPT_PAD1 (0) |
Type ID of the Pad1 option.
Definition at line 446 of file rpl.h.
◆ GNRC_RPL_OPT_PADN
| #define GNRC_RPL_OPT_PADN (1) |
Type ID of the PadN option.
Definition at line 450 of file rpl.h.
◆ GNRC_RPL_OPT_PREFIX_INFO
| #define GNRC_RPL_OPT_PREFIX_INFO (8) |
Type ID of the Prefix Information option.
Definition at line 483 of file rpl.h.
◆ GNRC_RPL_OPT_ROUTE_INFO
| #define GNRC_RPL_OPT_ROUTE_INFO (3) |
Type ID of the Route Information option.
Definition at line 458 of file rpl.h.
◆ GNRC_RPL_OPT_SOLICITED_INFO
| #define GNRC_RPL_OPT_SOLICITED_INFO (7) |
Type ID of the Solocited option.
Definition at line 479 of file rpl.h.
◆ GNRC_RPL_OPT_TARGET
| #define GNRC_RPL_OPT_TARGET (5) |
Type ID of the RPL Target option.
Definition at line 466 of file rpl.h.
◆ GNRC_RPL_OPT_TARGET_DESC
| #define GNRC_RPL_OPT_TARGET_DESC (9) |
Type ID of the RPL Target Descriptor option.
Definition at line 492 of file rpl.h.
◆ GNRC_RPL_OPT_TRANSIT
| #define GNRC_RPL_OPT_TRANSIT (6) |
Type ID of the Transit Information option.
Definition at line 470 of file rpl.h.
◆ GNRC_RPL_OPT_TRANSIT_E_FLAG_SHIFT
| #define GNRC_RPL_OPT_TRANSIT_E_FLAG_SHIFT (7) |
Shift of the External 'E' flag in the Transit Information flags.
Definition at line 475 of file rpl.h.
◆ GNRC_RPL_PREFIX_AUTO_ADDRESS_BIT
| #define GNRC_RPL_PREFIX_AUTO_ADDRESS_BIT (1 << 6) |
Shift of the autnomous address-configuration 'A' flag in the Prefix Information option.
Definition at line 488 of file rpl.h.
◆ GNRC_RPL_PRF_MASK
| #define GNRC_RPL_PRF_MASK (0x7) |
Mask for the 3 PRF bits.
Definition at line 517 of file rpl.h.
◆ GNRC_RPL_PRIO
Default priority for the RPL thread.
Definition at line 176 of file rpl.h.
◆ GNRC_RPL_ROOT_NODE
| #define GNRC_RPL_ROOT_NODE (1) |
◆ GNRC_RPL_ROOT_RANK
Rank of the root node.
Definition at line 524 of file rpl.h.
◆ GNRC_RPL_SHIFTED_MOP_MASK
| #define GNRC_RPL_SHIFTED_MOP_MASK (0x7) |
Mask for the 3 MOP bits.
Definition at line 513 of file rpl.h.
◆ GNRC_RPL_STACK_SIZE
Default stack size to use for the RPL thread.
Definition at line 169 of file rpl.h.
◆ gnrc_rpl_config_pio()
(De-)Activate the transmission of Prefix Information Options within DIOs for a particular DODAG.
This function has no effect if CONFIG_GNRC_RPL_WITHOUT_PIO is set.
- Parameters
-
| [in] | dodag | Pointer to the DODAG |
| [in] | status | true for activating PIOs and false for deactivating them |
Definition at line 819 of file rpl.h.
◆ gnrc_rpl_configure_root()
Convenience function to start a RPL root using the default configuration.
- Parameters
-
| [in] | netif | Network interface to use as RPL root |
| [in] | dodag_id | Id of the DODAG |
◆ GNRC_RPL_COUNTER_GREATER_THAN()
| static bool GNRC_RPL_COUNTER_GREATER_THAN |
( |
uint8_t | A, |
|
|
uint8_t | B ) |
|
inlinestatic |
◆ GNRC_RPL_COUNTER_GREATER_THAN_LOCAL()
| static bool GNRC_RPL_COUNTER_GREATER_THAN_LOCAL |
( |
uint8_t | A, |
|
|
uint8_t | B ) |
|
inlinestatic |
◆ GNRC_RPL_COUNTER_INCREMENT()
| static uint8_t GNRC_RPL_COUNTER_INCREMENT |
( |
uint8_t | counter | ) |
|
|
inlinestatic |
◆ GNRC_RPL_COUNTER_IS_INIT()
| static bool GNRC_RPL_COUNTER_IS_INIT |
( |
uint8_t | counter | ) |
|
|
inlinestatic |
◆ gnrc_rpl_delay_dao()
Delay the DAO sending interval.
- Parameters
-
| [in] | dodag | The DODAG of the DAO |
◆ gnrc_rpl_gen_instance_id()
| uint8_t gnrc_rpl_gen_instance_id |
( |
bool | local | ) |
|
Generate a local or global instance id.
- Parameters
-
| [in] | local | flag to indicate whether a local or global instance id is requested |
- Returns
- Local instance id, if
local is true
-
Global instance id, otherwise.
◆ gnrc_rpl_init()
Initialization of the RPL thread.
- Parameters
-
| [in] | if_pid | PID of the interface |
- Returns
- The PID of the RPL thread, on success.
-
a negative errno on error.
◆ gnrc_rpl_long_delay_dao()
Long delay the DAO sending interval.
- Parameters
-
| [in] | dodag | The DODAG of the DAO |
◆ gnrc_rpl_recv_DAO()
Parse a DAO.
- Parameters
-
| [in] | dao | Pointer to the DAO message. |
| [in] | iface | Interface PID of the incoming DIO. |
| [in] | src | Pointer to the source address of the IPv6 packet. |
| [in] | dst | Pointer to the destination address of the IPv6 packet. |
| [in] | len | Length of the IPv6 packet. |
◆ gnrc_rpl_recv_DAO_ACK()
Parse a DAO-ACK.
- Parameters
-
| [in] | dao_ack | Pointer to the DAO-ACK message. |
| [in] | iface | Interface PID of the incoming DIO. |
| [in] | src | Pointer to the source address of the IPv6 packet. |
| [in] | dst | Pointer to the destination address of the IPv6 packet. |
| [in] | len | Length of the IPv6 packet. |
◆ gnrc_rpl_recv_DIO()
Parse a DIO.
- Parameters
-
| [in] | dio | Pointer to the DIO message. |
| [in] | iface | Interface PID of the incoming DIO. |
| [in] | src | Pointer to the source address of the IPv6 packet. |
| [in] | dst | Pointer to the destination address of the IPv6 packet. |
| [in] | len | Length of the IPv6 packet. |
◆ gnrc_rpl_recv_DIS()
Parse a DIS.
- Parameters
-
| [in] | dis | Pointer to the DIS message. |
| [in] | iface | Interface PID of the incoming DIS. |
| [in] | src | Pointer to the source address of the IPv6 packet. |
| [in] | dst | Pointer to the destination address of the IPv6 packet. |
| [in] | len | Length of the IPv6 packet. |
◆ gnrc_rpl_root_init()
Initialization of a node as root.
- Parameters
-
| [in] | instance_id | Id of the instance |
| [in] | dodag_id | Id of the DODAG |
| [in] | gen_inst_id | Flag indicating whether to generate an instance id. If true, instance_id will be ignored |
| [in] | local_inst_id | Flag indicating whether a local or global instance id should be generatad |
- Returns
- Pointer to the new RPL Instance, on success.
-
NULL, otherwise.
◆ gnrc_rpl_root_instance_init()
Create a new RPL instance and RPL DODAG.
- Parameters
-
| [in] | instance_id | Id of the instance |
| [in] | dodag_id | Id of the DODAG |
| [in] | mop | Mode of Operation |
- Returns
- Pointer to the new RPL instance, on success.
-
NULL, otherwise.
◆ gnrc_rpl_send()
Send a control message.
- Parameters
-
| [in] | pkt | gnrc_pktnsip_t to send |
| [in] | iface | Interface PID to send this pkt to |
| [in] | src | Source address of the packet |
| [in] | dst | Destination address of the packet |
| [in] | dodag_id | Id of the DODAG |
◆ gnrc_rpl_send_DAO()
Send a DAO of the dodag to the destination.
- Parameters
-
| [in] | instance | Pointer to the instance. |
| [in] | destination | IPv6 address of the destination. |
| [in] | lifetime | Lifetime of the route to announce. |
◆ gnrc_rpl_send_DAO_ACK()
Send a DAO-ACK of the instance to the destination.
- Parameters
-
| [in] | instance | Pointer to the RPL instance. |
| [in] | destination | IPv6 address of the destination. |
| [in] | seq | Sequence number to be acknowledged. |
◆ gnrc_rpl_send_DIO()
Send a DIO of the instance to the destination.
- Parameters
-
| [in] | instance | Pointer to the RPL instance. |
| [in] | destination | IPv6 address of the destination. |
◆ gnrc_rpl_send_DIS()
Send a DIS of the instance to the destination.
- Parameters
-
| [in] | instance | Pointer to the RPL instance, optional. |
| [in] | destination | IPv6 address of the destination. |
| [in] | options | Pointer to the first option to be attached. |
| [in] | num_opts | The number of options to attach. |