| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromeos_network.h" // NOLINT | 5 #include "chromeos_network.h" // NOLINT |
| 6 #include "chromeos_network_deprecated.h" // NOLINT | 6 #include "chromeos_network_deprecated.h" // NOLINT |
| 7 | 7 |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <cstring> | 9 #include <cstring> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 | 31 |
| 32 // Connman D-Bus service identifiers. | 32 // Connman D-Bus service identifiers. |
| 33 static const char* kConnmanManagerInterface = "org.chromium.flimflam.Manager"; | 33 static const char* kConnmanManagerInterface = "org.chromium.flimflam.Manager"; |
| 34 static const char* kConnmanServiceInterface = "org.chromium.flimflam.Service"; | 34 static const char* kConnmanServiceInterface = "org.chromium.flimflam.Service"; |
| 35 static const char* kConnmanServiceName = "org.chromium.flimflam"; | 35 static const char* kConnmanServiceName = "org.chromium.flimflam"; |
| 36 static const char* kConnmanDeviceInterface = "org.chromium.flimflam.Device"; | 36 static const char* kConnmanDeviceInterface = "org.chromium.flimflam.Device"; |
| 37 static const char* kConnmanProfileInterface = "org.chromium.flimflam.Profile"; | 37 static const char* kConnmanProfileInterface = "org.chromium.flimflam.Profile"; |
| 38 | 38 |
| 39 // Connman function names. | 39 // Connman function names. |
| 40 static const char* kGetPropertiesFunction = "GetProperties"; | 40 static const char* kGetPropertiesFunction = "GetProperties"; |
| 41 static const char* kRequestScanFunction = "RequestScan"; |
| 41 static const char* kConfigureWifiServiceFunction = "ConfigureWifiService"; | 42 static const char* kConfigureWifiServiceFunction = "ConfigureWifiService"; |
| 42 static const char* kGetWifiServiceFunction = "GetWifiService"; | 43 static const char* kGetWifiServiceFunction = "GetWifiService"; |
| 44 static const char* kEnableTechnologyFunction = "EnableTechnology"; |
| 45 static const char* kDisableTechnologyFunction = "DisableTechnology"; |
| 43 static const char* kGetEntryFunction = "GetEntry"; | 46 static const char* kGetEntryFunction = "GetEntry"; |
| 44 | 47 |
| 45 // Connman property names. | 48 // Connman property names. |
| 46 static const char* kSecurityProperty = "Security"; | 49 static const char* kSecurityProperty = "Security"; |
| 47 static const char* kPassphraseProperty = "Passphrase"; | 50 static const char* kPassphraseProperty = "Passphrase"; |
| 48 static const char* kPassphraseRequiredProperty = "PassphraseRequired"; | 51 static const char* kPassphraseRequiredProperty = "PassphraseRequired"; |
| 49 static const char* kServicesProperty = "Services"; | 52 static const char* kServicesProperty = "Services"; |
| 50 static const char* kAvailableTechnologiesProperty = "AvailableTechnologies"; | 53 static const char* kAvailableTechnologiesProperty = "AvailableTechnologies"; |
| 51 static const char* kEnabledTechnologiesProperty = "EnabledTechnologies"; | 54 static const char* kEnabledTechnologiesProperty = "EnabledTechnologies"; |
| 52 static const char* kConnectedTechnologiesProperty = "ConnectedTechnologies"; | 55 static const char* kConnectedTechnologiesProperty = "ConnectedTechnologies"; |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 return TYPE_WIFI; | 197 return TYPE_WIFI; |
| 195 if (type == kTypeWimax) | 198 if (type == kTypeWimax) |
| 196 return TYPE_WIMAX; | 199 return TYPE_WIMAX; |
| 197 if (type == kTypeBluetooth) | 200 if (type == kTypeBluetooth) |
| 198 return TYPE_BLUETOOTH; | 201 return TYPE_BLUETOOTH; |
| 199 if (type == kTypeCellular) | 202 if (type == kTypeCellular) |
| 200 return TYPE_CELLULAR; | 203 return TYPE_CELLULAR; |
| 201 return TYPE_UNKNOWN; | 204 return TYPE_UNKNOWN; |
| 202 } | 205 } |
| 203 | 206 |
| 207 static const char* TypeToString(ConnectionType type) { |
| 208 switch (type) { |
| 209 case TYPE_UNKNOWN: |
| 210 break; |
| 211 case TYPE_ETHERNET: |
| 212 return kTypeEthernet; |
| 213 case TYPE_WIFI: |
| 214 return kTypeWifi; |
| 215 case TYPE_WIMAX: |
| 216 return kTypeWimax; |
| 217 case TYPE_BLUETOOTH: |
| 218 return kTypeBluetooth; |
| 219 case TYPE_CELLULAR: |
| 220 return kTypeCellular; |
| 221 } |
| 222 return kTypeUnknown; |
| 223 } |
| 224 |
| 204 static ConnectionMode ParseMode(const std::string& mode) { | 225 static ConnectionMode ParseMode(const std::string& mode) { |
| 205 if (mode == kModeManaged) | 226 if (mode == kModeManaged) |
| 206 return MODE_MANAGED; | 227 return MODE_MANAGED; |
| 207 if (mode == kModeAdhoc) | 228 if (mode == kModeAdhoc) |
| 208 return MODE_ADHOC; | 229 return MODE_ADHOC; |
| 209 return MODE_UNKNOWN; | 230 return MODE_UNKNOWN; |
| 210 } | 231 } |
| 211 | 232 |
| 212 static ConnectionSecurity ParseSecurity(const std::string& security) { | 233 static ConnectionSecurity ParseSecurity(const std::string& security) { |
| 213 if (security == kSecurity8021x) | 234 if (security == kSecurity8021x) |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 759 delete info.carrier_info; | 780 delete info.carrier_info; |
| 760 info.carrier_info = NULL; | 781 info.carrier_info = NULL; |
| 761 } | 782 } |
| 762 | 783 |
| 763 // Note: DeviceInfo is owned by SystemInfo. | 784 // Note: DeviceInfo is owned by SystemInfo. |
| 764 } | 785 } |
| 765 | 786 |
| 766 } | 787 } |
| 767 | 788 |
| 768 extern "C" | 789 extern "C" |
| 790 void ChromeOSRequestScan(ConnectionType type) { |
| 791 dbus::Proxy manager_proxy(dbus::GetSystemBusConnection(), |
| 792 kConnmanServiceName, |
| 793 "/", |
| 794 kConnmanManagerInterface); |
| 795 gchar* device = ::g_strdup(TypeToString(type)); |
| 796 glib::ScopedError error; |
| 797 if (!::dbus_g_proxy_call(manager_proxy.gproxy(), |
| 798 kRequestScanFunction, |
| 799 &Resetter(&error).lvalue(), |
| 800 G_TYPE_STRING, |
| 801 device, |
| 802 G_TYPE_INVALID, |
| 803 G_TYPE_INVALID)) { |
| 804 LOG(WARNING) << "ChromeOSRequestScan failed: " |
| 805 << (error->message ? error->message : "Unknown Error."); |
| 806 } |
| 807 ::g_free(device); |
| 808 } |
| 809 |
| 810 extern "C" |
| 769 ServiceInfo* ChromeOSGetWifiService(const char* ssid, | 811 ServiceInfo* ChromeOSGetWifiService(const char* ssid, |
| 770 ConnectionSecurity security) { | 812 ConnectionSecurity security) { |
| 771 dbus::Proxy manager_proxy(dbus::GetSystemBusConnection(), | 813 dbus::Proxy manager_proxy(dbus::GetSystemBusConnection(), |
| 772 kConnmanServiceName, | 814 kConnmanServiceName, |
| 773 "/", | 815 "/", |
| 774 kConnmanManagerInterface); | 816 kConnmanManagerInterface); |
| 775 | 817 |
| 776 glib::ScopedHashTable scoped_properties = | 818 glib::ScopedHashTable scoped_properties = |
| 777 glib::ScopedHashTable( | 819 glib::ScopedHashTable( |
| 778 ::g_hash_table_new_full(::g_str_hash, | 820 ::g_hash_table_new_full(::g_str_hash, |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1127 system->service_info_size = sizeof(ServiceInfo); | 1169 system->service_info_size = sizeof(ServiceInfo); |
| 1128 system->device_info_size = sizeof(DeviceInfo); | 1170 system->device_info_size = sizeof(DeviceInfo); |
| 1129 | 1171 |
| 1130 base::TimeDelta dt = (base::Time::Now() - t0); | 1172 base::TimeDelta dt = (base::Time::Now() - t0); |
| 1131 LOG(INFO) << "SystemInfo: " << dt.InMilliseconds() << " ms."; | 1173 LOG(INFO) << "SystemInfo: " << dt.InMilliseconds() << " ms."; |
| 1132 | 1174 |
| 1133 return system; | 1175 return system; |
| 1134 } | 1176 } |
| 1135 | 1177 |
| 1136 extern "C" | 1178 extern "C" |
| 1179 bool ChromeOSEnableNetworkDevice(ConnectionType type, bool enable) { |
| 1180 dbus::BusConnection bus = dbus::GetSystemBusConnection(); |
| 1181 dbus::Proxy manager_proxy(bus, |
| 1182 kConnmanServiceName, |
| 1183 "/", |
| 1184 kConnmanManagerInterface); |
| 1185 if (type == TYPE_UNKNOWN) { |
| 1186 LOG(WARNING) << "EnableNetworkDevice called with an unknown type: " << type; |
| 1187 return false; |
| 1188 } |
| 1189 |
| 1190 gchar* device = ::g_strdup(TypeToString(type)); |
| 1191 glib::ScopedError error; |
| 1192 if (!::dbus_g_proxy_call(manager_proxy.gproxy(), |
| 1193 enable ? kEnableTechnologyFunction : |
| 1194 kDisableTechnologyFunction, |
| 1195 &Resetter(&error).lvalue(), |
| 1196 G_TYPE_STRING, |
| 1197 device, |
| 1198 G_TYPE_INVALID, |
| 1199 G_TYPE_INVALID)) { |
| 1200 LOG(WARNING) << "EnableNetworkDevice failed: " |
| 1201 << (error->message ? error->message : "Unknown Error."); |
| 1202 ::g_free(device); |
| 1203 return false; |
| 1204 } |
| 1205 ::g_free(device); |
| 1206 return true; |
| 1207 } |
| 1208 |
| 1209 extern "C" |
| 1137 void ChromeOSFreeSystemInfo(SystemInfo* system) { | 1210 void ChromeOSFreeSystemInfo(SystemInfo* system) { |
| 1138 if (system == NULL) | 1211 if (system == NULL) |
| 1139 return; | 1212 return; |
| 1140 if (system->service_size > 0) { | 1213 if (system->service_size > 0) { |
| 1141 std::for_each(system->services, | 1214 std::for_each(system->services, |
| 1142 system->services + system->service_size, | 1215 system->services + system->service_size, |
| 1143 &DeleteServiceInfoProperties); | 1216 &DeleteServiceInfoProperties); |
| 1144 delete [] system->services; | 1217 delete [] system->services; |
| 1145 } | 1218 } |
| 1146 if (system->remembered_service_size > 0) { | 1219 if (system->remembered_service_size > 0) { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1217 &ManagerPropertyChangedHandler::Run, result); | 1290 &ManagerPropertyChangedHandler::Run, result); |
| 1218 return result; | 1291 return result; |
| 1219 } | 1292 } |
| 1220 | 1293 |
| 1221 extern "C" | 1294 extern "C" |
| 1222 void ChromeOSDisconnectMonitorNetwork(MonitorNetworkConnection connection) { | 1295 void ChromeOSDisconnectMonitorNetwork(MonitorNetworkConnection connection) { |
| 1223 dbus::Disconnect(connection->connection()); | 1296 dbus::Disconnect(connection->connection()); |
| 1224 delete connection; | 1297 delete connection; |
| 1225 } | 1298 } |
| 1226 | 1299 |
| 1300 extern "C" |
| 1301 void ChromeOSRequestHiddenWifiNetwork(const char* ssid, |
| 1302 const char* security, |
| 1303 NetworkPropertiesCallback callback, |
| 1304 void* object); |
| 1305 |
| 1306 extern "C" |
| 1307 void ChromeOSRequestWifiServicePath( |
| 1308 const char* ssid, |
| 1309 ConnectionSecurity security, |
| 1310 NetworkPropertiesCallback callback, |
| 1311 void* object) { |
| 1312 ChromeOSRequestHiddenWifiNetwork( |
| 1313 ssid, SecurityToString(security), callback, object); |
| 1314 } |
| 1315 |
| 1227 } // namespace chromeos | 1316 } // namespace chromeos |
| OLD | NEW |