Border Router

This module includes functions to manage local network data with the OpenThread Border Router.

Functions

otError otBorderRoutingInit (otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning)
 This method initializes the Border Routing Manager on given infrastructure interface.
 
otError otBorderRoutingSetEnabled (otInstance *aInstance, bool aEnabled)
 This method enables/disables the Border Routing Manager.
 
otError otBorderRoutingGetOmrPrefix (otInstance *aInstance, otIp6Prefix *aPrefix)
 This method returns the off-mesh-routable (OMR) prefix.
 
otError otBorderRoutingGetOnLinkPrefix (otInstance *aInstance, otIp6Prefix *aPrefix)
 This method returns the on-link prefix for the adjacent infrastructure link.
 
otError otBorderRoutingGetNat64Prefix (otInstance *aInstance, otIp6Prefix *aPrefix)
 This function returns the local NAT64 prefix.
 
otError otBorderRouterGetNetData (otInstance *aInstance, bool aStable, uint8_t *aData, uint8_t *aDataLength)
 This method provides a full or stable copy of the local Thread Network Data.
 
otError otBorderRouterAddOnMeshPrefix (otInstance *aInstance, const otBorderRouterConfig *aConfig)
 Add a border router configuration to the local network data.
 
otError otBorderRouterRemoveOnMeshPrefix (otInstance *aInstance, const otIp6Prefix *aPrefix)
 Remove a border router configuration from the local network data.
 
otError otBorderRouterGetNextOnMeshPrefix (otInstance *aInstance, otNetworkDataIterator *aIterator, otBorderRouterConfig *aConfig)
 This function gets the next On Mesh Prefix in the local Network Data.
 
otError otBorderRouterAddRoute (otInstance *aInstance, const otExternalRouteConfig *aConfig)
 Add an external route configuration to the local network data.
 
otError otBorderRouterRemoveRoute (otInstance *aInstance, const otIp6Prefix *aPrefix)
 Remove an external route configuration from the local network data.
 
otError otBorderRouterGetNextRoute (otInstance *aInstance, otNetworkDataIterator *aIterator, otExternalRouteConfig *aConfig)
 This function gets the next external route in the local Network Data.
 
otError otBorderRouterRegister (otInstance *aInstance)
 Immediately register the local network data with the Leader.

Detailed Description

This module includes functions to manage local network data with the OpenThread Border Router.

Function Documentation

◆ otBorderRouterAddOnMeshPrefix()

otError otBorderRouterAddOnMeshPrefix ( otInstance aInstance,
const otBorderRouterConfig aConfig 
)

Add a border router configuration to the local network data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aConfigA pointer to the border router configuration.
Return values
OT_ERROR_NONESuccessfully added the configuration to the local network data.
OT_ERROR_INVALID_ARGSOne or more configuration parameters were invalid.
OT_ERROR_NO_BUFSNot enough room is available to add the configuration to the local network data.
See also
otBorderRouterRemoveOnMeshPrefix
otBorderRouterRegister

◆ otBorderRouterAddRoute()

otError otBorderRouterAddRoute ( otInstance aInstance,
const otExternalRouteConfig aConfig 
)

Add an external route configuration to the local network data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aConfigA pointer to the external route configuration.
Return values
OT_ERROR_NONESuccessfully added the configuration to the local network data.
OT_ERROR_INVALID_ARGSOne or more configuration parameters were invalid.
OT_ERROR_NO_BUFSNot enough room is available to add the configuration to the local network data.
See also
otBorderRouterRemoveRoute
otBorderRouterRegister

◆ otBorderRouterGetNetData()

otError otBorderRouterGetNetData ( otInstance aInstance,
bool  aStable,
uint8_t *  aData,
uint8_t *  aDataLength 
)

This method provides a full or stable copy of the local Thread Network Data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aStableTRUE when copying the stable version, FALSE when copying the full version.
[out]aDataA pointer to the data buffer.
[in,out]aDataLengthOn entry, size of the data buffer pointed to by aData. On exit, number of copied bytes.

◆ otBorderRouterGetNextOnMeshPrefix()

otError otBorderRouterGetNextOnMeshPrefix ( otInstance aInstance,
otNetworkDataIterator aIterator,
otBorderRouterConfig aConfig 
)

This function gets the next On Mesh Prefix in the local Network Data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in,out]aIteratorA pointer to the Network Data iterator context. To get the first on-mesh entry it should be set to OT_NETWORK_DATA_ITERATOR_INIT.
[out]aConfigA pointer to the On Mesh Prefix information.
Return values
OT_ERROR_NONESuccessfully found the next On Mesh prefix.
OT_ERROR_NOT_FOUNDNo subsequent On Mesh prefix exists in the Thread Network Data.

◆ otBorderRouterGetNextRoute()

otError otBorderRouterGetNextRoute ( otInstance aInstance,
otNetworkDataIterator aIterator,
otExternalRouteConfig aConfig 
)

