tree: 4406b0684a6612192b1569dd14379670d0fd1f1b [path history] [tgz]
  1. onc/
  2. portal_detector/
  3. proxy/
  4. auto_connect_handler.cc
  5. auto_connect_handler.h
  6. auto_connect_handler_unittest.cc
  7. BUILD.gn
  8. cellular_connection_handler.cc
  9. cellular_connection_handler.h
  10. cellular_connection_handler_unittest.cc
  11. cellular_esim_installer.cc
  12. cellular_esim_installer.h
  13. cellular_esim_installer_unittest.cc
  14. cellular_esim_profile.cc
  15. cellular_esim_profile.h
  16. cellular_esim_profile_handler.cc
  17. cellular_esim_profile_handler.h
  18. cellular_esim_profile_handler_impl.cc
  19. cellular_esim_profile_handler_impl.h
  20. cellular_esim_profile_handler_impl_unittest.cc
  21. cellular_esim_profile_unittest.cc
  22. cellular_esim_uninstall_handler.cc
  23. cellular_esim_uninstall_handler.h
  24. cellular_esim_uninstall_handler_unittest.cc
  25. cellular_inhibitor.cc
  26. cellular_inhibitor.h
  27. cellular_inhibitor_unittest.cc
  28. cellular_metrics_logger.cc
  29. cellular_metrics_logger.h
  30. cellular_metrics_logger_unittest.cc
  31. cellular_policy_handler.cc
  32. cellular_policy_handler.h
  33. cellular_policy_handler_unittest.cc
  34. cellular_utils.cc
  35. cellular_utils.h
  36. certificate_helper.cc
  37. certificate_helper.h
  38. certificate_helper_unittest.cc
  39. client_cert_resolver.cc
  40. client_cert_resolver.h
  41. client_cert_resolver_unittest.cc
  42. client_cert_util.cc
  43. client_cert_util.h
  44. DEPS
  45. device_state.cc
  46. device_state.h
  47. device_state_unittest.cc
  48. DIR_METADATA
  49. fake_network_activation_handler.cc
  50. fake_network_activation_handler.h
  51. fake_network_connection_handler.cc
  52. fake_network_connection_handler.h
  53. fake_network_device_handler.cc
  54. fake_network_device_handler.h
  55. fake_stub_cellular_networks_provider.cc
  56. fake_stub_cellular_networks_provider.h
  57. fast_transition_observer.cc
  58. fast_transition_observer.h
  59. fast_transition_observer_unittest.cc
  60. firewall_hole.cc
  61. firewall_hole.h
  62. firewall_hole_unittest.cc
  63. geolocation_handler.cc
  64. geolocation_handler.h
  65. geolocation_handler_unittest.cc
  66. hermes_metrics_util.cc
  67. hermes_metrics_util.h
  68. managed_network_configuration_handler.cc
  69. managed_network_configuration_handler.h
  70. managed_network_configuration_handler_impl.cc
  71. managed_network_configuration_handler_impl.h
  72. managed_network_configuration_handler_unittest.cc
  73. managed_state.cc
  74. managed_state.h
  75. mock_managed_network_configuration_handler.cc
  76. mock_managed_network_configuration_handler.h
  77. mock_network_device_handler.cc
  78. mock_network_device_handler.h
  79. mock_network_state_handler.cc
  80. mock_network_state_handler.h
  81. network_activation_handler.h
  82. network_activation_handler_impl.cc
  83. network_activation_handler_impl.h
  84. network_cert_loader.cc
  85. network_cert_loader.h
  86. network_cert_loader_unittest.cc
  87. network_cert_migrator.cc
  88. network_cert_migrator.h
  89. network_cert_migrator_unittest.cc
  90. network_certificate_handler.cc
  91. network_certificate_handler.h
  92. network_configuration_handler.cc
  93. network_configuration_handler.h
  94. network_configuration_handler_unittest.cc
  95. network_configuration_observer.cc
  96. network_configuration_observer.h
  97. network_connect.cc
  98. network_connect.h
  99. network_connect_unittest.cc
  100. network_connection_handler.cc
  101. network_connection_handler.h
  102. network_connection_handler_impl.cc
  103. network_connection_handler_impl.h
  104. network_connection_handler_impl_unittest.cc
  105. network_connection_observer.cc
  106. network_connection_observer.h
  107. network_device_handler.cc
  108. network_device_handler.h
  109. network_device_handler_impl.cc
  110. network_device_handler_impl.h
  111. network_device_handler_unittest.cc
  112. network_event_log.cc
  113. network_event_log.h
  114. network_event_log_unittest.cc
  115. network_handler.cc
  116. network_handler.h
  117. network_handler_callbacks.cc
  118. network_handler_callbacks.h
  119. network_handler_test_helper.cc
  120. network_handler_test_helper.h
  121. network_ip_config.cc
  122. network_ip_config.h
  123. network_metadata_observer.cc
  124. network_metadata_observer.h
  125. network_metadata_store.cc
  126. network_metadata_store.h
  127. network_metadata_store_unittest.cc
  128. network_name_util.cc
  129. network_name_util.h
  130. network_name_util_unittest.cc
  131. network_policy_observer.h
  132. network_profile.cc
  133. network_profile.h
  134. network_profile_handler.cc
  135. network_profile_handler.h
  136. network_profile_observer.h
  137. network_sms_handler.cc
  138. network_sms_handler.h
  139. network_sms_handler_unittest.cc
  140. network_state.cc
  141. network_state.h
  142. network_state_handler.cc
  143. network_state_handler.h
  144. network_state_handler_observer.cc
  145. network_state_handler_observer.h
  146. network_state_handler_unittest.cc
  147. network_state_test_helper.cc
  148. network_state_test_helper.h
  149. network_state_unittest.cc
  150. network_test_helper_base.cc
  151. network_test_helper_base.h
  152. network_type_pattern.cc
  153. network_type_pattern.h
  154. network_type_pattern_unittest.cc
  155. network_ui_data.cc
  156. network_ui_data.h
  157. network_ui_data_unittest.cc
  158. network_util.cc
  159. network_util.h
  160. network_util_unittest.cc
  161. OWNERS
  162. policy_applicator.cc
  163. policy_applicator.h
  164. policy_certificate_provider.h
  165. policy_util.cc
  166. policy_util.h
  167. prohibited_technologies_handler.cc
  168. prohibited_technologies_handler.h
  169. prohibited_technologies_handler_unittest.cc
  170. README.md
  171. shill_property_handler.cc
  172. shill_property_handler.h
  173. shill_property_handler_unittest.cc
  174. shill_property_util.cc
  175. shill_property_util.h
  176. stub_cellular_networks_provider.cc
  177. stub_cellular_networks_provider.h
  178. stub_cellular_networks_provider_unittest.cc
  179. system_token_cert_db_storage.cc
  180. system_token_cert_db_storage.h
  181. system_token_cert_db_storage_test_util.cc
  182. system_token_cert_db_storage_test_util.h
  183. system_token_cert_db_storage_unittest.cc
  184. test_cellular_esim_profile_handler.cc
  185. test_cellular_esim_profile_handler.h
  186. tether_constants.cc
  187. tether_constants.h
