[network-data] iterate over all external routes or on-mesh prefix entries (#2073)

The same external route or on-mesh prefix can be registered by
different devices with different flags (e.g., different preference
level). This info is stored in network data as part of the
BorderRouterEntry TLV. This commit changes the methods
`GetNextOnMeshPrefix()` and `GetNextExternalRoute()`  to ensure that
different entries corresponding to the same prefix are provided
separately when iterating over all entries (i.e., without giving
a specific RLOC16).

To implement this the `otNetworkDataIterator` is changed to track
both the index into the `mTlvs` buffer and the entry index.

This commit also appends an RLOC16 field to the struct packing
format of `SPINEL_PROP_THREAD_ON_MESH_NETS and `OFF_MESH_ROUTES`
spinel properties and updates the implementation and documentation
accordingly.
This commit is contained in:
Abtin Keshavarzian
2017-08-09 21:48:57 -07:00
committed by Jonathan Hui
parent 6e8aef9644
commit 1e61811e70
7 changed files with 59 additions and 18 deletions
@@ -95,6 +95,8 @@ Data per item is:
* `b`: "Is defined locally" flag. Set if this network was locally
defined. Assumed to be true for set, insert and replace. Clear if
the on mesh network was defined by another node.
* `S`: The RLOC16 of the device that registered this on-mesh prefix entry.
This value is not used and ignored when adding an on-mesh prefix.
### PROP 91: PROP_THREAD_OFF_MESH_ROUTES
* Type: Read-Write
@@ -114,6 +116,8 @@ Data per item is:
route is this device itself (i.e., route was added by this device)
This value is ignored when adding an external route. For any added
route the next hop is this device.
* `S`: The RLOC16 of the device that registered this route entry.
This value is not used and ignored when adding a route.
### PROP 92: PROP_THREAD_ASSISTING_PORTS
* Type: Read-Write