shill: implement timeout for DHCP requests

BUG=chromium-os:30689
TEST=new unit tests, manual (see below)

Manual testing:
- Start shill.
- ff_debug +dhcp
- Plug USB-Ethernet into a switch (to get carrier), but without
  an upstream connection for the switch. Plug dongle into USB
  port.
- Wait 30 seconds.
- Check log file, find "Timed out waiting for DHCP lease on eth0",
  and "Service Ethernet state Configuring -> Disconnected".

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