mirror of
https://github.com/espressif/openthread.git
synced 2026-08-09 12:17:47 +00:00
Ncp: Update the get handler for list of off-mesh routes (from network data) (#1812)
This commit renames the spinel property `THREAD_LOCAL_ROUTES` to `THREAD_OFF_MESH_ROUTES` and updates the get handler for this property to include `isLocal` flag which specifies if the route is from local network data or partition's network data (this change makes the `OFF_MESH_ROUTES` behavior similar to property `ON_MESH_NETS`). The spinel draft documentation is also updated.
This commit is contained in:
committed by
Jonathan Hui
parent
c904910f64
commit
047b1980df
@@ -96,9 +96,9 @@ Data per item is:
|
||||
defined. Assumed to be true for set, insert and replace. Clear if
|
||||
the on mesh network was defined by another node.
|
||||
|
||||
### PROP 91: PROP_THREAD_LOCAL_ROUTES
|
||||
### PROP 91: PROP_THREAD_OFF_MESH_ROUTES
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `A(t(6CbC))`
|
||||
* Packed-Encoding: `A(t(6CbCb))`
|
||||
|
||||
Data per item is:
|
||||
|
||||
@@ -106,6 +106,10 @@ Data per item is:
|
||||
* `C`: Prefix length, in bits
|
||||
* `b`: Stable flag
|
||||
* `C`: Other flags
|
||||
* `b`: "Is defined locally" flag. Set if this route info was locally
|
||||
defined as part of local network data. Assumed to be true for set,
|
||||
insert and replace. Clear if the route is part of partition's network
|
||||
data.
|
||||
|
||||
### PROP 92: PROP_THREAD_ASSISTING_PORTS
|
||||
* Type: Read-Write
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+33
-9
@@ -161,7 +161,7 @@ const NcpBase::GetPropertyHandlerEntry NcpBase::mGetPropertyHandlerTable[] =
|
||||
{ SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION, &NcpBase::GetPropertyHandler_THREAD_STABLE_NETWORK_DATA_VERSION },
|
||||
{ SPINEL_PROP_THREAD_LEADER_NETWORK_DATA, &NcpBase::GetPropertyHandler_THREAD_LEADER_NETWORK_DATA },
|
||||
{ SPINEL_PROP_THREAD_STABLE_LEADER_NETWORK_DATA, &NcpBase::GetPropertyHandler_THREAD_STABLE_LEADER_NETWORK_DATA },
|
||||
{ SPINEL_PROP_THREAD_LOCAL_ROUTES, &NcpBase::GetPropertyHandler_THREAD_LOCAL_ROUTES },
|
||||
{ SPINEL_PROP_THREAD_OFF_MESH_ROUTES, &NcpBase::GetPropertyHandler_THREAD_OFF_MESH_ROUTES },
|
||||
{ SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::GetPropertyHandler_THREAD_ASSISTING_PORTS },
|
||||
{ SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE, &NcpBase::GetPropertyHandler_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE },
|
||||
|
||||
@@ -373,7 +373,7 @@ const NcpBase::InsertPropertyHandlerEntry NcpBase::mInsertPropertyHandlerTable[]
|
||||
{ SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES, &NcpBase::InsertPropertyHandler_MAC_SRC_MATCH_EXTENDED_ADDRESSES },
|
||||
#endif
|
||||
{ SPINEL_PROP_IPV6_ADDRESS_TABLE, &NcpBase::InsertPropertyHandler_IPV6_ADDRESS_TABLE },
|
||||
{ SPINEL_PROP_THREAD_LOCAL_ROUTES, &NcpBase::InsertPropertyHandler_THREAD_LOCAL_ROUTES },
|
||||
{ SPINEL_PROP_THREAD_OFF_MESH_ROUTES, &NcpBase::InsertPropertyHandler_THREAD_OFF_MESH_ROUTES },
|
||||
{ SPINEL_PROP_THREAD_ON_MESH_NETS, &NcpBase::InsertPropertyHandler_THREAD_ON_MESH_NETS },
|
||||
{ SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::InsertPropertyHandler_THREAD_ASSISTING_PORTS },
|
||||
|
||||
@@ -393,7 +393,7 @@ const NcpBase::RemovePropertyHandlerEntry NcpBase::mRemovePropertyHandlerTable[]
|
||||
{ SPINEL_PROP_MAC_SRC_MATCH_EXTENDED_ADDRESSES, &NcpBase::RemovePropertyHandler_MAC_SRC_MATCH_EXTENDED_ADDRESSES },
|
||||
#endif
|
||||
{ SPINEL_PROP_IPV6_ADDRESS_TABLE, &NcpBase::RemovePropertyHandler_IPV6_ADDRESS_TABLE },
|
||||
{ SPINEL_PROP_THREAD_LOCAL_ROUTES, &NcpBase::RemovePropertyHandler_THREAD_LOCAL_ROUTES },
|
||||
{ SPINEL_PROP_THREAD_OFF_MESH_ROUTES, &NcpBase::RemovePropertyHandler_THREAD_OFF_MESH_ROUTES },
|
||||
{ SPINEL_PROP_THREAD_ON_MESH_NETS, &NcpBase::RemovePropertyHandler_THREAD_ON_MESH_NETS },
|
||||
{ SPINEL_PROP_THREAD_ASSISTING_PORTS, &NcpBase::RemovePropertyHandler_THREAD_ASSISTING_PORTS },
|
||||
{ SPINEL_PROP_MAC_WHITELIST, &NcpBase::RemovePropertyHandler_MAC_WHITELIST },
|
||||
@@ -3034,7 +3034,7 @@ otError NcpBase::GetPropertyHandler_THREAD_RLOC16_DEBUG_PASSTHRU(uint8_t header,
|
||||
);
|
||||
}
|
||||
|
||||
otError NcpBase::GetPropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_prop_key_t key)
|
||||
otError NcpBase::GetPropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, spinel_prop_key_t key)
|
||||
{
|
||||
otError errorCode = OT_ERROR_NONE;
|
||||
otExternalRouteConfig external_route_config;
|
||||
@@ -3058,14 +3058,38 @@ otError NcpBase::GetPropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_p
|
||||
SPINEL_DATATYPE_UINT8_S // Prefix Length (in bits)
|
||||
SPINEL_DATATYPE_BOOL_S // isStable
|
||||
SPINEL_DATATYPE_UINT8_S // Flags
|
||||
SPINEL_DATATYPE_BOOL_S // IsLocal
|
||||
),
|
||||
&external_route_config.mPrefix.mPrefix,
|
||||
external_route_config.mPrefix.mLength,
|
||||
external_route_config.mStable,
|
||||
flags
|
||||
flags,
|
||||
false
|
||||
));
|
||||
}
|
||||
|
||||
while (otNetDataGetNextRoute(mInstance, true, &iter, &external_route_config) == OT_ERROR_NONE)
|
||||
{
|
||||
flags = static_cast<uint8_t>(external_route_config.mPreference);
|
||||
flags <<= SPINEL_NET_FLAG_PREFERENCE_OFFSET;
|
||||
|
||||
SuccessOrExit(errorCode = OutboundFrameFeedPacked(
|
||||
SPINEL_DATATYPE_STRUCT_S(
|
||||
SPINEL_DATATYPE_IPv6ADDR_S // IPv6 Prefix
|
||||
SPINEL_DATATYPE_UINT8_S // Prefix Length (in bits)
|
||||
SPINEL_DATATYPE_BOOL_S // isStable
|
||||
SPINEL_DATATYPE_UINT8_S // Flags
|
||||
SPINEL_DATATYPE_BOOL_S // IsLocal
|
||||
),
|
||||
&external_route_config.mPrefix.mPrefix,
|
||||
external_route_config.mPrefix.mLength,
|
||||
external_route_config.mStable,
|
||||
flags,
|
||||
true
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
SuccessOrExit(errorCode = OutboundFrameSend());
|
||||
|
||||
exit:
|
||||
@@ -3735,7 +3759,7 @@ otError NcpBase::SetPropertyHandler_HOST_POWER_STATE(uint8_t header, spinel_prop
|
||||
if (parsedLength > 0)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
{
|
||||
case SPINEL_HOST_POWER_STATE_OFFLINE:
|
||||
case SPINEL_HOST_POWER_STATE_DEEP_SLEEP:
|
||||
case SPINEL_HOST_POWER_STATE_LOW_POWER:
|
||||
@@ -6538,8 +6562,8 @@ exit:
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
otError NcpBase::InsertPropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len)
|
||||
otError NcpBase::InsertPropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len)
|
||||
{
|
||||
spinel_ssize_t parsedLength;
|
||||
otError errorCode = OT_ERROR_NONE;
|
||||
@@ -6965,7 +6989,7 @@ otError NcpBase::RemovePropertyHandler_IPV6_ADDRESS_TABLE(uint8_t header, spinel
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
otError NcpBase::RemovePropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
otError NcpBase::RemovePropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len)
|
||||
{
|
||||
spinel_ssize_t parsedLength;
|
||||
|
||||
@@ -382,7 +382,7 @@ private:
|
||||
otError GetPropertyHandler_IPV6_ROUTE_TABLE(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_IPV6_ICMP_PING_OFFLOAD(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_THREAD_RLOC16_DEBUG_PASSTHRU(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_STREAM_NET(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_MAC_SCAN_MASK(uint8_t header, spinel_prop_key_t key);
|
||||
otError GetPropertyHandler_MAC_SCAN_PERIOD(uint8_t header, spinel_prop_key_t key);
|
||||
@@ -612,7 +612,7 @@ private:
|
||||
#endif
|
||||
otError InsertPropertyHandler_IPV6_ADDRESS_TABLE(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len);
|
||||
otError InsertPropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
otError InsertPropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len);
|
||||
otError InsertPropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len);
|
||||
@@ -633,7 +633,7 @@ private:
|
||||
#endif
|
||||
otError RemovePropertyHandler_IPV6_ADDRESS_TABLE(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len);
|
||||
otError RemovePropertyHandler_THREAD_LOCAL_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
otError RemovePropertyHandler_THREAD_OFF_MESH_ROUTES(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len);
|
||||
otError RemovePropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spinel_prop_key_t key,
|
||||
const uint8_t *value_ptr, uint16_t value_len);
|
||||
|
||||
+2
-2
@@ -1152,8 +1152,8 @@ spinel_prop_key_to_cstr(spinel_prop_key_t prop_key)
|
||||
ret = "PROP_THREAD_ON_MESH_NETS";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_LOCAL_ROUTES:
|
||||
ret = "PROP_THREAD_LOCAL_ROUTES";
|
||||
case SPINEL_PROP_THREAD_OFF_MESH_ROUTES:
|
||||
ret = "PROP_THREAD_OFF_MESH_ROUTES";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_ASSISTING_PORTS:
|
||||
|
||||
+2
-2
@@ -725,8 +725,8 @@ typedef enum
|
||||
= SPINEL_PROP_THREAD__BEGIN + 8, ///< [D]
|
||||
SPINEL_PROP_THREAD_STABLE_NETWORK_DATA_VERSION
|
||||
= SPINEL_PROP_THREAD__BEGIN + 9, ///< [S]
|
||||
SPINEL_PROP_THREAD_ON_MESH_NETS = SPINEL_PROP_THREAD__BEGIN + 10, ///< array(ipv6prefix,prefixlen,stable,flags) [A(t(6CbC))]
|
||||
SPINEL_PROP_THREAD_LOCAL_ROUTES = SPINEL_PROP_THREAD__BEGIN + 11, ///< array(ipv6prefix,prefixlen,stable,flags) [A(t(6CbC))]
|
||||
SPINEL_PROP_THREAD_ON_MESH_NETS = SPINEL_PROP_THREAD__BEGIN + 10, ///< array(ipv6prefix,prefixlen,stable,flags,isLocal) [A(t(6CbCb))]
|
||||
SPINEL_PROP_THREAD_OFF_MESH_ROUTES = SPINEL_PROP_THREAD__BEGIN + 11, ///< array(ipv6prefix,prefixlen,stable,flags,isLocal) [A(t(6CbCb))]
|
||||
SPINEL_PROP_THREAD_ASSISTING_PORTS = SPINEL_PROP_THREAD__BEGIN + 12, ///< array(portn) [A(S)]
|
||||
SPINEL_PROP_THREAD_ALLOW_LOCAL_NET_DATA_CHANGE
|
||||
= SPINEL_PROP_THREAD__BEGIN + 13, ///< [b]
|
||||
|
||||
Reference in New Issue
Block a user