[dua] implement Backbone query and answer (#5664)

This commit implements DUA features of Thread 1.2 DUA that involves
sending and processing Backbone query and answer:

- Extend address query to the Backbone Link
  - Send BB.qry for Thread address query
  - Send ADDR_ANS.ntf for BB.ans
- DAD process
  - PBBR to send BB.qry on the Backbone link (3 times if not answered)
  - PBBR to receive and handle BB.qry and sends BB.ans
  - PBBR to receive BB.ans and sends ADDR_ERR.ntf if duplicated
- PRO_BB.ntf
  - Send PRO_BB.ntf when DUA registration is updated
  - Handle PRO_BB.ntf
- Add test_dua_dad.py to test the DAD process when it was successful
  or duplicated
  - Verify the normal DAD process
  - Verify Address Query can be extended to the Backbone link
  - Verify DAD duplicate is handled correctly
  - Verify PRO_BB.ntf for duplicated DUA is handled correctly
This commit is contained in:
Simon Lin
2020-10-30 11:18:05 -07:00
committed by GitHub
parent ca8425d7bf
commit 903f677215
25 changed files with 1028 additions and 230 deletions
+5
View File
@@ -176,6 +176,8 @@ class TestCase(NcpSupportMixin, unittest.TestCase):
self.nodes[i].set_router_downgrade_threshold(params['router_downgrade_threshold'])
if 'router_eligible' in params:
self.nodes[i].set_router_eligible(params['router_eligible'])
if 'prefer_router_id' in params:
self.nodes[i].prefer_router_id(params['prefer_router_id'])
if 'timeout' in params:
self.nodes[i].set_timeout(params['timeout'])
@@ -327,6 +329,9 @@ class TestCase(NcpSupportMixin, unittest.TestCase):
test_info['rlocs'] = {}
for i, node in self.nodes.items():
if node.is_host:
continue
test_info['rlocs'][i] = node.get_rloc()
def collect_leader_aloc(self, node):