[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
+9 -1
View File
@@ -748,7 +748,10 @@ class NodeImpl:
self.send_command(cmd)
self._expect('Done')
def set_dua_iid(self, iid):
def set_dua_iid(self, iid: str):
assert len(iid) == 16
int(iid, 16)
cmd = 'dua iid {}'.format(iid)
self.send_command(cmd)
self._expect('Done')
@@ -1941,6 +1944,11 @@ class NodeImpl:
self.send_command(cmd)
self._expect("Done")
def send_proactive_backbone_notification(self, target: str, mliid: str, ltt: int):
cmd = f'fake /b/ba {target} {mliid} {ltt}'
self.send_command(cmd)
self._expect("Done")
class Node(NodeImpl, OtCli):
pass