Message ID | 20230124202616.310544-2-brian.gix@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Mesh v1.1 additions | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/CheckPatch | success | CheckPatch PASS |
tedd_an/GitLint | fail | WARNING: I3 - ignore-body-lines: gitlint will be switching from using Python regex 'match' (match beginning) to 'search' (match anywhere) semantics. Please review your ignore-body-lines.regex option accordingly. To remove this warning, set general.regex-style-search=True. More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search 11: B3 Line contains hard tab characters (\t): " * Refresh Device Keys" 12: B3 Line contains hard tab characters (\t): " * Reassign Node Addresses" 13: B3 Line contains hard tab characters (\t): " * Refresh Node Composition" |
tedd_an/BuildEll | success | Build ELL PASS |
tedd_an/BluezMake | success | Bluez Make PASS |
tedd_an/MakeCheck | success | Bluez Make Check PASS |
tedd_an/MakeDistcheck | success | Make Distcheck PASS |
tedd_an/CheckValgrind | success | Check Valgrind PASS |
tedd_an/CheckSmatch | success | CheckSparse PASS |
tedd_an/bluezmakeextell | success | Make External ELL PASS |
tedd_an/IncrementalBuild | success | Incremental Build PASS |
tedd_an/ScanBuild | warning | ScanBuild: In file included from unit/test-mesh-crypto.c:20: In file included from ./mesh/crypto.c:18: In file included from ./ell/ell.h:1: ./ell/util.h:187:9: warning: 1st function call argument is an uninitialized value return L_BE32_TO_CPU(L_GET_UNALIGNED((const uint32_t *) ptr)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./ell/util.h:89:28: note: expanded from macro 'L_BE32_TO_CPU' #define L_BE32_TO_CPU(val) bswap_32(val) ^~~~~~~~~~~~~ /usr/include/byteswap.h:34:21: note: expanded from macro 'bswap_32' #define bswap_32(x) __bswap_32 (x) ^~~~~~~~~~~~~~ 1 warning generated. |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=715272 ---Test result--- Test Summary: CheckPatch FAIL 9.03 seconds GitLint FAIL 3.65 seconds BuildEll PASS 32.94 seconds BluezMake PASS 997.15 seconds MakeCheck PASS 13.09 seconds MakeDistcheck PASS 180.02 seconds CheckValgrind PASS 293.68 seconds CheckSmatch PASS 388.11 seconds bluezmakeextell PASS 117.27 seconds IncrementalBuild PASS 10456.45 seconds ScanBuild WARNING 1194.97 seconds Details ############################## Test: CheckPatch - FAIL Desc: Run checkpatch.pl script Output: [BlueZ,v4,02/13] mesh: Add Remote Provisioning WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #3307: FILE: mesh/remprv-server.c:238: + /* fall through */ WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #3516: FILE: mesh/remprv-server.c:447: + /* fall through */ WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #3520: FILE: mesh/remprv-server.c:451: + /* fall through */ WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #3798: FILE: mesh/remprv-server.c:729: + /* fall through */ /github/workspace/src/src/13114772.patch total: 0 errors, 4 warnings, 3742 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/src/13114772.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [BlueZ,v4,07/13] mesh: Add Mesh Private Beacon server WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #228: FILE: mesh/prvbeac-server.c:74: + /* fall through */ WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #240: FILE: mesh/prvbeac-server.c:86: + /* fall through */ WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment #247: FILE: mesh/prvbeac-server.c:93: + /* fall through */ /github/workspace/src/src/13114768.patch total: 0 errors, 3 warnings, 166 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/src/13114768.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. ############################## Test: GitLint - FAIL Desc: Run gitlint Output: [BlueZ,v4,01/13] doc/mesh: Add Remote Provisioning DBus APIs WARNING: I3 - ignore-body-lines: gitlint will be switching from using Python regex 'match' (match beginning) to 'search' (match anywhere) semantics. Please review your ignore-body-lines.regex option accordingly. To remove this warning, set general.regex-style-search=True. More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search 11: B3 Line contains hard tab characters (\t): " * Refresh Device Keys" 12: B3 Line contains hard tab characters (\t): " * Reassign Node Addresses" 13: B3 Line contains hard tab characters (\t): " * Refresh Node Composition" ############################## Test: ScanBuild - WARNING Desc: Run Scan Build Output: In file included from unit/test-mesh-crypto.c:20: In file included from ./mesh/crypto.c:18: In file included from ./ell/ell.h:1: ./ell/util.h:187:9: warning: 1st function call argument is an uninitialized value return L_BE32_TO_CPU(L_GET_UNALIGNED((const uint32_t *) ptr)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./ell/util.h:89:28: note: expanded from macro 'L_BE32_TO_CPU' #define L_BE32_TO_CPU(val) bswap_32(val) ^~~~~~~~~~~~~ /usr/include/byteswap.h:34:21: note: expanded from macro 'bswap_32' #define bswap_32(x) __bswap_32 (x) ^~~~~~~~~~~~~~ 1 warning generated. --- Regards, Linux Bluetooth
Hi Brian, Just a few terminology comments to make t consistent with the spec. On Tue, 2023-01-24 at 12:26 -0800, Brian Gix wrote: > From: Brian Gix <brian.gix@intel.com> > > Remote Provisioning (introduced in Mesh Profile Specification v1.1) > > * Allows Provisioners to use a remote server to scan for and > provision devices. > > * Allows Config managers to reprovision existing nodes to: > * Refresh Device Keys > * Reassign Node Addresses > * Refresh Node Composition > --- > doc/mesh-api.txt | 140 > +++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 134 insertions(+), 6 deletions(-) > > diff --git a/doc/mesh-api.txt b/doc/mesh-api.txt > index 85de6705e..393ae566f 100644 > --- a/doc/mesh-api.txt > +++ b/doc/mesh-api.txt > @@ -484,7 +484,28 @@ Methods: > Specifies number of seconds for scanning to > be active. > If set to 0 or if this key is not present, > then the > scanning will continue until > UnprovisionedScanCancel() > - or AddNode() methods are called. > + or AddNode() methods are called. If not > present, and a > + remote server is specified, the default > timeout will be > + 60 seconds. > + > + uint16 Server > + Specifies a remote server on which to perform > scanning. > + If not present, scanning will be local. If > present, > + the timeout must be between 1 and 60 seconds. > + > + uint16 Subnet > + Specifies a subnet for the remote server. If > not > + present, primary subnet will be used. If > Server not > + present, the Subnet will be ignored. > + > + array{byte}[16] Filter > + Specifies a specific UUID to search for. If > not > + present, all found UUIDs will be returned. > + > + uint8 array Extended > + Specifies variable number of Bluetooth AD > types to > + return with scan result. Only valid if a > Filter has been > + specified. > > Each time a unique unprovisioned beacon is heard, the > ScanResult() method on the app will be called with > the result. > @@ -514,8 +535,48 @@ Methods: > of the unprovisioned device to be added to the > network. > > The options parameter is a dictionary that may > contain > - additional configuration info (currently an empty > placeholder > - for forward compatibility). > + additional optional configuration info: > + > + uint16 Server > + Specifies a remote server to perform > provisioning on. If > + not present, provisioning will be done > locally. > + > + uint16 Subnet > + Specifies a subnet for the remote server. If > not > + present, primary subnet will be used. If > Server not > + present Subnet will be ignored. > + > + PossibleErrors: > + org.bluez.mesh.Error.InvalidArguments > + org.bluez.mesh.Error.NotAuthorized > + > + void Reprovision(uint16 unicast, dict options) > + > + This method is used by the application that supports > + org.bluez.mesh.Provisioner1 interface to perform one > of the > + Node Provisioning Protocol Interface procedures with > a remote > + node to refresh its device key, unicast address, and > + composition. Remote node being reprovisioned must > have the > + Remote Provisioning Server model. > + > + The unicast parameter is the 16-bit primary node > address of > + the remote node being reprovisioned. > + > + The options parameter is a dictionary that may > contain > + additional optional configuration info: > + > + uint8 NPPI > + Specifies the Node Provisioning Protocol > Interface > + behavior, as defined in the Mesh Profile ingas: "behavior" -> "procedure" > Specification: > + 0 - Device Key Refresh Only > + 1 - Node Address Refresh > + 2 - Node Composition Refresh > + > + If not present, behavior 0 will be used. ingas: "behavior" -> "procedure" > + > + uint16 Subnet > + Specifies the subnet remote node is on. If > not > + present, primary subnet will be tried. > > PossibleErrors: > org.bluez.mesh.Error.InvalidArguments > @@ -1055,11 +1116,19 @@ Object path freely definable > byte remote device UUID (always), a 16 bit mask of > OOB > authentication flags (optional), and a 32 bit URI > hash (if URI > bit set in OOB mask). Whether these fields exist or > not is a > - decision of the remote device. > + decision of the unprovisioned device. > > The options parameter is a dictionary that may > contain > - additional scan result info (currently an empty > placeholder for > - forward compatibility). > + additional optional configuration info: > + > + uint16 Server > + Specifies the remote server that received the > + Unprovisioned beacon. If not present, beacon > was > + received locally. > + > + uint8 array ExtendedData > + If Extended data was requested during > scanning, any > + received data will be returned here. > > If a beacon with a UUID that has already been > reported is > recieved by the daemon, it will be silently discarded > unless it > @@ -1082,6 +1151,26 @@ Object path freely definable > PossibleErrors: > org.bluez.mesh.Error.Abort > > + uint16 unicast RequestReprovData(uint16 original, uint8 > count) > + > + This method is implemented by a Provisioner capable > application > + and is called when the remote node being > reprovisioned has been > + fully authenticated and confirmed. This method will > only be > + called if the NPPI-1 procedure (Node Address Refresh) > is being > + performed. > + > + The original parameter is the current unicast address > of the > + node being reprovisioned. > + > + The count parameter is the number of consecutive > unicast > + addresses the remote node is requesting. > + > + Return Parameter: > + unicast - Primary Unicast address of the new node > + > + PossibleErrors: > + org.bluez.mesh.Error.Abort > + > void AddNodeComplete(array{byte}[16] uuid, uint16 unicast, > uint8 count) > > This method is called when the node provisioning > initiated > @@ -1096,6 +1185,33 @@ Object path freely definable > The new node may now be sent messages using the > credentials > supplied by the RequestProvData method. > > + void ReprovComplete(uint16 original, uint8 nppi, uint16 > unicast, > + uint8 > count) > + > + This method is called when the node Reprovisioning > initiated > + by a Reprovision() method call successfully > completed. > + > + The original parameter is the former primary address > of the > + node that has been reprovisioned. > + > + The nppi parameter indicates which NPPI behavior was > performed. ingas: "behavior" -> "procedure" > + If behavior 1 or 2 was performed, the node is ingas: "behavior" -> "procedure" > materially > + different than it was before reprovisioning, and > Composition, > + Bindings, Publication and Subscription settings > should be > + refreshed. > + > + The unicast parameter is the new primary address that > has been > + assigned to the node, If NPPI behavior 1 was ingas: "," -> "." "behavior" -> "procedure" > performed this > + value may be different from the original. If behavior > 0 or 2 ingas: "behavior" -> "procedure" > + was performed, the original and new primary address > should be > + the same. > + > + The count parameter is the number of unicast > addresses assigned > + to the node. > + > + The node may now be sent messages using the > credentials > + supplied by the RequestReprovData method. > + > void AddNodeFailed(array{byte}[16] uuid, string reason) > > This method is called when the node provisioning > initiated by > @@ -1109,6 +1225,18 @@ Object path freely definable > "decryption-error", "unexpected-error", > "cannot-assign-addresses". > > + void ReprovFailed(uint16 unicast, string reason) > + > + This method is called when node reprovisioning > initiated by > + Reprovision() has failed. If reprovisioning has > failed, the > + prior credentials of the remote node may still be > valid. > + > + The reason parameter identifies the reason for > provisioning > + failure. The defined values are: "aborted", > "timeout", > + "bad-pdu", "confirmation-failed", "out-of-resources", > + "decryption-error", "unexpected-error", > + "cannot-assign-addresses". > + > Provisioning Agent Hierarchy > ============================ > Service unique name
diff --git a/doc/mesh-api.txt b/doc/mesh-api.txt index 85de6705e..393ae566f 100644 --- a/doc/mesh-api.txt +++ b/doc/mesh-api.txt @@ -484,7 +484,28 @@ Methods: Specifies number of seconds for scanning to be active. If set to 0 or if this key is not present, then the scanning will continue until UnprovisionedScanCancel() - or AddNode() methods are called. + or AddNode() methods are called. If not present, and a + remote server is specified, the default timeout will be + 60 seconds. + + uint16 Server + Specifies a remote server on which to perform scanning. + If not present, scanning will be local. If present, + the timeout must be between 1 and 60 seconds. + + uint16 Subnet + Specifies a subnet for the remote server. If not + present, primary subnet will be used. If Server not + present, the Subnet will be ignored. + + array{byte}[16] Filter + Specifies a specific UUID to search for. If not + present, all found UUIDs will be returned. + + uint8 array Extended + Specifies variable number of Bluetooth AD types to + return with scan result. Only valid if a Filter has been + specified. Each time a unique unprovisioned beacon is heard, the ScanResult() method on the app will be called with the result. @@ -514,8 +535,48 @@ Methods: of the unprovisioned device to be added to the network. The options parameter is a dictionary that may contain - additional configuration info (currently an empty placeholder - for forward compatibility). + additional optional configuration info: + + uint16 Server + Specifies a remote server to perform provisioning on. If + not present, provisioning will be done locally. + + uint16 Subnet + Specifies a subnet for the remote server. If not + present, primary subnet will be used. If Server not + present Subnet will be ignored. + + PossibleErrors: + org.bluez.mesh.Error.InvalidArguments + org.bluez.mesh.Error.NotAuthorized + + void Reprovision(uint16 unicast, dict options) + + This method is used by the application that supports + org.bluez.mesh.Provisioner1 interface to perform one of the + Node Provisioning Protocol Interface procedures with a remote + node to refresh its device key, unicast address, and + composition. Remote node being reprovisioned must have the + Remote Provisioning Server model. + + The unicast parameter is the 16-bit primary node address of + the remote node being reprovisioned. + + The options parameter is a dictionary that may contain + additional optional configuration info: + + uint8 NPPI + Specifies the Node Provisioning Protocol Interface + behavior, as defined in the Mesh Profile Specification: + 0 - Device Key Refresh Only + 1 - Node Address Refresh + 2 - Node Composition Refresh + + If not present, behavior 0 will be used. + + uint16 Subnet + Specifies the subnet remote node is on. If not + present, primary subnet will be tried. PossibleErrors: org.bluez.mesh.Error.InvalidArguments @@ -1055,11 +1116,19 @@ Object path freely definable byte remote device UUID (always), a 16 bit mask of OOB authentication flags (optional), and a 32 bit URI hash (if URI bit set in OOB mask). Whether these fields exist or not is a - decision of the remote device. + decision of the unprovisioned device. The options parameter is a dictionary that may contain - additional scan result info (currently an empty placeholder for - forward compatibility). + additional optional configuration info: + + uint16 Server + Specifies the remote server that received the + Unprovisioned beacon. If not present, beacon was + received locally. + + uint8 array ExtendedData + If Extended data was requested during scanning, any + received data will be returned here. If a beacon with a UUID that has already been reported is recieved by the daemon, it will be silently discarded unless it @@ -1082,6 +1151,26 @@ Object path freely definable PossibleErrors: org.bluez.mesh.Error.Abort + uint16 unicast RequestReprovData(uint16 original, uint8 count) + + This method is implemented by a Provisioner capable application + and is called when the remote node being reprovisioned has been + fully authenticated and confirmed. This method will only be + called if the NPPI-1 procedure (Node Address Refresh) is being + performed. + + The original parameter is the current unicast address of the + node being reprovisioned. + + The count parameter is the number of consecutive unicast + addresses the remote node is requesting. + + Return Parameter: + unicast - Primary Unicast address of the new node + + PossibleErrors: + org.bluez.mesh.Error.Abort + void AddNodeComplete(array{byte}[16] uuid, uint16 unicast, uint8 count) This method is called when the node provisioning initiated @@ -1096,6 +1185,33 @@ Object path freely definable The new node may now be sent messages using the credentials supplied by the RequestProvData method. + void ReprovComplete(uint16 original, uint8 nppi, uint16 unicast, + uint8 count) + + This method is called when the node Reprovisioning initiated + by a Reprovision() method call successfully completed. + + The original parameter is the former primary address of the + node that has been reprovisioned. + + The nppi parameter indicates which NPPI behavior was performed. + If behavior 1 or 2 was performed, the node is materially + different than it was before reprovisioning, and Composition, + Bindings, Publication and Subscription settings should be + refreshed. + + The unicast parameter is the new primary address that has been + assigned to the node, If NPPI behavior 1 was performed this + value may be different from the original. If behavior 0 or 2 + was performed, the original and new primary address should be + the same. + + The count parameter is the number of unicast addresses assigned + to the node. + + The node may now be sent messages using the credentials + supplied by the RequestReprovData method. + void AddNodeFailed(array{byte}[16] uuid, string reason) This method is called when the node provisioning initiated by @@ -1109,6 +1225,18 @@ Object path freely definable "decryption-error", "unexpected-error", "cannot-assign-addresses". + void ReprovFailed(uint16 unicast, string reason) + + This method is called when node reprovisioning initiated by + Reprovision() has failed. If reprovisioning has failed, the + prior credentials of the remote node may still be valid. + + The reason parameter identifies the reason for provisioning + failure. The defined values are: "aborted", "timeout", + "bad-pdu", "confirmation-failed", "out-of-resources", + "decryption-error", "unexpected-error", + "cannot-assign-addresses". + Provisioning Agent Hierarchy ============================ Service unique name
From: Brian Gix <brian.gix@intel.com> Remote Provisioning (introduced in Mesh Profile Specification v1.1) * Allows Provisioners to use a remote server to scan for and provision devices. * Allows Config managers to reprovision existing nodes to: * Refresh Device Keys * Reassign Node Addresses * Refresh Node Composition --- doc/mesh-api.txt | 140 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 134 insertions(+), 6 deletions(-)