mbed-os/connectivity/nanostack/sal-stack-nanostack/source/RPL/rpl_protocol.h

88 lines
2.9 KiB
C

/*
* Copyright (c) 2015, 2017, Pelion and affiliates.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef RPL_PROTOCOL_H_
#define RPL_PROTOCOL_H_
#include "net_rpl.h" // for RPL_INSTANCE_LOCAL
/* RPL messages are defined as ICMPv6 Codes in Common_Protocols/icmpv6.h */
/* Options in ICMPv6 RPL messages (RFC 6550) */
#define RPL_PAD1_OPTION 0
#define RPL_PADN_OPTION 1
#define RPL_DAG_METRIC_OPTION 2
#define RPL_ROUTE_INFO_OPTION 3
#define RPL_DODAG_CONF_OPTION 4
#define RPL_TARGET_OPTION 5
#define RPL_TRANSIT_OPTION 6
#define RPL_SOL_INFO_OPTION 7
#define RPL_PREFIX_INFO_OPTION 8
#define RPL_TARGET_DESC_OPTION 9
#define RPL_P2P_ROUTE_DESC_OPTION 0x0a
/* Flags in DAO_Transit Information Option */
#define TRANSIT_FLAG_EXTERNAL 0x80
/* Predicates in DIS Solicited Information Option */
#define RPL_SOLINFO_PRED_VERSION 0x80
#define RPL_SOLINFO_PRED_INSTANCEID 0x40
#define RPL_SOLINFO_PRED_DODAGID 0x20
/* Flags in DODAG Configuration */
#define RPL_CONF_FLAG_AUTH 0x08
#define RPL_CONF_PCS_MASK 0x07
/* Flags in DAO Base Object */
#define RPL_DAO_FLAG_ACK_REQ 0x80 /* 'K' */
#define RPL_DAO_FLAG_DODAGID 0x40 /* 'D' */
/* Flags in DAO-ACK Base Object */
#define RPL_DAO_ACK_FLAG_DODAGID 0x80 /* 'D' */
/* RPL Objective Code Points */
#define RPL_OCP_OF0 0 /* RFC 6552 */
#define RPL_OCP_MRHOF 1 /* RFC 6719 */
/* Routing Metric/Constraint Types (RFC 6551) */
#define RPL_MC_NODE_STATE 1
#define RPL_MC_NODE_ENERGY 2
#define RPL_MC_HOP_COUNT 3
#define RPL_MC_LINK_THROUGHPUT 4
#define RPL_MC_LINK_LATENCY 5
#define RPL_MC_LINK_QUALITY 6
#define RPL_MC_LINK_ETX 7
#define RPL_MC_LINK_COLOR 8
/* Flags in IPv6 RPL Option (RFC 6553) */
#define RPL_OPT_DOWN 0x80 /* 'O' */
#define RPL_OPT_RANK_ERROR 0x40 /* 'R' */
#define RPL_OPT_FWD_ERROR 0x20 /* 'F' */
/* Flags in RPL InstanceID */
// RPL_INSTANCE_LOCAL defined in net_rpl.h, as it's part of public API
#define RPL_INSTANCE_DEST 0x40 /* 'D' */
#define rpl_instance_id_is_local(id) (((id) & RPL_INSTANCE_LOCAL) != 0)
#define rpl_instance_id_is_global(id) (((id) & RPL_INSTANCE_LOCAL) == 0)
#define RPL_RANK_INFINITE 0xffff
extern const uint8_t ADDR_LINK_LOCAL_ALL_RPL_NODES[16];
#endif /* RPL_PROTOCOL_H_ */