Border Router

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

Summary

Functions

otBorderRouterAddOnMeshPrefix(otInstance *aInstance, const otBorderRouterConfig *aConfig)
Add a border router configuration to the local network data.
otBorderRouterAddRoute(otInstance *aInstance, const otExternalRouteConfig *aConfig)
Add an external route configuration to the local network data.
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.
otBorderRouterGetNextOnMeshPrefix(otInstance *aInstance, otNetworkDataIterator *aIterator, otBorderRouterConfig *aConfig)
This function gets the next On Mesh Prefix in the local Network Data.
otBorderRouterGetNextRoute(otInstance *aInstance, otNetworkDataIterator *aIterator, otExternalRouteConfig *aConfig)
This function gets the next external route in the local Network Data.
otBorderRouterRegister(otInstance *aInstance)
Immediately register the local network data with the Leader.
otBorderRouterRemoveOnMeshPrefix(otInstance *aInstance, const otIp6Prefix *aPrefix)
Remove a border router configuration from the local network data.
otBorderRouterRemoveRoute(otInstance *aInstance, const otIp6Prefix *aPrefix)
Remove an external route configuration from the local network data.
otBorderRoutingGetOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
This method returns the off-mesh-routable (OMR) prefix.
otBorderRoutingGetOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
This method returns the on-link prefix for the adjacent infrastructure link.
otBorderRoutingInit(otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning)
This method initializes the Border Routing Manager on given infrastructure interface.
otBorderRoutingSetEnabled(otInstance *aInstance, bool aEnabled)
This method enables/disables the Border Routing Manager.

Functions

otBorderRouterAddOnMeshPrefix

otError otBorderRouterAddOnMeshPrefix(
  otInstance *aInstance,
  const otBorderRouterConfig *aConfig
)

Add a border router configuration to the local network data.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.

Details
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.