This function gets the next external route in the local Network Data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in,out]aIteratorA pointer to the Network Data iterator context. To get the first external route entry it should be set to OT_NETWORK_DATA_ITERATOR_INIT.
[out]aConfigA pointer to the External Route information.
Return values
OT_ERROR_NONESuccessfully found the next External Route.
OT_ERROR_NOT_FOUNDNo subsequent external route entry exists in the Thread Network Data.

◆ otBorderRouterRegister()

otError otBorderRouterRegister ( otInstance aInstance)

Immediately register the local network data with the Leader.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
Return values
OT_ERROR_NONESuccessfully queued a Server Data Request message for delivery.
See also
otBorderRouterAddOnMeshPrefix
otBorderRouterRemoveOnMeshPrefix
otBorderRouterAddRoute
otBorderRouterRemoveRoute

◆ otBorderRouterRemoveOnMeshPrefix()

otError otBorderRouterRemoveOnMeshPrefix ( otInstance aInstance,
const otIp6Prefix aPrefix 
)

Remove a border router configuration from the local network data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aPrefixA pointer to an IPv6 prefix.
Return values
OT_ERROR_NONESuccessfully removed the configuration from the local network data.
OT_ERROR_NOT_FOUNDCould not find the Border Router entry.
See also
otBorderRouterAddOnMeshPrefix
otBorderRouterRegister

◆ otBorderRouterRemoveRoute()

otError otBorderRouterRemoveRoute ( otInstance aInstance,
const otIp6Prefix aPrefix 
)

Remove an external route configuration from the local network data.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aPrefixA pointer to an IPv6 prefix.
Return values
OT_ERROR_NONESuccessfully removed the configuration from the local network data.
OT_ERROR_NOT_FOUNDCould not find the Border Router entry.
See also
otBorderRouterAddRoute
otBorderRouterRegister

◆ otBorderRoutingGetNat64Prefix()

otError otBorderRoutingGetNat64Prefix ( otInstance aInstance,
otIp6Prefix aPrefix 
)

This function returns the local NAT64 prefix.

This prefix might not be advertised in the Thread network.

This function is only available when OPENTHREAD_CONFIG_BORDER_ROUTING_NAT64_ENABLE is enabled.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[out]aPrefixA pointer to where the prefix will be output to.
Return values
OT_ERROR_INVALID_STATEThe Border Routing Manager is not initialized yet.
OT_ERROR_NONESuccessfully retrieved the NAT64 prefix.

◆ otBorderRoutingGetOmrPrefix()

otError otBorderRoutingGetOmrPrefix ( otInstance aInstance,
otIp6Prefix aPrefix 
)

This method returns the off-mesh-routable (OMR) prefix.

The randomly generated 64-bit prefix will be published in the Thread network if there isn't already an OMR prefix.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[out]aPrefixA pointer to where the prefix will be output to.
Return values
OT_ERROR_INVALID_STATEThe Border Routing Manager is not initialized yet.
OT_ERROR_NONESuccessfully retrieved the OMR prefix.

◆ otBorderRoutingGetOnLinkPrefix()

otError otBorderRoutingGetOnLinkPrefix ( otInstance aInstance,
otIp6Prefix aPrefix 
)

This method returns the on-link prefix for the adjacent infrastructure link.

The randomly generated 64-bit prefix will be advertised on the infrastructure link if there isn't already a usable on-link prefix being advertised on the link.

Parameters
[in]aInstanceA pointer to an OpenThread instance.
[out]aPrefixA pointer to where the prefix will be output to.
Return values
OT_ERROR_INVALID_STATEThe Border Routing Manager is not initialized yet.
OT_ERROR_NONESuccessfully retrieved the on-link prefix.

◆ otBorderRoutingInit()

otError otBorderRoutingInit ( otInstance aInstance,
uint32_t  aInfraIfIndex,
bool  aInfraIfIsRunning 
)

This method initializes the Border Routing Manager on given infrastructure interface.

Note
This method MUST be called before any other otBorderRouting* APIs.
Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aInfraIfIndexThe infrastructure interface index.
[in]aInfraIfIsRunningA boolean that indicates whether the infrastructure interface is running.
Return values
OT_ERROR_NONESuccessfully started the Border Routing Manager on given infrastructure.
OT_ERROR_INVALID_STATEThe Border Routing Manager has already been initialized.
OT_ERROR_INVALID_ARGSThe index of the infrastructure interface is not valid.
OT_ERROR_FAILEDInternal failure. Usually due to failure in generating random prefixes.
See also
otPlatInfraIfStateChanged.

◆ otBorderRoutingSetEnabled()

otError otBorderRoutingSetEnabled ( otInstance aInstance,
bool  aEnabled 
)

This method enables/disables the Border Routing Manager.

Note
The Border Routing Manager is disabled by default.
Parameters
[in]aInstanceA pointer to an OpenThread instance.
[in]aEnabledA boolean to enable/disable the routing manager.
Return values
OT_ERROR_INVALID_STATEThe Border Routing Manager is not initialized yet.
OT_ERROR_NONESuccessfully enabled/disabled the Border Routing Manager.