shill: vpn: Parse route options through openvpn notify callback.
BUG=chromium-os:27056
TEST=unit tests
Change-Id: Ia69e87c040936a7375cb31a69b3724f39be580d6
Reviewed-on: https://gerrit.chromium.org/gerrit/17314
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/openvpn_driver.h b/openvpn_driver.h
index bcefc36..6201e01 100644
--- a/openvpn_driver.h
+++ b/openvpn_driver.h
@@ -57,15 +57,19 @@
FRIEND_TEST(OpenVPNDriverTest, AppendValueOption);
FRIEND_TEST(OpenVPNDriverTest, ClaimInterface);
FRIEND_TEST(OpenVPNDriverTest, Connect);
+ FRIEND_TEST(OpenVPNDriverTest, GetRouteOptionEntry);
FRIEND_TEST(OpenVPNDriverTest, InitOptions);
FRIEND_TEST(OpenVPNDriverTest, InitOptionsNoHost);
FRIEND_TEST(OpenVPNDriverTest, ParseForeignOption);
FRIEND_TEST(OpenVPNDriverTest, ParseForeignOptions);
FRIEND_TEST(OpenVPNDriverTest, ParseIPConfiguration);
+ FRIEND_TEST(OpenVPNDriverTest, ParseRouteOption);
+ FRIEND_TEST(OpenVPNDriverTest, SetRoutes);
// The map is a sorted container that allows us to iterate through the options
// in order.
typedef std::map<int, std::string> ForeignOptions;
+ typedef std::map<int, IPConfig::Route> RouteOptions;
static void ParseIPConfiguration(
const std::map<std::string, std::string> &configuration,
@@ -74,6 +78,14 @@
IPConfig::Properties *properties);
static void ParseForeignOption(const std::string &option,
IPConfig::Properties *properties);
+ static IPConfig::Route *GetRouteOptionEntry(const std::string &prefix,
+ const std::string &key,
+ RouteOptions *routes);
+ static void ParseRouteOption(const std::string &key,
+ const std::string &value,
+ RouteOptions *routes);
+ static void SetRoutes(const RouteOptions &routes,
+ IPConfig::Properties *properties);
void InitOptions(std::vector<std::string> *options, Error *error);