shill: openvpn: Reselect service and reuse IP config on restart.

This got broken when we fixed the crash on disconnect or failed
connects.

BUG=chromium-os:35031
TEST=Unit tests. Also, connected to corp VPN, waited on the new tab
page ~10 minutes to trigger idle ping restart, observed service going
through Idle and Associating. Before the patch the connection got
stuck (broken ip routes, broken service state), after the patch
service got connected successfully, its state was updated properly and
VPN worked.

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