chromeos/network/README.md

Chrome OS Network - Chrome Layer

Chrome OS networking consists of several key components. This document describes the Chrome layer, implemented within //chromeos/network. To describe this layer, we highlight three primary processes:

  • Chrome. Contains all system UI (e.g., settings) and processes inputs from the user as well as enterprise policies. Chrome sits atop the dependency tree and makes calls to the other components via D-Bus APIs.
  • Shill. Daemon process responsible for making network connections. Shill is the source of truth for which connection mediums are available and connected, as well as for properties of available networks.
  • Hermes. Daemon process responsible for configuring eSIM profiles. Hermes allows users to initiate SM-DS scans as well as communicate with SM-DP+ servers to install and uninstall profiles.

Shill and Hermes interface with several other components (e.g., ModemManager, wpa_supplicant), but these are beyond the scope of this README since these interactions are encapsulated from Chrome.

Background

Before diving into the Chrome layer's details, we provide some background information about the D-Bus APIs exposed by Shill and Hermes.

Shill

Source: platform2/shill

Shill is responsible for setting up network interfaces, connecting to networks via these interfaces, persisting network metadata to disk, and providing support for VPNs.

Shill exposes 5 key interfaces used by Chrome:

  • flimflam.Manager: Allows Chrome to enable/disable a technology (e.g., turning Wi-Fi on or off), perform a scan (e.g., look for nearby Wi-Fi networks), and configure a network (e.g., attempt to set up a Wi-Fi network with a password).
  • flimflam.Device: A Shill “Device” refers to a connection medium (Wi-Fi, Cellular, and Ethernet are all Shill Devices). This interface allows Chrome to get or set properties of each connection medium as well as perform operations on each connection medium (e.g., unlocking the Cellular Device when it has a locked SIM).
  • flimflam.Service: A Shill “Service” refers to an individual network (a Wi-Fi network or a cellular SIM are Shill services). This interface allows Chrome to get or set properties for a given network as well as initiate connections and disconnections.
  • flimflam.Profile: A Shill “Profile” refers to a grouping of services corresponding to a logged-in user. Chrome OS allows configuration of networks as part of the “default” (i.e., shared) Profile which is available to all users or as part of individual (i.e., per-user) Profiles.
  • flimflam.IPConfig: Allows Chrome to configure IP addresses (e.g., DNS and DHCP).

Hermes

Source: platform2/hermes

Hermes is responsible for communicating with Embedded Universal Integrated Circuit Cards (EUICCs) on a Chrome OS device. A EUICC can colloquially be understood as an eSIM slot built into the device. Each EUICC has a unique identifier called an EUICCID (or EID for short).

Hermes processes both “pending” profiles (i.e., those which have been registered to an EID but not yet installed) as well as “installed” profiles, which have been downloaded to a EUICC.

Hermes exposes 3 key interfaces used by Chrome:

  • Hermes.Manager: Allows Chrome to retrieve the list of all EUICCs and to observe changes to this list.
  • Hermes.Euicc: Allows Chrome to request pending or installed profiles for a given EUICC; additionally, exposes functionality for installing and uninstalling profiles.
  • Hermes.Profile: Allows Chrome to enable or disable an individual profile. A profile must be enabled in order to be used for a connection.

TODO: Finish README