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 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] aInstance A pointer to an OpenThread instance.
[in] aConfig A pointer to the border router configuration.
Return values
OT_ERROR_NONE Successfully added the configuration to the local network data.
OT_ERROR_INVALID_ARGS One or more configuration parameters were invalid.
OT_ERROR_NO_BUFS Not 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] aInstance A pointer to an OpenThread instance.
[in] aConfig A pointer to the external route configuration.
Return values
OT_ERROR_NONE Successfully added the configuration to the local network data.
OT_ERROR_INVALID_ARGS One or more configuration parameters were invalid.
OT_ERROR_NO_BUFS Not 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] aInstance A pointer to an OpenThread instance.
[in] aStable TRUE when copying the stable version, FALSE when copying the full version.
[out] aData A pointer to the data buffer.
[in,out] aDataLength On 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] aInstance A pointer to an OpenThread instance.
[in,out] aIterator A 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] aConfig A pointer to the On Mesh Prefix information.
Return values
OT_ERROR_NONE Successfully found the next On Mesh prefix.
OT_ERROR_NOT_FOUND No 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] aInstance A pointer to an OpenThread instance.
[in,out] aIterator A 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] aConfig A pointer to the External Route information.
Return values
OT_ERROR_NONE Successfully found the next External Route.
OT_ERROR_NOT_FOUND No 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] aInstance A pointer to an OpenThread instance.
Return values
OT_ERROR_NONE Successfully 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] aInstance A pointer to an OpenThread instance.
[in] aPrefix A pointer to an IPv6 prefix.
Return values
OT_ERROR_NONE Successfully removed the configuration from the local network data.
OT_ERROR_NOT_FOUND Could 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] aInstance A pointer to an OpenThread instance.
[in] aPrefix A pointer to an IPv6 prefix.
Return values
OT_ERROR_NONE Successfully removed the configuration from the local network data.
OT_ERROR_NOT_FOUND Could not find the Border Router entry.
See also
otBorderRouterAddRoute
otBorderRouterRegister

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] aInstance A pointer to an OpenThread instance.
[out] aPrefix A pointer to where the prefix will be output to.
Return values
OT_ERROR_INVALID_STATE The Border Routing Manager is not initialized yet.
OT_ERROR_NONE Successfully 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] aInstance A pointer to an OpenThread instance.
[out] aPrefix A pointer to where the prefix will be output to.
Return values
OT_ERROR_INVALID_STATE The Border Routing Manager is not initialized yet.
OT_ERROR_NONE Successfully 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] aInstance A pointer to an OpenThread instance.
[in] aInfraIfIndex The infrastructure interface index.
[in] aInfraIfIsRunning A boolean that indicates whether the infrastructure interface is running.
Return values
OT_ERROR_NONE Successfully started the Border Routing Manager on given infrastructure.
OT_ERROR_INVALID_STATE The Border Routing Manager has already been initialized.
OT_ERROR_INVALID_ARGS The index of the infrastructure interface is not valid.
OT_ERROR_FAILED Internal 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] aInstance A pointer to an OpenThread instance.
[in] aEnabled A boolean to enable/disable the routing manager.
Return values
OT_ERROR_INVALID_STATE The Border Routing Manager is not initialized yet.
OT_ERROR_NONE Successfully enabled/disabled the Border Routing Manager.