shill: Make cellular Connect work for GSM networks.
Add the APN to the properties map passed to Connect.
Set up the list of APNs to try, and step through it when
a connect attempt fails with the InvalidApn error. The
order in which APNs are tried is
- APN which most recently resulted in a successful
connection on the current network
- a user-specified APN, specified by setting the Cellular.APN
property on the service
- the list of APNs found for the home network provider in the
mobile broadband provider database
- if all those fail, a null APN
BUG=chromium-os:23259
TEST=manual testing, some of which involved modifying the
mobile provider DB to create invalid APN entries. Created
two new unit tests as well, and ran all unit tests.
Change-Id: I38c869228fe1aaf7421de8a826c54e7b62c209b2
Reviewed-on: https://gerrit.chromium.org/gerrit/19122
Tested-by: Eric Shienbrood <ers@chromium.org>
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Commit-Ready: Eric Shienbrood <ers@chromium.org>
diff --git a/property_store.h b/property_store.h
index f3c0b2e..54c8056 100644
--- a/property_store.h
+++ b/property_store.h
@@ -156,6 +156,8 @@
const RpcIdentifiersAccessor &accessor);
void RegisterDerivedString(const std::string &name,
const StringAccessor &accessor);
+ void RegisterDerivedStringmap(const std::string &name,
+ const StringmapAccessor &accessor);
void RegisterDerivedStringmaps(const std::string &name,
const StringmapsAccessor &accessor);
void RegisterDerivedStrings(const std::string &name,