shill: LinkMonitor: Schedule periodic ARP requests

The LinkMonitor performs periodic unicast and broadcast ARP requests
for a connection's gateway IP address.  It creates a weighted
average of response time, and can call a failure callback function
whenever the sum of consecutive unicast and broadcast response
failures exceed a threshold.

BUG=chromium-os:32600
TEST=Unit tests

Change-Id: Id5a66ad9ca80c51f227ef4811eb8c3885a70c1b8
Reviewed-on: https://gerrit.chromium.org/gerrit/28610
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
11 files changed
tree: a6e76b2fa046b71e396cf48a0950ec3ca936184b
  1. dbus_bindings/
  2. doc/
  3. .gitignore
  4. accessor_interface.h
  5. adaptor_interfaces.h
  6. arp_client.cc
  7. arp_client.h
  8. arp_client_unittest.cc
  9. arp_packet.cc
  10. arp_packet.h
  11. arp_packet_unittest.cc
  12. async_connection.cc
  13. async_connection.h
  14. async_connection_unittest.cc
  15. byte_string.cc
  16. byte_string.h
  17. byte_string_unittest.cc
  18. callbacks.h
  19. cellular.cc
  20. cellular.h
  21. cellular_capability.cc
  22. cellular_capability.h
  23. cellular_capability_cdma.cc
  24. cellular_capability_cdma.h
  25. cellular_capability_cdma_unittest.cc
  26. cellular_capability_classic.cc
  27. cellular_capability_classic.h
  28. cellular_capability_classic_unittest.cc
  29. cellular_capability_gsm.cc
  30. cellular_capability_gsm.h
  31. cellular_capability_gsm_unittest.cc
  32. cellular_capability_universal.cc
  33. cellular_capability_universal.h
  34. cellular_capability_universal_unittest.cc
  35. cellular_error.cc
  36. cellular_error.h
  37. cellular_service.cc
  38. cellular_service.h
  39. cellular_service_unittest.cc
  40. cellular_unittest.cc
  41. connection.cc
  42. connection.h
  43. connection_unittest.cc
  44. control_interface.h
  45. crypto_des_cbc.cc
  46. crypto_des_cbc.h
  47. crypto_des_cbc_unittest.cc
  48. crypto_interface.h
  49. crypto_provider.cc
  50. crypto_provider.h
  51. crypto_provider_unittest.cc
  52. crypto_rot47.cc
  53. crypto_rot47.h
  54. crypto_rot47_unittest.cc
  55. dbus_adaptor.cc
  56. dbus_adaptor.h
  57. dbus_adaptor_unittest.cc
  58. dbus_control.cc
  59. dbus_control.h
  60. dbus_manager.cc
  61. dbus_manager.h
  62. dbus_manager_unittest.cc
  63. dbus_objectmanager_proxy.cc
  64. dbus_objectmanager_proxy.h
  65. dbus_objectmanager_proxy_interface.h
  66. dbus_properties.cc
  67. dbus_properties.h
  68. dbus_properties_proxy.cc
  69. dbus_properties_proxy.h
  70. dbus_properties_proxy_interface.h
  71. dbus_properties_unittest.cc
  72. dbus_property_matchers.h
  73. dbus_service_proxy.cc
  74. dbus_service_proxy.h
  75. dbus_service_proxy_interface.h
  76. default_profile.cc
  77. default_profile.h
  78. default_profile_unittest.cc
  79. device.cc
  80. device.h
  81. device_dbus_adaptor.cc
  82. device_dbus_adaptor.h
  83. device_info.cc
  84. device_info.h
  85. device_info_unittest.cc
  86. device_stub.h
  87. device_unittest.cc
  88. dhcp_config.cc
  89. dhcp_config.h
  90. dhcp_config_unittest.cc
  91. dhcp_provider.cc
  92. dhcp_provider.h
  93. dhcp_provider_unittest.cc
  94. dhcp_proxy_interface.h
  95. dhcpcd_proxy.cc
  96. dhcpcd_proxy.h
  97. dns_client.cc
  98. dns_client.h
  99. dns_client_unittest.cc
  100. endpoint.cc
  101. endpoint.h
  102. ephemeral_profile.cc
  103. ephemeral_profile.h
  104. error.cc
  105. error.h
  106. error_unittest.cc
  107. ethernet.cc
  108. ethernet.h
  109. ethernet_service.cc
  110. ethernet_service.h
  111. event_dispatcher.cc
  112. event_dispatcher.h
  113. glib.cc
  114. glib.h
  115. glib_io_input_handler.cc
  116. glib_io_input_handler.h
  117. glib_io_ready_handler.cc
  118. glib_io_ready_handler.h
  119. HACKING
  120. hook_table.cc
  121. hook_table.h
  122. hook_table_unittest.cc
  123. http_proxy.cc
  124. http_proxy.h
  125. http_proxy_unittest.cc
  126. http_request.cc
  127. http_request.h
  128. http_request_unittest.cc
  129. http_url.cc
  130. http_url.h
  131. http_url_unittest.cc
  132. ieee80211.h
  133. io_handler.h
  134. ip_address.cc
  135. ip_address.h
  136. ip_address_unittest.cc
  137. ipconfig.cc
  138. ipconfig.h
  139. ipconfig_dbus_adaptor.cc
  140. ipconfig_dbus_adaptor.h
  141. ipconfig_unittest.cc
  142. key_file_store.cc
  143. key_file_store.h
  144. key_file_store_unittest.cc
  145. key_value_store.cc
  146. key_value_store.h
  147. key_value_store_matcher.h
  148. key_value_store_unittest.cc
  149. l2tp_ipsec_driver.cc
  150. l2tp_ipsec_driver.h
  151. l2tp_ipsec_driver_unittest.cc
  152. LICENSE
  153. link_monitor.cc
  154. link_monitor.h
  155. link_monitor_unittest.cc
  156. Makefile
  157. manager.cc
  158. manager.h
  159. manager_dbus_adaptor.cc
  160. manager_dbus_adaptor.h
  161. manager_unittest.cc
  162. metrics.cc
  163. metrics.h
  164. metrics_unittest.cc
  165. minijail.cc
  166. minijail.h
  167. mm1_modem_modem3gpp_proxy.cc
  168. mm1_modem_modem3gpp_proxy.h
  169. mm1_modem_modem3gpp_proxy_interface.h
  170. mm1_modem_modemcdma_proxy.cc
  171. mm1_modem_modemcdma_proxy.h
  172. mm1_modem_modemcdma_proxy_interface.h
  173. mm1_modem_proxy.cc
  174. mm1_modem_proxy.h
  175. mm1_modem_proxy_interface.h
  176. mm1_modem_simple_proxy.cc
  177. mm1_modem_simple_proxy.h
  178. mm1_modem_simple_proxy_interface.h
  179. mm1_sim_proxy.cc
  180. mm1_sim_proxy.h
  181. mm1_sim_proxy_interface.h
  182. mock_adaptors.cc
  183. mock_adaptors.h
  184. mock_ares.cc
  185. mock_ares.h
  186. mock_arp_client.cc
  187. mock_arp_client.h
  188. mock_async_connection.cc
  189. mock_async_connection.h
  190. mock_cellular.cc
  191. mock_cellular.h
  192. mock_cellular_service.cc
  193. mock_cellular_service.h
  194. mock_connection.cc
  195. mock_connection.h
  196. mock_control.cc
  197. mock_control.h
  198. mock_dbus_manager.cc
  199. mock_dbus_manager.h
  200. mock_dbus_objectmanager_proxy.cc
  201. mock_dbus_objectmanager_proxy.h
  202. mock_dbus_properties_proxy.cc
  203. mock_dbus_properties_proxy.h
  204. mock_dbus_service_proxy.cc
  205. mock_dbus_service_proxy.h
  206. mock_device.cc
  207. mock_device.h
  208. mock_device_info.cc
  209. mock_device_info.h
  210. mock_dhcp_config.cc
  211. mock_dhcp_config.h
  212. mock_dhcp_provider.cc
  213. mock_dhcp_provider.h
  214. mock_dhcp_proxy.cc
  215. mock_dhcp_proxy.h
  216. mock_dns_client.cc
  217. mock_dns_client.h
  218. mock_event_dispatcher.cc
  219. mock_event_dispatcher.h
  220. mock_glib.cc
  221. mock_glib.h
  222. mock_http_request.cc
  223. mock_http_request.h
  224. mock_ipconfig.cc
  225. mock_ipconfig.h
  226. mock_link_monitor.cc
  227. mock_link_monitor.h
  228. mock_log.cc
  229. mock_log.h
  230. mock_log_unittest.cc
  231. mock_manager.cc
  232. mock_manager.h
  233. mock_metrics.cc
  234. mock_metrics.h
  235. mock_minijail.cc
  236. mock_minijail.h
  237. mock_mm1_modem_modem3gpp_proxy.cc
  238. mock_mm1_modem_modem3gpp_proxy.h
  239. mock_mm1_modem_modemcdma_proxy.cc
  240. mock_mm1_modem_modemcdma_proxy.h
  241. mock_mm1_modem_proxy.cc
  242. mock_mm1_modem_proxy.h
  243. mock_mm1_modem_simple_proxy.cc
  244. mock_mm1_modem_simple_proxy.h
  245. mock_mm1_sim_proxy.cc
  246. mock_mm1_sim_proxy.h
  247. mock_modem.cc
  248. mock_modem.h
  249. mock_modem_cdma_proxy.cc
  250. mock_modem_cdma_proxy.h
  251. mock_modem_gsm_card_proxy.cc
  252. mock_modem_gsm_card_proxy.h
  253. mock_modem_gsm_network_proxy.cc
  254. mock_modem_gsm_network_proxy.h
  255. mock_modem_info.cc
  256. mock_modem_info.h
  257. mock_modem_manager_proxy.cc
  258. mock_modem_manager_proxy.h
  259. mock_modem_proxy.cc
  260. mock_modem_proxy.h
  261. mock_modem_simple_proxy.cc
  262. mock_modem_simple_proxy.h
  263. mock_nss.cc
  264. mock_nss.h
  265. mock_openvpn_driver.cc
  266. mock_openvpn_driver.h
  267. mock_openvpn_management_server.cc
  268. mock_openvpn_management_server.h
  269. mock_portal_detector.cc
  270. mock_portal_detector.h
  271. mock_power_manager.cc
  272. mock_power_manager.h
  273. mock_power_manager_proxy.cc
  274. mock_power_manager_proxy.h
  275. mock_process_killer.cc
  276. mock_process_killer.h
  277. mock_profile.cc
  278. mock_profile.h
  279. mock_property_store.cc
  280. mock_property_store.h
  281. mock_proxy_factory.cc
  282. mock_proxy_factory.h
  283. mock_resolver.cc
  284. mock_resolver.h
  285. mock_routing_table.cc
  286. mock_routing_table.h
  287. mock_rtnl_handler.cc
  288. mock_rtnl_handler.h
  289. mock_service.cc
  290. mock_service.h
  291. mock_sockets.cc
  292. mock_sockets.h
  293. mock_store.cc
  294. mock_store.h
  295. mock_supplicant_bss_proxy.cc
  296. mock_supplicant_bss_proxy.h
  297. mock_supplicant_interface_proxy.cc
  298. mock_supplicant_interface_proxy.h
  299. mock_supplicant_process_proxy.cc
  300. mock_supplicant_process_proxy.h
  301. mock_time.cc
  302. mock_time.h
  303. mock_vpn.cc
  304. mock_vpn.h
  305. mock_vpn_driver.cc
  306. mock_vpn_driver.h
  307. mock_vpn_provider.cc
  308. mock_vpn_provider.h
  309. mock_vpn_service.cc
  310. mock_vpn_service.h
  311. mock_wifi.cc
  312. mock_wifi.h
  313. mock_wifi_service.cc
  314. mock_wifi_service.h
  315. mock_wimax.cc
  316. mock_wimax.h
  317. mock_wimax_device_proxy.cc
  318. mock_wimax_device_proxy.h
  319. mock_wimax_manager_proxy.cc
  320. mock_wimax_manager_proxy.h
  321. mock_wimax_network_proxy.cc
  322. mock_wimax_network_proxy.h
  323. mock_wimax_provider.cc
  324. mock_wimax_provider.h
  325. mock_wimax_service.cc
  326. mock_wimax_service.h
  327. modem.cc
  328. modem.h
  329. modem_1.cc
  330. modem_1_unittest.cc
  331. modem_cdma_proxy.cc
  332. modem_cdma_proxy.h
  333. modem_cdma_proxy_interface.h
  334. modem_classic.cc
  335. modem_gsm_card_proxy.cc
  336. modem_gsm_card_proxy.h
  337. modem_gsm_card_proxy_interface.h
  338. modem_gsm_network_proxy.cc
  339. modem_gsm_network_proxy.h
  340. modem_gsm_network_proxy_interface.h
  341. modem_info.cc
  342. modem_info.h
  343. modem_info_unittest.cc
  344. modem_manager.cc
  345. modem_manager.h
  346. modem_manager_proxy.cc
  347. modem_manager_proxy.h
  348. modem_manager_proxy_interface.h
  349. modem_manager_unittest.cc
  350. modem_proxy.cc
  351. modem_proxy.h
  352. modem_proxy_interface.h
  353. modem_simple_proxy.cc
  354. modem_simple_proxy.h
  355. modem_simple_proxy_interface.h
  356. modem_unittest.cc
  357. nice_mock_control.cc
  358. nice_mock_control.h
  359. nss.cc
  360. nss.h
  361. nss_unittest.cc
  362. openvpn_driver.cc
  363. openvpn_driver.h
  364. openvpn_driver_unittest.cc
  365. openvpn_management_server.cc
  366. openvpn_management_server.h
  367. openvpn_management_server_unittest.cc
  368. portal_detector.cc
  369. portal_detector.h
  370. portal_detector_unittest.cc
  371. power_manager.cc
  372. power_manager.h
  373. power_manager_proxy.cc
  374. power_manager_proxy.h
  375. power_manager_proxy_interface.h
  376. power_manager_unittest.cc
  377. process_killer.cc
  378. process_killer.h
  379. process_killer_unittest.cc
  380. profile.cc
  381. profile.h
  382. profile_dbus_adaptor.cc
  383. profile_dbus_adaptor.h
  384. profile_dbus_property_exporter.cc
  385. profile_dbus_property_exporter.h
  386. profile_dbus_property_exporter_unittest.cc
  387. profile_unittest.cc
  388. property_accessor.h
  389. property_accessor_unittest.cc
  390. property_iterator.h
  391. property_store.cc
  392. property_store.h
  393. property_store_inspector.cc
  394. property_store_inspector.h
  395. property_store_unittest.cc
  396. property_store_unittest.h
  397. provider_db_unittest.bfd
  398. proxy_factory.cc
  399. proxy_factory.h
  400. refptr_types.h
  401. resolver.cc
  402. resolver.h
  403. resolver_unittest.cc
  404. routing_table.cc
  405. routing_table.h
  406. routing_table_entry.h
  407. routing_table_unittest.cc
  408. rpc_task.cc
  409. rpc_task.h
  410. rpc_task_dbus_adaptor.cc
  411. rpc_task_dbus_adaptor.h
  412. rpc_task_unittest.cc
  413. rtnl_handler.cc
  414. rtnl_handler.h
  415. rtnl_handler_unittest.cc
  416. rtnl_listener.cc
  417. rtnl_listener.h
  418. rtnl_listener_unittest.cc
  419. rtnl_message.cc
  420. rtnl_message.h
  421. rtnl_message_unittest.cc
  422. scope_logger.cc
  423. scope_logger.h
  424. scope_logger_unittest.cc
  425. service.cc
  426. service.h
  427. service_dbus_adaptor.cc
  428. service_dbus_adaptor.h
  429. service_sorter.h
  430. service_under_test.cc
  431. service_under_test.h
  432. service_unittest.cc
  433. shill.conf
  434. shill_ares.cc
  435. shill_ares.h
  436. shill_config.cc
  437. shill_config.h
  438. shill_daemon.cc
  439. shill_daemon.h
  440. shill_main.cc
  441. shill_test_config.cc
  442. shill_test_config.h
  443. shill_time.cc
  444. shill_time.h
  445. shill_unittest.cc
  446. sockets.cc
  447. sockets.h
  448. static_ip_parameters.cc
  449. static_ip_parameters.h
  450. static_ip_parameters_unittest.cc
  451. store_interface.h
  452. supplicant_bss_proxy.cc
  453. supplicant_bss_proxy.h
  454. supplicant_bss_proxy_interface.h
  455. supplicant_interface_proxy.cc
  456. supplicant_interface_proxy.h
  457. supplicant_interface_proxy_interface.h
  458. supplicant_process_proxy.cc
  459. supplicant_process_proxy.h
  460. supplicant_process_proxy_interface.h
  461. technology.cc
  462. technology.h
  463. technology_unittest.cc
  464. TESTING
  465. testrunner.cc
  466. virtio_ethernet.cc
  467. virtio_ethernet.h
  468. vpn.cc
  469. vpn.h
  470. vpn_driver.cc
  471. vpn_driver.h
  472. vpn_driver_unittest.cc
  473. vpn_provider.cc
  474. vpn_provider.h
  475. vpn_provider_unittest.cc
  476. vpn_service.cc
  477. vpn_service.h
  478. vpn_service_unittest.cc
  479. vpn_unittest.cc
  480. wifi.cc
  481. wifi.h
  482. wifi_endpoint.cc
  483. wifi_endpoint.h
  484. wifi_endpoint_unittest.cc
  485. wifi_service.cc
  486. wifi_service.h
  487. wifi_service_unittest.cc
  488. wifi_unittest.cc
  489. wimax.cc
  490. wimax.h
  491. wimax_device_proxy.cc
  492. wimax_device_proxy.h
  493. wimax_device_proxy_interface.h
  494. wimax_manager_proxy.cc
  495. wimax_manager_proxy.h
  496. wimax_manager_proxy_interface.h
  497. wimax_network_proxy.cc
  498. wimax_network_proxy.h
  499. wimax_network_proxy_interface.h
  500. wimax_provider.cc
  501. wimax_provider.h
  502. wimax_provider_unittest.cc
  503. wimax_service.cc
  504. wimax_service.h
  505. wimax_service_unittest.cc
  506. wimax_unittest.cc
  507. wpa_supplicant.cc
  508. wpa_supplicant.h