Commit 22a9493a authored by Matthew Wang's avatar Matthew Wang Committed by Commit Bot

ONC: Add ExtraHosts property to OpenVPN

This is needed to support multiple fallback hosts.

BUG=742666
TEST=Modified translator and validator unit tests to include
checks for ExtraHosts

Change-Id: I3faa20fb5d3f3ca490340527ad0a40a7fe9f837a
Reviewed-on: https://chromium-review.googlesource.com/720138Reviewed-by: default avatarKevin Cernekee <cernekee@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Commit-Queue: Matthew Wang <matthewmwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509536}
parent 266c53ae
...@@ -110,6 +110,7 @@ const OncFieldSignature openvpn_fields[] = { ...@@ -110,6 +110,7 @@ const OncFieldSignature openvpn_fields[] = {
{::onc::client_cert::kClientCertType, &kStringSignature}, {::onc::client_cert::kClientCertType, &kStringSignature},
{::onc::openvpn::kCompLZO, &kStringSignature}, {::onc::openvpn::kCompLZO, &kStringSignature},
{::onc::openvpn::kCompNoAdapt, &kBoolSignature}, {::onc::openvpn::kCompNoAdapt, &kBoolSignature},
{::onc::openvpn::kExtraHosts, &kStringListSignature},
{::onc::openvpn::kIgnoreDefaultRoute, &kBoolSignature}, {::onc::openvpn::kIgnoreDefaultRoute, &kBoolSignature},
{::onc::openvpn::kKeyDirection, &kStringSignature}, {::onc::openvpn::kKeyDirection, &kStringSignature},
{::onc::openvpn::kNsCertType, &kStringSignature}, {::onc::openvpn::kNsCertType, &kStringSignature},
......
...@@ -77,6 +77,7 @@ const FieldTranslationEntry openvpn_fields[] = { ...@@ -77,6 +77,7 @@ const FieldTranslationEntry openvpn_fields[] = {
// shill::kOpenVPNClientCertIdProperty}, // shill::kOpenVPNClientCertIdProperty},
{::onc::openvpn::kCompLZO, shill::kOpenVPNCompLZOProperty}, {::onc::openvpn::kCompLZO, shill::kOpenVPNCompLZOProperty},
{::onc::openvpn::kCompNoAdapt, shill::kOpenVPNCompNoAdaptProperty}, {::onc::openvpn::kCompNoAdapt, shill::kOpenVPNCompNoAdaptProperty},
{::onc::openvpn::kExtraHosts, shill::kOpenVPNExtraHostsProperty},
{::onc::openvpn::kIgnoreDefaultRoute, {::onc::openvpn::kIgnoreDefaultRoute,
shill::kOpenVPNIgnoreDefaultRouteProperty}, shill::kOpenVPNIgnoreDefaultRouteProperty},
{::onc::openvpn::kKeyDirection, shill::kOpenVPNKeyDirectionProperty}, {::onc::openvpn::kKeyDirection, shill::kOpenVPNKeyDirectionProperty},
......
...@@ -208,7 +208,8 @@ void LocalTranslator::TranslateOpenVPN() { ...@@ -208,7 +208,8 @@ void LocalTranslator::TranslateOpenVPN() {
std::string key = it.key(); std::string key = it.key();
std::unique_ptr<base::Value> translated; std::unique_ptr<base::Value> translated;
if (key == ::onc::openvpn::kRemoteCertKU || if (key == ::onc::openvpn::kRemoteCertKU ||
key == ::onc::openvpn::kServerCAPEMs) { key == ::onc::openvpn::kServerCAPEMs ||
key == ::onc::openvpn::kExtraHosts) {
translated.reset(it.value().DeepCopy()); translated.reset(it.value().DeepCopy());
} else { } else {
// Shill wants all Provider/VPN fields to be strings. // Shill wants all Provider/VPN fields to be strings.
......
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
} }
}, },
"ClientCertType": "Pattern", "ClientCertType": "Pattern",
"ExtraHosts": [
"0.0.0.1",
"123.com"
],
"Password": "some password", "Password": "some password",
"Port": 1234, "Port": 1234,
"Proto": "udp", "Proto": "udp",
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
"Type": "OpenVPN", "Type": "OpenVPN",
"OpenVPN": { "OpenVPN": {
"ClientCertType": "None", "ClientCertType": "None",
"ExtraHosts": [
"vpn.my.domain.com"
],
"Password": "some password", "Password": "some password",
"Port": 443, "Port": 443,
"Proto": "udp", "Proto": "udp",
......
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
"pem2" "pem2"
], ],
"OpenVPN.CompLZO":"true", "OpenVPN.CompLZO":"true",
"OpenVPN.ExtraHosts":[
"www.abc.com",
"1.2.3.4"
],
"OpenVPN.KeyDirection":"1", "OpenVPN.KeyDirection":"1",
"OpenVPN.Token":"some OTP", "OpenVPN.Token":"some OTP",
"OpenVPN.Port":"443", "OpenVPN.Port":"443",
......
{ {
"GUID": "{84391467-dd8b-4c66-9b52-860583038351}", "GUID": "{84391467-dd8b-4c66-9b52-860583038351}",
"Name": "TestOpenVPN", "Name": "TestOpenVPN",
"OpenVPN.ExtraHosts": [
"0.0.0.1",
"123.com"
],
"OpenVPN.Password": "some password", "OpenVPN.Password": "some password",
"OpenVPN.Port": "1234", "OpenVPN.Port": "1234",
"OpenVPN.Proto": "udp", "OpenVPN.Proto": "udp",
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"AuthRetry": "interact", "AuthRetry": "interact",
"ClientCertType": "None", "ClientCertType": "None",
"CompLZO": "true", "CompLZO": "true",
"ExtraHosts": [ "www.abc.com", "1.2.3.4" ],
"KeyDirection": "1", "KeyDirection": "1",
"OTP": "some OTP", "OTP": "some OTP",
"Password": "some password", "Password": "some password",
......
...@@ -750,6 +750,11 @@ L2TP over IPsec with pre-shared key: ...@@ -750,6 +750,11 @@ L2TP over IPsec with pre-shared key:
* (optional, defaults to *false*) - **boolean** * (optional, defaults to *false*) - **boolean**
* Disables adaptive compression. * Disables adaptive compression.
* **ExtraHosts**
* (optional) - **array of string**
* List of hosts to try in order if client is unable to connect to the
* primary host.
* **IgnoreDefaultRoute** * **IgnoreDefaultRoute**
* (optional, defaults to *false*) - **boolean** * (optional, defaults to *false*) - **boolean**
* Omits a default route to the VPN gateway while the connection is active. * Omits a default route to the VPN gateway while the connection is active.
......
...@@ -361,6 +361,7 @@ const char kAuth[] = "Auth"; ...@@ -361,6 +361,7 @@ const char kAuth[] = "Auth";
const char kCipher[] = "Cipher"; const char kCipher[] = "Cipher";
const char kCompLZO[] = "CompLZO"; const char kCompLZO[] = "CompLZO";
const char kCompNoAdapt[] = "CompNoAdapt"; const char kCompNoAdapt[] = "CompNoAdapt";
const char kExtraHosts[] = "ExtraHosts";
const char kIgnoreDefaultRoute[] = "IgnoreDefaultRoute"; const char kIgnoreDefaultRoute[] = "IgnoreDefaultRoute";
const char kInteract[] = "interact"; const char kInteract[] = "interact";
const char kKeyDirection[] = "KeyDirection"; const char kKeyDirection[] = "KeyDirection";
......
...@@ -374,6 +374,7 @@ ONC_EXPORT extern const char kAuth[]; ...@@ -374,6 +374,7 @@ ONC_EXPORT extern const char kAuth[];
ONC_EXPORT extern const char kCipher[]; ONC_EXPORT extern const char kCipher[];
ONC_EXPORT extern const char kCompLZO[]; ONC_EXPORT extern const char kCompLZO[];
ONC_EXPORT extern const char kCompNoAdapt[]; ONC_EXPORT extern const char kCompNoAdapt[];
ONC_EXPORT extern const char kExtraHosts[];
ONC_EXPORT extern const char kIgnoreDefaultRoute[]; ONC_EXPORT extern const char kIgnoreDefaultRoute[];
ONC_EXPORT extern const char kInteract[]; ONC_EXPORT extern const char kInteract[];
ONC_EXPORT extern const char kKeyDirection[]; ONC_EXPORT extern const char kKeyDirection[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment