shill: Provides an iterator for AttributeList (for netlink attributes).
BUG=None
TEST=unittest
Change-Id: I9b014897229da80a5ffd023cd8840cbab8796f77
Reviewed-on: https://gerrit.chromium.org/gerrit/49270
Commit-Queue: Wade Guthrie <wdg@chromium.org>
Reviewed-by: Wade Guthrie <wdg@chromium.org>
Tested-by: Wade Guthrie <wdg@chromium.org>
diff --git a/nl80211_message.cc b/nl80211_message.cc
index d3f4d19..3fc8baa 100644
--- a/nl80211_message.cc
+++ b/nl80211_message.cc
@@ -338,13 +338,12 @@
return false;
}
- // Assume IDs for the nested attribute array are linear starting from 1.
- // Currently, that is enforced in the input to the nested attribute.
- uint32_t freq;
- int i = 1;
- while (frequency_list->GetU32AttributeValue(i, &freq)) {
- value->push_back(freq);
- ++i;
+ AttributeIdIterator freq_iter(*frequency_list);
+ for (; !freq_iter.AtEnd(); freq_iter.Advance()) {
+ uint32_t freq = 0;
+ if (frequency_list->GetU32AttributeValue(freq_iter.GetId(), &freq)) {
+ value->push_back(freq);
+ }
}
return true;
}
@@ -364,13 +363,12 @@
return false;
}
- // Assume IDs for the nested attribute array are linear starting from 1.
- // Currently, that is enforced in the input to the nested attribute.
- string ssid;
- int i = 1;
- while (ssid_list->GetStringAttributeValue(i, &ssid)) {
- value->push_back(ssid);
- ++i;
+ AttributeIdIterator ssid_iter(*ssid_list);
+ for (; !ssid_iter.AtEnd(); ssid_iter.Advance()) {
+ string ssid;
+ if (ssid_list->GetStringAttributeValue(ssid_iter.GetId(), &ssid)) {
+ value->push_back(ssid);
+ }
}
return true;
}