Message ID | 20200617202657.42474-1-michal.lowas-rzechonek@silvair.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [BlueZ] mesh: Replace BeaconFlags with just IvUpdate | expand |
Applied On Wed, 2020-06-17 at 22:26 +0200, Michał Lowas-Rzechonek wrote: > To import nodes, applications need just IvIndex and IvUpdate. KeyRefresh > phase in under provisioner's control, so we don't need to expose it. > > Moreover, BeaconFlags property dealt just with the primary net key, and > each subnet key is refreshed separately. > --- > doc/mesh-api.txt | 8 ++++---- > mesh/node.c | 12 ++++++++---- > 2 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/doc/mesh-api.txt b/doc/mesh-api.txt > index 7fbab32b6..0f10a7c89 100644 > --- a/doc/mesh-api.txt > +++ b/doc/mesh-api.txt > @@ -431,11 +431,11 @@ Properties: > This property indicates whether the periodic beaconing is > enabled (true) or disabled (false). > > - uint8 BeaconFlags [read-only] > + boolean IvUpdate [read-only] > > - This property may be read at any time to determine the flag > - field setting on sent and received beacons of the primary > - network key. > + When true, indicates that the network is in the middle of IV > + Index Update procedure. This information is only useful for > + provisioning. > > uint32 IvIndex [read-only] > > diff --git a/mesh/node.c b/mesh/node.c > index 6140fdf9f..87c3bb46f 100644 > --- a/mesh/node.c > +++ b/mesh/node.c > @@ -32,6 +32,7 @@ > #include "mesh/mesh-defs.h" > #include "mesh/mesh.h" > #include "mesh/net.h" > +#include "mesh/net-keys.h" > #include "mesh/appkey.h" > #include "mesh/mesh-config.h" > #include "mesh/provision.h" > @@ -2183,7 +2184,7 @@ static bool beacon_getter(struct l_dbus *dbus, struct l_dbus_message *msg, > return true; > } > > -static bool beaconflags_getter(struct l_dbus *dbus, struct l_dbus_message *msg, > +static bool ivupdate_getter(struct l_dbus *dbus, struct l_dbus_message *msg, > struct l_dbus_message_builder *builder, > void *user_data) > { > @@ -2191,10 +2192,13 @@ static bool beaconflags_getter(struct l_dbus *dbus, struct l_dbus_message *msg, > struct mesh_net *net = node_get_net(node); > uint8_t flags; > uint32_t iv_index; > + bool ivu; > > mesh_net_get_snb_state(net, &flags, &iv_index); > > - l_dbus_message_builder_append_basic(builder, 'y', &flags); > + ivu = flags & IV_INDEX_UPDATE; > + > + l_dbus_message_builder_append_basic(builder, 'b', &ivu); > > return true; > } > @@ -2295,8 +2299,8 @@ static void setup_node_interface(struct l_dbus_interface *iface) > l_dbus_interface_property(iface, "Features", 0, "a{sv}", features_getter, > NULL); > l_dbus_interface_property(iface, "Beacon", 0, "b", beacon_getter, NULL); > - l_dbus_interface_property(iface, "BeaconFlags", 0, "y", > - beaconflags_getter, NULL); > + l_dbus_interface_property(iface, "IvUpdate", 0, "b", ivupdate_getter, > + NULL); > l_dbus_interface_property(iface, "IvIndex", 0, "u", ivindex_getter, > NULL); > l_dbus_interface_property(iface, "SequenceNumber", 0, "u",
diff --git a/doc/mesh-api.txt b/doc/mesh-api.txt index 7fbab32b6..0f10a7c89 100644 --- a/doc/mesh-api.txt +++ b/doc/mesh-api.txt @@ -431,11 +431,11 @@ Properties: This property indicates whether the periodic beaconing is enabled (true) or disabled (false). - uint8 BeaconFlags [read-only] + boolean IvUpdate [read-only] - This property may be read at any time to determine the flag - field setting on sent and received beacons of the primary - network key. + When true, indicates that the network is in the middle of IV + Index Update procedure. This information is only useful for + provisioning. uint32 IvIndex [read-only] diff --git a/mesh/node.c b/mesh/node.c index 6140fdf9f..87c3bb46f 100644 --- a/mesh/node.c +++ b/mesh/node.c @@ -32,6 +32,7 @@ #include "mesh/mesh-defs.h" #include "mesh/mesh.h" #include "mesh/net.h" +#include "mesh/net-keys.h" #include "mesh/appkey.h" #include "mesh/mesh-config.h" #include "mesh/provision.h" @@ -2183,7 +2184,7 @@ static bool beacon_getter(struct l_dbus *dbus, struct l_dbus_message *msg, return true; } -static bool beaconflags_getter(struct l_dbus *dbus, struct l_dbus_message *msg, +static bool ivupdate_getter(struct l_dbus *dbus, struct l_dbus_message *msg, struct l_dbus_message_builder *builder, void *user_data) { @@ -2191,10 +2192,13 @@ static bool beaconflags_getter(struct l_dbus *dbus, struct l_dbus_message *msg, struct mesh_net *net = node_get_net(node); uint8_t flags; uint32_t iv_index; + bool ivu; mesh_net_get_snb_state(net, &flags, &iv_index); - l_dbus_message_builder_append_basic(builder, 'y', &flags); + ivu = flags & IV_INDEX_UPDATE; + + l_dbus_message_builder_append_basic(builder, 'b', &ivu); return true; } @@ -2295,8 +2299,8 @@ static void setup_node_interface(struct l_dbus_interface *iface) l_dbus_interface_property(iface, "Features", 0, "a{sv}", features_getter, NULL); l_dbus_interface_property(iface, "Beacon", 0, "b", beacon_getter, NULL); - l_dbus_interface_property(iface, "BeaconFlags", 0, "y", - beaconflags_getter, NULL); + l_dbus_interface_property(iface, "IvUpdate", 0, "b", ivupdate_getter, + NULL); l_dbus_interface_property(iface, "IvIndex", 0, "u", ivindex_getter, NULL); l_dbus_interface_property(iface, "SequenceNumber", 0, "u",